- 09 Feb, 2016 1 commit
-
-
Add app_label definitions in Meta classes for models. Move import of course_mode model into methods to prevent importing the models at startup time.
John Eskew committed
-
- 06 Feb, 2016 1 commit
-
-
Cached values were leaking across tests, causing difficult to debug errors, particularly when using Config Models. As part of this work, certain tests that had query counts that relied on those values being cached needed to be adjusted up.
David Ormsbee committed
-
- 05 Feb, 2016 1 commit
-
-
ECOM-3354
jsa committed
-
- 26 Jan, 2016 1 commit
-
-
Nimisha Asthagiri committed
-
- 22 Jan, 2016 1 commit
-
-
Two new certificate statuses are introduced, 'audit_passing' and 'audit_notpassing'. These signal that the GeneratedCertificate is not to be displayed as a cert to the user, and that they either passed or did not. This allows us to retain existing grading logic, as well as maintaining correctness in analytics and reporting. Ineligible certificates are hidden by using the `eligible_certificates` manager on GeneratedCertificate. Some places in the coe (largely reporting, analytics, and management commands) use the default `objects` manager, since they need access to all certificates. ECOM-3040 ECOM-3515
Peter Fogg committed
-
- 20 Jan, 2016 2 commits
-
-
This reverts commit 60860e3a.
Peter Fogg committed -
Syed Hassan Raza committed
-
- 13 Jan, 2016 1 commit
-
-
An `eligible_for_certificate` field is added to the GeneratedCertificate model. This way we can retain existing grading logic, as well as maintaining correctness in analytics and reporting. Ineligible certificates are hidden by using the `eligible_certificates` manager on GeneratedCertificate. Some places in the coe (largely reporting, analytics, and management commands) use the default `objects` manager, since they need access to all certificates. This commit also updates the DB cache for acceptance tests.
Peter Fogg committed
-
- 21 Dec, 2015 1 commit
-
-
Saleem Latif committed
-
- 17 Dec, 2015 2 commits
-
-
Sarina Canelake committed
-
Saleem Latif committed
-
- 09 Dec, 2015 1 commit
-
-
Ned Batchelder committed
-
- 07 Dec, 2015 1 commit
-
-
Chris Dodge committed
-
- 04 Dec, 2015 1 commit
-
-
Saleem Latif committed
-
- 02 Dec, 2015 1 commit
-
-
An issue arose recently due to ATOMIC_REQUESTS being turned on by default. It turns out that CohortMemberships had been somewhat relying on the old default transaction handling in order to keep CohortMemberships and the underlying CourseUserGroup.users values in-sync. To fix this, I've made all updates to Cohortmemberships go through an outer_atomic(read_committed=True) block. This, is conjunction with the already present select_for_update(), will no longer allow 2 simultaneous requests to modify objects in memory without sharing them. Only one process will be touching a given CohortMembership at any given time, and all changes will be immediately comitted to the database, where the other process will see them. I've also included some changes to get_cohort(), add_user_to_cohort(), and remove_user_from_cohort() in order to properly make use of the new CohortMembership system.
Eric Fischer committed
-
- 25 Nov, 2015 1 commit
-
-
ECOM-2972
Peter Fogg committed
-
- 22 Nov, 2015 1 commit
-
-
Ned Batchelder committed
-
- 19 Nov, 2015 1 commit
-
-
Chris Dodge committed
-
- 13 Nov, 2015 1 commit
-
-
Saleem Latif committed
-
- 10 Nov, 2015 2 commits
-
-
Please note that this is a squshed commit and the work of: Symbolist, macdiesel, nedbat, doctoryes, muzaffaryousaf and muhammad-ammar
Usman Khalid committed -
Saleem Latif committed
-
- 06 Nov, 2015 1 commit
-
-
Chris Dodge committed
-
- 03 Nov, 2015 1 commit
-
-
Saleem Latif committed
-
- 30 Oct, 2015 1 commit
-
-
Updating previously-existing unit tests to function with the new CohortMembership model.
Eric Fischer committed
-
- 29 Oct, 2015 1 commit
-
-
Afzal Wali committed
-
- 21 Oct, 2015 1 commit
-
-
Also remove useless docstrings where they were added to keep pylint quiet.
Ned Batchelder committed
-
- 19 Oct, 2015 1 commit
-
-
Saleem Latif committed
-
- 07 Oct, 2015 1 commit
-
-
Chris Dodge committed
-
- 23 Sep, 2015 1 commit
-
-
Diana Huang committed
-
- 18 Sep, 2015 2 commits
-
-
TNL-3204
Awais Jibran committed -
TNL-3179
muhammad-ammar committed
-
- 17 Aug, 2015 1 commit
-
-
problem from legacy instructor dash to new instructor dash.
Tim Krones committed
-
- 13 Aug, 2015 1 commit
-
-
Chris Dodge committed
-
- 03 Aug, 2015 1 commit
-
-
Ned Batchelder committed
-
- 15 Jul, 2015 1 commit
-
-
Zia Fazal committed
-
- 14 Jul, 2015 1 commit
-
-
Sven Marnach committed
-
- 13 Jul, 2015 1 commit
-
-
Sarina Canelake committed
-
- 09 Jul, 2015 1 commit
-
-
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
-
- 07 Jul, 2015 1 commit
-
-
Matt Drayer committed
-
- 02 Jul, 2015 1 commit
-
-
Ned Batchelder committed
-