- 10 Jul, 2015 2 commits
-
-
jsa committed
-
Fix for TE-745
Christine Lytwynec committed
-
- 09 Jul, 2015 38 commits
-
-
Update edx-oauth2-provider to 0.5.2
Renzo Lucioni committed -
Updated Commerce API to return CourseMode expiration date
Clinton Blackburn committed -
Update AUTHORS
Tyler Nickerson committed -
Tyler Nickerson committed
-
XCOM-281: LMS now passes JWT issuer and expiration date to ecommerce API client
Tyler Nickerson committed -
XCOM-477
Clinton Blackburn committed -
Mark a too-flaky Milestones acceptance test for skipping
Jesse Zoldak committed -
Christine Lytwynec committed
-
Mark test as flaky TNL-2704
Jesse Zoldak committed -
Nickersoft committed
-
update bok choy to version 0.4.3
Christine Lytwynec committed -
Distribute to setuptools
David Baumgold committed -
Fix failed test_course_about_in_cart
Sarina Canelake committed -
David Baumgold committed
-
David Baumgold committed
-
David Baumgold committed
-
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 -
Pan Luo committed
-
Update copy for On Demand Cert Download
zubair-arbi committed -
Grading Performance Work
David Ormsbee committed -
Re-enable the video translation Jasmine tests
Andy Armstrong committed -
ORA2: Focus and outline styles
Chris committed -
Credit Payment - Dashboard States
Ahsan Ulhaq committed -
Usman Khalid committed
-
Chris Rodriguez committed
-
Jesse Zoldak committed
-
Fix the Paver run_all_servers method.
Andy Armstrong committed -
Upgrade Django 1.4 to the latest point release
Sarina Canelake committed -
Christine Lytwynec 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 -
TNL-2689
Andy Armstrong committed -
ECOM-1651
Tasawer committed -
add 'provider_description' field for CreditProvider model
zubair-arbi committed -
ECOM-1578
Ahsan Ulhaq committed -
ECOM-1842
zubair-arbi committed -
add 'fulfillment_instructions' for 'CreditProvider' model
zubair-arbi committed -
update credit eligibility ui text
zubair-arbi committed
-