Letting xblocks handle scope rather than separating fields into
different attrs. Although, split still shunts content fields to a
different collection than setting and children fields.
The big difference is that content fields will always be a dict and not
sometimes just a string and there's no special casing of 'data' attr.
The other mind change is no more 'metadata' dict.
Fixed all common and LMS tests.
The tests were failing because XMLDescriptor adds in some attributes
to _model_data, such as `xml_attributes`, that aren't necessary. The
solution is to handle all XML parsing in VideoDescriptor. There's
still one test failing in CMS, which has to do with metadata being
saved. I'm still working out how to update it in such a way that it
doesn't fail, but still tests something meaningful.
A new modulestore backed by mongo that changes the data format to
facilitate easy versioning, sharing content between courses, and fast
lookup of course structure and Scope.settings data.
Conflicts:
cms/djangoapps/contentstore/tests/test_contentstore.py
Factories were used when possible but tests depending on importing or things not manageable by factories used the toy course. New files were added to include the needed functionality. Most files are blank or have minimal xml needed to work
This fixes the following tests(T stands for toy, F stands for factory made):
T import_textbook_as_content_element (needed to add a textbook to toy)
F static_tab_reordering
T import polls (needed to add a poll to toy)
T xlint_fails
F delete
T about_overrides (needed to add an about override to toy)
F remove_hide_progress_tab
-- Changed docstrings to use double quote.
-- More consistent naming for youtube IDs (normal_speed_id -> youtube_id_1_0).
-- Formatting changes for readability.
-- Updated test XML to expect JSON-encoded strings; prevents tests from spuriously failing.
A few notes:
1. Downloads are done through direct requests. This is due to the difficulty of downloading a file to the correct place
2. Modifiying a file will just change the file to a random 10 character string.
3. The page is reloaded in between uploads. This is due to a current caching bug that is in the process of being looked into and will be updated once it is fixed.