When the list is empty in discussion blackout
on studio side it causes the exception on lms
side when we try to access the discussion. We
were expecting the values and try to parse it
in two values start and end date whereas parsing
empty values to two values causing the exception.
Now values will be parse when value exists. Empty
value will be ignored.
TNL-1390
The overall behavior of the __init__ method has remained the same.
What's changed is how it determines whether a field is explicitly set.
Instead of using the slower performing editable_metadata_fields, it
calls _field_data.has directly to check for explicitly set fields.
Iframe unit in the studio have accesibility issue as there was no title for
Iframe provided as well as placeholder does not specify what changes to made
to add new iframe
TNL-1073
Fixes https://openedx.atlassian.net/browse/TNL-408.
On Safari, the Youtube HTML5 player accepts playback rate changes before the
video is loaded, but doesn't actually play the video at the rate set. This
patch works around this bug by first setting the playback rate back to 1 and
then to the actually desired speed.
attributes that are serialized/de-serialized to/from MongoDB.
Change access of attributes from dict keys.
Add EditInfo object to encapsulate editing info for block data.
There were no label added for problem with adaptive hint so for the question
added the label and insteat of using for attribute used the label as the
parent of input field
TNL-1074
The existing pattern of using `override_settings(MODULESTORE=...)` prevented
us from having more than one layer of subclassing in modulestore tests.
In a structure like:
@override_settings(MODULESTORE=store_a)
class BaseTestCase(ModuleStoreTestCase):
def setUp(self):
# use store
@override_settings(MODULESTORE=store_b)
class ChildTestCase(BaseTestCase):
def setUp(self):
# use store
In this case, the store actions performed in `BaseTestCase` on behalf of
`ChildTestCase` would still use `store_a`, even though the `ChildTestCase`
had specified to use `store_b`. This is because the `override_settings`
decorator would be the innermost wrapper around the `BaseTestCase.setUp` method,
no matter what `ChildTestCase` does.
To remedy this, we move the call to `override_settings` into the
`ModuleStoreTestCase.setUp` method, and use a cleanup to remove the override.
Subclasses can just defined the `MODULESTORE` class attribute to specify which
modulestore to use _for the entire `setUp` chain_.
[PLAT-419]