- 30 Jul, 2015 1 commit
-
-
This reverts commit 1a3f0958.
David Baumgold committed
-
- 29 Jul, 2015 2 commits
-
-
Jolyon Bloomfield committed
-
mushtaqali committed
-
- 28 Jul, 2015 2 commits
-
-
Chris Dodge committed
-
No need to go through Mako
David Baumgold committed
-
- 27 Jul, 2015 2 commits
-
-
This is a new TestCase base class, intended for situations where you only want to initialize course content in the setUpClass(), as opposed to setUp(). This is done for performance reasons, since many test cases only use courses in a read-only fashion, particularly in LMS tests. This commit also converts the following modules to use this new base class: lms/djangoapps/ccx/tests/test_ccx_modulestore.py (38s -> 4s) lms/djangoapps/discussion_api/tests/test_api.py (2m45s -> 51s) lms/djangoapps/teams/tests/test_views.py (1m17s -> 33s)
David Ormsbee committed -
TNL-2413
muzaffaryousaf committed
-
- 24 Jul, 2015 6 commits
-
-
Use bulk operations to both minimize the number of writes to MongoDB, as well as to suppress signals which could trigger things like search indexing or course structure caching.
David Ormsbee committed -
It was never implemented. TNL-231
cahrens committed -
Peter Fogg committed
-
TNL-645
cahrens committed -
Peter Fogg committed
-
TNL-2413
muzaffaryousaf committed
-
- 23 Jul, 2015 2 commits
-
-
Set the second arg to __init__ for the HeartbeatFailure exception to 'mongo', create a split_mongo connection test Fixes TNL-2267 Clean up and PEP8 fixes to the test Add missing paramater back Add pylint pragma to ignore unused argument warning
Joel Barciauskas committed -
Chris Dodge committed
-
- 22 Jul, 2015 1 commit
-
-
Jolyon Bloomfield committed
-
- 21 Jul, 2015 4 commits
-
-
@stroilova @shnayder please verify that I have updated these files correctly. @catong complete the thread started in email.
Alison Hodges committed -
Jonathan Piacenti committed
-
Jonathan Piacenti committed
-
utkjad committed
-
- 20 Jul, 2015 3 commits
-
-
David Ormsbee committed
-
Instead of calling the modulestore's get_course(), return the descriptor via self.runtime.get_block(). Doing this means that bulk ops caching works within CCX courses. Note: The long term fix for this is to have some course-level scope so that we're not peeking at the top of the tree just for some basic discussion-specific configuration information (in this case the blackout dates). TNL-2697
David Ormsbee committed -
Sets the Enrollment API free of the modulestore by replacing modulestore queries with calls to the CourseOverview model. Course deletion invalidates the corresponding CourseOverview. XCOM-462.
Renzo Lucioni committed
-
- 17 Jul, 2015 3 commits
-
-
Jolyon Bloomfield committed
-
Jolyon Bloomfield committed
-
Adam committed
-
- 16 Jul, 2015 1 commit
-
-
Waheed Ahmed committed
-
- 15 Jul, 2015 1 commit
-
-
David Baumgold committed
-
- 14 Jul, 2015 3 commits
-
-
David Baumgold committed
-
This is a fix for https://openedx.atlassian.net/browse/PLAT-619 added custom CommandError messages for invalid syntax and invalid course keys.
vkaracic committed -
Sven Marnach committed
-
- 13 Jul, 2015 5 commits
-
-
Sarina Canelake committed
-
Skipped 'print' statement violations, as print() is Py3k syntax.
Sarina Canelake committed -
Sarina Canelake committed
-
when removing field from _field_data_cache when rebinding a module to a new user, also remove it from _dirty_fields (TNL-2640)
Adam Palay committed -
TNL-2619
muhammad-ammar committed
-
- 09 Jul, 2015 3 commits
-
-
So that we can use setuptools instead of distribute
David Baumgold committed -
'distribute' is the ancestor of 'setuptools', and many packages require setuptools to be installed. Upgrade of MySQL-python from 1.2.4 to 1.2.5 is required because of an incompatibility with setuptools>0.7.
Régis Behmo committed -
The progress page did a number of things that make performance terrible for courses with large numbers of problems, particularly if those problems are customresponse CapaModule problems that need to be executed via codejail. The grading code takes pains to not instantiate student state and execute the problem code. If a student has answered the question, the max score is stored in StudentModule. However, if the student hasn't attempted the question yet, we have to run the problem code just to call .max_score() on it. This is necessary in grade() if the student has answered other problems in the assignment (so we can know what to divide by). This is always necessary to know in progress_summary() because we list out every problem there. Code execution can be especially slow if the problems need to invoke codejail. To address this, we create a MaxScoresCache that will cache the max raw score possible for every problem. We select the cache keys so that it will automatically become invalidated when a new version of the course is published. The fundamental assumption here is that a problem cannot have two different max score values for two unscored students. A problem *can* score two students differently such that they have different max scores. So Carlos can have 2/3 on a problem, while Lyla gets 3/4. But if neither Carlos nor Lyla has ever interacted with the problem (i.e. they're just seeing it on their progress page), they must both see 0/4 -- it cannot be the case that Carlos sees 0/3 and Lyla sees 0/4. We used to load all student state into two separate FieldDataCache instances, after which we do a bunch of individual queries for scored items. Part of this split-up was done because of locking problems, but I think we might have gotten overzealous with our manual transaction hammer. In this commit, we consolidate all state access in grade() and progress() to use one shared FieldDataCache. We also use a filter so that we only pull back StudentModule state for things that might possibly affect the grade -- items that either have scores or have children. Because some older XModules do work in their __init__() methods (like Video), instantiating them takes time, particularly on large courses. This commit also changes the code that fetches the grading_context to filter out children that can't possibly affect the grade. Finally, we introduce a ScoresClient that also tries to fetch score information all at once, instead of in separate queries. Technically, we are fetching this information redundantly, but that's because the state and score interfaces are being teased apart as we move forward. Still, this only amounts to one extra SQL query, and has very little impact on performance overall. Much thanks to @adampalay -- his hackathon work in #7168 formed the basis of this. https://openedx.atlassian.net/browse/CSM-17
David Ormsbee committed
-
- 08 Jul, 2015 1 commit
-
-
"play_video" event emitted after seeking forward in a video contains old position
Awais Jibran committed
-