Commit Graph

63 Commits

Author SHA1 Message Date
Matthew Piatetsky
1f6cd7aa5a Revert "Revert "REVMI-62 Return gated blocks in the course blocks API response with an authorization denial reason"" 2019-03-28 14:44:05 -04:00
Matthew Piatetsky
8eae694566 Revert "REVMI-62 Return gated blocks in the course blocks API response with an authorization denial reason" 2019-03-27 16:30:37 -04:00
Matthew Piatetsky
e6b55ede3d Merge pull request #20003 from edx/mobile-access-denied
REVMI-62 Return gated blocks in the course blocks API response with an authorization denial reason
2019-03-26 17:33:57 -04:00
Matthew Piatetsky
4bb539c9aa update user partition and access_denied_message_filter transformers 2019-03-26 15:26:59 -04:00
Calen Pennington
d23e888316 Revert "Reapply "Improve the performance of access checking for a specific user in CourseViewList by prefetching data""
This reverts commit 6059e21bff.
2019-03-21 14:26:00 -04:00
Calen Pennington
b89ce526ca Revert "Batch queries to fetch all courses to prevent over-fetching during paging operations"
This reverts commit 544c7f7eff.
2019-03-21 14:26:00 -04:00
Calen Pennington
544c7f7eff Batch queries to fetch all courses to prevent over-fetching during paging operations 2019-03-19 10:30:33 -04:00
Calen Pennington
6059e21bff Reapply "Improve the performance of access checking for a specific user in CourseViewList by prefetching data"
This reverts commit d8cd6135a6.
2019-03-18 15:24:40 -04:00
Calen Pennington
d8cd6135a6 Revert "Improve the performance of access checking for a specific user in CourseViewList by prefetching data"
This reverts commit a2a340bcd0.
2019-03-14 10:31:24 -04:00
Calen Pennington
5d3c9b36df Merge pull request #19964 from cpennington/fbe-query-perf
Sort in python and add an index to improve StackedConfigModel.current…
2019-03-11 12:22:59 -04:00
Calen Pennington
a2a340bcd0 Improve the performance of access checking for a specific user in CourseViewList by prefetching data 2019-03-11 10:37:53 -04:00
Matthew Piatetsky
74bcc29417 Remove FEATURE_BASED_ENROLLMENT_GLOBAL_KILL_FLAG 2019-03-07 15:46:33 -05:00
Matthew Piatetsky
49ae6b9d73 Remove CONTENT_TYPE_GATING flag 2019-03-07 15:46:33 -05:00
David Ormsbee
76620e0bf2 Add cookie size monitoring New Relic metrics.
This adds middleware that will create custom parameter metrics in
New Relic to track the size of all the cookies being received for
our domain. The custom fields are "cookies_total_size" and a
separate named parameter for every cookie size, e.g.
"cookies.csrftoken.size".

This is intended to help us track cookie growth and better diagnose
issues where users lose their sessions. It is toggled by the
'request_utils.capture_cookie_sizes' Waffle Flag.
2019-02-22 18:18:41 -05:00
Michael Youngstrom
3221c2b91f Remove lms pytest shards 2019-02-12 11:03:46 -05:00
Calen Pennington
829227ade3 Merge pull request #19663 from cpennington/fbe-improve-course-api-performance
Fbe improve course api performance
2019-02-06 11:01:25 -05:00
Calen Pennington
43d975a92a Select related CourseOverview.image_set when loading the course_api 2019-02-06 10:11:16 -05:00
Calen Pennington
419657d7a5 Prefetch course modes used in has_access calls in course api 2019-02-06 10:11:15 -05:00
Calen Pennington
6d22866e78 Cache org-site lookups in the RequestCache 2019-02-06 10:11:15 -05:00
Calen Pennington
6c596f7c49 Allow courses api to return data incrementally
Prior to this commit, the course api (/api/courses/v1/courses/)
performed all the work necessary to return all courses available
to the user, and then only actually returned on page's worth of those
courses.

With this change, the api now does the work incrementally, computing
only the data needed to fetch the courses up to and including the page
being returned. This still increases approximately linearly as
the page number accessed being increases, but should be more cache-friendly.
One side effect of this is that the max_page reported by pagination
will be an overestimate (it will include pages that are removed due
to a users access restrictions).

This change also changes the sort-order of courses being returned by the
course_api. By sorting by course-id, rather than course-number, we
can sort in the database, rather than in Python, and defer loading data
from the end of the list until it is requested.

REVMI-90
2019-02-06 10:11:15 -05:00
Calen Pennington
9ff9c33f59 Add a test that shows how bad course api query counts are 2019-02-06 10:11:15 -05:00
Matthew Piatetsky
6e81c84d8b fix unicode strings in lms/ part 1 2019-02-05 15:15:02 -05:00
Calen Pennington
805f32a357 Revert "Allow courses api to return data incrementally" 2019-01-25 12:56:57 -05:00
Calen Pennington
2527efd822 Prefetch CourseOverview.image_set when loading the course_api 2019-01-25 10:30:09 -05:00
Calen Pennington
0d273e9506 Prefetch course modes used in has_access calls in course api 2019-01-25 10:30:09 -05:00
Calen Pennington
a842921e1f Cache org-site lookups in the RequestCache 2019-01-25 10:30:09 -05:00
Calen Pennington
a3541d6e46 Allow courses api to return data incrementally
Prior to this commit, the course api (/api/courses/v1/courses/)
performed all the work necessary to return all courses available
to the user, and then only actually returned on page's worth of those
courses.

With this change, the api now does the work incrementally, computing
only the data needed to fetch the courses up to and including the page
being returned. This still increases approximately linearly as
the page number accessed being increases, but should be more cache-friendly.
One side effect of this is that the max_page reported by pagination
will be an overestimate (it will include pages that are removed due
to a users access restrictions).

This change also changes the sort-order of courses being returned by the
course_api. By sorting by course-id, rather than course-number, we
can sort in the database, rather than in Python, and defer loading data
from the end of the list until it is requested.

REVMI-90
2019-01-25 10:30:09 -05:00
Calen Pennington
ee75db2703 Add a test that shows how bad course api query counts are 2019-01-24 22:54:01 -05:00
Jeremy Bowman
1a5bf35357 TE-2689 Remove useless pylint suppressions part 2 2018-08-14 17:39:02 -04:00
Jeremy Bowman
4e8668d3be TE-2524 Stop using nose.plugins - LMS 2 2018-08-01 13:54:06 -04:00
Waheed Ahmed
780c1d982d Rate limit course list API.
This endpoint is likely being inefficient with how it's querying various parts
of the code and can take courseware down, it needs to be rate limited until
optimized.

LEARNER-5527
2018-06-13 16:59:32 +05:00
Albert (AJ) St. Aubin
e3c84bc8de Revert "Rate limit course list API." 2018-06-12 12:06:51 -04:00
Waheed Ahmed
803a6c742c Rate limit course list API.
This endpoint is likely being inefficient with how it's querying various parts of the code
and can take courseware down, it needs to be rate limited until optimized.

LEARNER-5527
2018-06-12 14:58:12 +05:00
Eric Fischer
247bb50ed2 s/django.core.urlresolvers/django.urls/g
Django 1.10 deprecation fix for Hackathon XIX
Addresses PLAT-1397
2018-06-05 13:59:09 -04:00
Stuart Young
1fd2167144 rebalance python unittests onto new shards 2018-05-03 11:16:05 -04:00
Omar Al-Ithawi
fc7f98362d Add search for courses API 2018-02-17 17:23:05 +02:00
Jose Antonio Gonzalez
f38e5ab939 add DEFAULT_MOBILE_AVAILABLE flag 2017-11-16 16:50:37 +02:00
Simon Chen
29a1df3323 Revert "Exposing course run license via Course API"
This reverts commit a1419b15f7.
2017-10-11 12:37:09 -04:00
Clinton Blackburn
a1419b15f7 Exposing course run license via Course API
The license for course run content is now stored on the CourseOverviews model and exposed via the Course API.

LEARNER-2791
2017-10-08 19:47:32 -04:00
Jose Antonio Gonzalez
aca096138b add invitation_only field to course serializer 2017-06-29 16:08:58 +02:00
Andy Armstrong
79acb5c5be Reorder LMS imports using isort 2017-06-11 21:48:06 -04:00
John Eskew
3b57542ab0 Revert "Merge pull request #15170 from edx/jeskew/PLAT_1316_partitions_inheritance"
This reverts commit f97f052591, reversing
changes made to 800bcd8e20.
2017-05-30 12:42:54 -04:00
John Eskew
66f3aa5ccf Move fields.py, inheritance.py, and partitions to openedx/core. 2017-05-25 13:24:08 -04:00
David Ormsbee
2051c90924 Test Speedup: Isolate Modulestore Signals
There are a number of Django Signals that are on the modulestore's
SignalHandler class, such as SignalHandler.course_published. These
signals can trigger very expensive processes to occur, such as course
overview or block structures generation. Most of the time, the test
author doesn't care about these side-effects.

This commit does a few things:

* Converts the signals on SignalHandler to be instances of a new
  SwitchedSignal class, that allows signal sending to be disabled.

* Creates a SignalIsolationMixin helper similar in spirit to the
  CacheIsolationMixin, and adds it to the ModuleStoreIsolationMixin
  (and thus to ModuleStoreTestCase and SharedModuleStoreTestCase).

* Converts our various tests to use this new mechanism. In some cases,
  this means adjusting query counts downwards because they no longer
  have to account for publishing listener actions.

Modulestore generated signals are now muted by default during test runs.
Calls to send() them will result in no-ops. You can choose to enable
specific signals for a given subclass of ModuleStoreTestCase or
SharedModuleStoreTestCase by specifying an ENABLED_SIGNALS class
attribute, like the following example:

    from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase

    class MyPublishTestCase(ModuleStoreTestCase):
        ENABLED_SIGNALS = ['course_published', 'pre_publish']

You should take great care when disabling signals outside of a
ModuleStoreTestCase or SharedModuleStoreTestCase, since they can leak
out into other tests. Be sure to always clean up, and never disable
signals outside of testing. Because signals are essentially process
globals, it can have a lot of unpleasant side-effects if we start
mucking around with them during live requests.

Overall, this change has cut the total test execution time for
edx-platform by a bit over a third, though we still spend a lot in
pre-test setup during our test builds.

[PERF-413]
2017-02-23 10:31:16 -05:00
Matthew Piatetsky
af976a0ef5 Add JWT auth and hidden flag to course_api 2016-11-03 17:35:45 -04:00
Matthew Piatetsky
dc5f251938 Revert "Merge pull request #13846 from edx/ECOM-5050"
This reverts commit c6b6d0bc74, reversing
changes made to fa2b1ae470.
2016-10-31 10:04:20 -04:00
Matthew Piatetsky
ef0699c4d8 Add hidden flag and return courses hidden in LMS when include_hidden is passed 2016-10-27 13:43:35 -04:00
Matthew Piatetsky
3d72229168 Expose mobile-friendly field for course runs returned by Course API 2016-10-20 14:35:31 -04:00
Calen Pennington
bc20a37c2b Simplify how shards are selected in CI 2016-08-03 16:23:02 -04:00
Calen Pennington
853bfe7a36 Add a TestCase mixin for enabling caches in tests
By default, disable all caching in tests, to preserve test independence.
In order to enable caching, inherit from CacheSetupMixin, and specify
which cache configuration is needed.

[EV-32]
2016-05-04 14:51:30 -04:00