Commit Graph

161 Commits

Author SHA1 Message Date
Chris Dodge
6cf5516a84 Integration of edx_proctoring into the LMS 2015-08-13 19:08:50 -04:00
Ned Batchelder
f54fe787c6 Remove needless 'disable=no-member' pragmas 2015-08-03 17:47:44 -04:00
Zia Fazal
b5c32ec4f1 ziafazal/SOL-980: Fix error while generating certificates 2015-07-15 12:21:50 -04:00
Sven Marnach
3d7246ecc8 Allow masquerading as a specific user different from the logged in user. 2015-07-13 18:55:45 -07:00
Sarina Canelake
ba8fd1c21d Eliminate instances of unused-import Pylint violation 2015-07-13 17:33:25 -04:00
David Ormsbee
79de77cf95 Optimize grading/progress page to reduce database queries (cache max scores).
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
2015-07-09 10:03:58 -04:00
Matt Drayer
fd7a99db0b mattdrayer/num-queries-fix: Update query value to reflect new reality 2015-07-07 16:41:15 -04:00
Ned Batchelder
cb0624bfa1 Correct parent references in one test. 2015-07-02 19:31:48 -04:00
Matt Drayer
289ec980a5 mattdrayer/update-num-queries-check: Modify value to reflect improved workflow(s) 2015-07-02 18:03:57 -04:00
Zia Fazal
611d16b25a ziafazal/SOL-980: Generate certificates from instructor dashboard
* added generate certificates task and bok choy tests
* added unit tests
* changes based feedback and improved acceptance test
* Change header text
* changes based on feedback on 24/6
* added task_id to api output
* fixed broken test
* Remove "Instructor" from strings, per Docs team
* Fixed flaky entrance exam test
2015-07-02 14:32:36 -04:00
Chris Dodge
61aa3505a3 fix price per seat 2015-06-19 10:27:53 -04:00
Carlos de la Guardia
d56303dd0f Only enable the OverrideFieldData when there are active overrides on a course. 2015-06-17 15:26:10 -04:00
Afzal Wali
0569a770ea Executive Summary Report 2015-06-16 14:48:16 -04:00
Tim Krones
f711a32e3d TNL-1652: Allow instructors to obtain CSV file listing students who may
enroll in a course but have not signed up yet.
2015-06-04 20:50:04 +02:00
Muhammad Shoaib
65c4f1df89 SOL-236 Manual Enrollments 2015-06-02 13:19:32 -04:00
cahrens
4d4e260964 Fix bug when student scoring error occurs with no message.
TNL-2251
2015-05-28 16:49:02 -04:00
Muhammad Shoaib
b555c869bf SOL-794 Detailed Enrollment Report
- added the abstract and concrete layers of enrollment report provider
- created a celery task.
-added the button in the e-commerce reports section

added the enrollment data backend

added the payment data and start writing the test cases.

updated the code with the feedback suggestions and wrote some test cases.
- all the downloadable reports are now visible in the ecommerce download section.
Pending instructor tasks is also visible in the ecommerce section

added the fields in the user profile information
changed the report store configuration key
added the new http endpoint for financial reports to add more permissions for finance_admin to access.

fix quality issues

added test cases to check csv content data

rebased with master and resolved conflicts

changed the log messages

added the changes as per code clintonb suggestions during code review

updated the test cases for the finance_admin decorator

changes suggested by clinton.

Created and moved Table level filters to the Custom Manager for the CourseEnrollment model.

ecommerce.js file was loaded twice in the instructor_dashboard.js fixed the issues

added the registration code column in the csv

added the full gender in the csv file

Update data sources and add display name translations for the report columns

fix meta name

Make sure the reports section does not appear on non whitelabel courses

pylint fixes

expand out enumerated values
2015-05-22 15:16:57 -04:00
Diana Huang
ac8b75ca7f Merge pull request #7804 from edx/diana/progress-summary-refactor
Implement the Weighted Problem Grade Report
2015-05-13 09:10:02 -04:00
Daniel Friedman
3acd7a008c Refactor and add tests for new grade report.
* Handle grading errors
2015-05-13 06:58:02 -04:00
Daniel Friedman
84f3c33df7 Address doc review 2015-05-12 16:32:01 -04:00
Daniel Friedman
67fdca1847 Monitor performance through datadog 2015-05-12 16:32:01 -04:00
Andy Armstrong
2fafaec053 Implement grade report analytics
TNL-1988
2015-05-12 16:32:01 -04:00
Daniel Friedman
9269ec3b00 Add new instructor task for weighted problems 2015-05-12 16:32:00 -04:00
Adam Palay
801ee67e63 add more logging to grading 2015-05-11 11:55:55 -04:00
muhammad-ammar
3bb7a2508d Add certificate columns to existing grade report
TNL-1886
2015-05-05 17:43:08 +05:00
Adam Palay
afb2dae631 Revert "Revert "use different queue for smaller emails (TNL-1591)""
This reverts commit 228cca4e38ec79f5cbb54098c788ab9556f602e2.
2015-04-15 12:03:23 -04:00
Adam Palay
9fa8187ffc Revert "use different queue for smaller emails (TNL-1591)"
This reverts commit c2e5bd3d98.
2015-04-08 12:33:09 -04:00
Adam
a8bd6dc32d Merge pull request #7570 from edx/adam/bulk-email-changes
use different queue for smaller emails (TNL-1591)
2015-04-06 10:01:51 -04:00
Adam Palay
c2e5bd3d98 use different queue for smaller emails (TNL-1591) 2015-04-06 08:13:55 -04:00
louyihua
0d0d1a0ccd Ignore pylint error 7610 (translation-of-non-string) on where it is intended to do
As some i18n features need ```ugettext``` or its shorcut ```_``` to be called on a non-string-literal, so the pylint check of ```translation-of-non-string``` should be explicitly disabled in such situations.
2015-04-03 11:59:53 +08:00
Usman Khalid
d59be9949e Use cohort settings from CourseCohortSettings.
TNL-1258
2015-03-23 09:43:00 +05:00
Adam Palay
b5c4b6388c Merge remote-tracking branch 'origin/release' into adam/merge-release-to-master
Conflicts:
	common/djangoapps/cors_csrf/helpers.py
	common/djangoapps/enrollment/views.py
	lms/djangoapps/commerce/constants.py
	lms/djangoapps/commerce/tests.py
	lms/djangoapps/commerce/views.py
2015-03-19 16:30:46 -04:00
zubair-arbi
ae2480e038 update instructor grade task state and increase logging 2015-03-19 07:52:22 -04:00
Ned Batchelder
7d799e34f3 Remove unused imports 2015-03-17 07:10:31 -04:00
Andy Armstrong
37dd0ec840 Merge pull request #7327 from edx/andya/preferences-api
Implement full preferences API
2015-03-17 00:57:01 -04:00
Andy Armstrong
6976a33a85 Add the preferences endpoint to the User API
TNL-1493

See https://openedx.atlassian.net/wiki/display/TNL/User+API for details
2015-03-16 23:34:35 -04:00
stv
f03b943b95 Fix Pylint: W0612(unused-variable) 2015-03-13 20:20:05 -07:00
Zia Fazal
e21ff20375 backend changes based on feedback
Conflicts:
	lms/djangoapps/courseware/courses.py
	lms/djangoapps/instructor_task/api.py

refined entrance exam student attempts reset

Quality improvements 1/16

added rescore, delete state and task history functionality

added unit tests for entrance exam reset attempts

added unit tests for re scoring of entrance exam and task history

improved test coverage

Got rid of pep violation

feedback changes and added jasmine test

added more jasmine tests for Javascript changes

added bok-choy tests for UI changes

replaced input containing <p> tags with <label>

Removed ee element assertions to avoid js error

Added call to super.setUp()

changes based on feedback on 2/18

Writing tests in JS instead of coffee script

commit related to skip entrance exam 2/13

fixed bad-continuation quality error

fixed broken bok-choy test

changes based on feedback on 2/18

added js tests and removed coffee script tests

fixed broken bok-choy and unit tests

changes left while rebasing

rephrase test titles

do not need these libs

changes based on feedback on 2/24

changes text which was left

Changes based on feedback on 3/3
2015-03-04 15:32:56 +05:00
Adam Palay
338ab4a6a9 fix quality violation 2015-02-24 08:20:04 -05:00
Adam Palay
3aca0d5472 Merge remote-tracking branch 'origin/release' into adam/merge-release-into-master
Conflicts:
	common/djangoapps/student/models.py
	lms/djangoapps/bulk_email/tasks.py
2015-02-23 18:40:45 -05:00
Zia Fazal
b3f85e1d4a Instructor Dashboard management tools for Entrance Exams
Conflicts:
	lms/djangoapps/courseware/courses.py
	lms/djangoapps/instructor_task/api.py

refined entrance exam student attempts reset
added rescore, delete state and task history functionality
2015-02-23 15:04:05 -05:00
Syed Hassan Raza
cfb2df113d python standard logging 2015-02-23 11:40:41 -05:00
Adam Palay
c12b542136 split up bulk email query for students and unenrolled course staff (TNL-1332) (TNL-1143) 2015-02-23 10:58:37 -05:00
stv
49fb96631e Fix Pylint: C0202(bad-classmethod-argument) 2015-02-19 19:56:51 -08:00
Syed Hassan Raza
8b599ee424 python standard logging 2015-02-18 19:47:07 +05:00
Daniel Friedman
edd833ebc4 Fix grades download in courses with cohorted content
TNL-1351
2015-02-10 09:33:27 -05:00
muhammad-ammar
b93dcea315 Change column name in grade report
TNL-1244
2015-02-06 09:16:32 +05:00
Calen Pennington
b353ed2ea2 Better support specifying of modulestore configuration in test cases
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]
2015-02-04 09:09:14 -05:00
Calen Pennington
03a05fd9d4 Always call super(..).setUp() from setUp 2015-02-04 09:09:14 -05:00
Adam Palay
4381ccd463 Merge remote-tracking branch 'origin/release' into merge-release-into-master 2015-01-15 14:51:34 -05:00