Commit Graph

240 Commits

Author SHA1 Message Date
Troy Sankey
dded86d2ae Change subquery to JOIN in list_course_keys API 2020-09-25 12:54:37 -04:00
Troy Sankey
83a0327b92 Also exclude libraries from the list_course_keys API 2020-09-25 11:53:35 -04:00
Troy Sankey
e3cd6d55c4 Bypass calls to has_access() when listing courses
When listing courses for which a user has "staff" level access, bypass
calls to has_access() and use a hopefully more performant and simpler
access pattern that uses only a single ORM query and far less processing
per course.

Caution: this short-circuit implementation does not handle org-level
access grants.
2020-09-25 10:44:03 -04:00
Troy Sankey
7d3631a79b Add even more telemetry to the CourseIdListView
This time, we narrow our search down to paginate_queryset().
2020-09-23 14:12:53 -04:00
Troy Sankey
23b76a60b6 Add more monitoring to the CourseIdList view 2020-09-22 20:15:34 -04:00
Troy Sankey
98b19dd125 Add some tracing to the CourseListView endpoint 2020-09-18 18:28:00 -04:00
Régis Behmo
a4ba4ae45e Clarify many feature toggle annotations across all applications 2020-09-16 15:20:43 +02:00
Régis Behmo
7d93715880 Rename toggle_expiration_date to toggle_target_removal_date
This is part of the changes brought by code-annotations==0.7.0
2020-09-16 15:19:16 +02:00
Régis Behmo
98a13d6a7e Remove deprecated toggle_status annotation
This annotation is deprecated since code-annotations==0.7.0
2020-09-16 15:19:15 +02:00
Régis Behmo
ab0e21455a Get rid of the toggle_category annotation, now deprecated
Since code-annotations==0.7.0, this annotation is not used anymore.
2020-09-16 15:16:13 +02:00
Régis Behmo
7dc460d50a Wrap toggle annotation lines with multiline comments
This takes advantage of the new multiline annotation format with
single-line comment prefix, from code-annotations.
2020-09-16 15:16:12 +02:00
Régis Behmo
c8911b6282 Document lms/djangoapps/course_api feature toggles 2020-09-16 15:15:45 +02:00
Régis Behmo
307457a255 Simplify hack to obtain waffle module names
Instead of going up the stacktrace to find the module names of waffle
flags and switches, we manually pass the module __name__ whenever the
flag is created. This is similar to `logging.getLogger(__name__)`
standard behaviour.

As the waffle classes are used outside of edx-platform, we make the new
module_name argument an optional keyword argument. This will change once
we pull waffle_utils outside of edx-platform.

Note that the module name is normally only required to view the list of
existing waffle flags and switches. The module name should not be
necessary to verify if a flag is enabled. Thus, maybe it would make
sense to create a `add` class methor similar to:

    class WaffleFlag:
        @classmethod
        def add(cls, namespace, flag, module):
            instance = cls(namespace, flag)
            cls._class_instances.add((instance, module))
2020-09-14 09:30:24 +02:00
Michael Terry
6d0ecaab47 Only mark blocks 'complete' if their completion is 1.0
This is how the rest of our code seems to treat it, let's be
consistent.

This is an attempt to fix AA-292.
2020-08-14 11:39:18 -04:00
Nizar Mahmoud
c0b6260c3e Adds Custom Extra Fields to Course Blocks API through LMS Settings 2020-08-06 21:27:31 +03:00
David Ormsbee
96ea413a07 Make Blocks API and Dates mobile views non-atomic.
These are expensive, read-only web requests. Unfortunately,
middleware adds writes, and we currently run with view-level
transactions enabled by default. Holding those long transactions
open has caused extra load on the database and been our largest
sources of django.db.utils:OperationError exceptions.

This has been particularly noticeable as we start deploying the
new Courseware MFE, which uses the BlocksInCourseView more
frequently.
2020-07-22 17:10:11 -04:00
Robert Raposa
77e490f057 ARCHBOM-1305: remove deprecated flag_undefined_default (#24426)
This is the final step in removing the deprecated
flag_undefined_default as explained by the following ADR:
https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/waffle_utils/docs/decisions/0001-refactor-waffle-flag-default.rst

Notes:

* All uses of flag_undefined_default=False were always
  supposed to have been no-ops.
* All uses of flag_undefined_default=True that are removed
  in this PR have been replaced by migrations in past PRs.
* The temporary metric temp_flag_default_used id no longer
  reporting any data.

ARCHBOM-1305
2020-07-09 09:31:31 -04:00
Dillon Dumesnil
35549f56ba AA-220: Making Library Content an Aggregator CompletionMode
This change will prevent Library Content from being marked as
complete on view and the corresponding version bump to
edx-completion contains code that will start looking at the
children of the library content for completeness.
2020-07-01 17:33:54 -04:00
Michael Terry
3030efec78 AA-177: Add masquerading for course home MFE
- Looks at masquerading config for dates, outline, metadata, and
  celebration APIs in course_home_api / courseware_api.
- Consolidates and cleans up places we check whether masquerading
  gives us full access to a course.
2020-06-29 12:37:47 -04:00
Robert Raposa
6a5d95a517 fix quality 2020-06-23 13:26:31 -04:00
Robert Raposa
624012e11c remove ENABLE_VIDEO_URL_REWRITE
The temporary waffle flag ENABLE_VIDEO_URL_REWRITE is no
longer needed, becaues the rollout is complete.
See https://openedx.atlassian.net/browse/PROD-62

ARCHBOM-1304
2020-06-23 11:19:32 -04:00
Dillon Dumesnil
39d45eee42 Moving SUPPORTED_FIELDS for transformers into serializers
It is only referenced inside of the serializers so we can just
define it there
2020-05-14 13:12:43 -07:00
Dillon Dumesnil
4d4b93c6ed AA-159: Improving performance of get_course_assignments
We saw an increase in response time with recent changes to the logic
behind get_course_assignments. This effort works to better access
the information we need in order to improve performance.
Namely, this is done by using the course_blocks_api
2020-05-14 13:12:25 -07:00
Dillon Dumesnil
858154a7d6 AA-99: Adding in new date pills for the dates tab 2020-05-04 07:24:01 -07:00
Aarif
98af9ce418 remove useless-supression warnings 2020-05-01 19:42:15 +05:00
Dillon Dumesnil
9b5ab66ace Revert "Update the LMS courses API for staff permissions" 2020-04-03 07:18:38 -07:00
Dillon Dumesnil
78a1b835fa Update the LMS courses API for staff permissions
We want to allow staff to see all courses in the LMS.
This changes the behavior from staff being treated like
an AnonymousUser (unless an username query parameter is
provided) to being treated like staff.

I also added in some tests for the other paths in this
function that did not seem to be tested.
2020-04-01 13:45:37 -07:00
adeelehsan
98cc0b24db Fixed pagination.
Before getting data validate the page number
on the current number of pages
2020-03-11 10:04:04 +05:00
Michael Terry
e724a4bcb7 Add ExperimentWaffleFlag
This is a helpful class when running an experiment, to help
bucket users and keep track of which enrollments to consider
as part of the experiment.

AA-53
2020-03-03 14:39:02 -05:00
Robert Raposa
e2cc7fa348 fix failing tests 2020-02-27 09:00:01 -05:00
Calen Pennington
98328ea426 On publish, add evenly spaced dates to self-paced courses 2020-02-21 10:50:22 -05:00
Robert Raposa
9fa5443379 add course_ids api
Adds a course_ids api that can filter by user role, since the courses
api could not perform well enough for this, and returned much more
data than we need.

Additionally, adds a LazyPageNumberPagination to provide more accurate
counts in the pagination response when using LazySequence with the
queryset.

BOM-897
2020-01-31 18:02:16 -05:00
Feanil Patel
79d097d3c8 Remove the role parameter from the courses api.
BOM-1228

The api is already not very performant and trying to limit it to only
show courses where you are staff causes the code to iterate over almost
all the courses and times out before it returns any results to the user.

The plan is to build a different api for the thing we need that will
just provide the course IDs for courses where you are staff and sholud
be much faster.
2020-01-29 16:38:19 -05:00
Dave St.Germain
1aa8c9c53d Add a new courseware API Django app to support the courseware micro-frontend. 2020-01-28 14:59:07 -05:00
Robert Raposa
26d4cc6596 add newrelic metrics and trace details
Add newrelic metrics and trace details to determine performance issue
in CourseListView.

BOM-897
2020-01-28 12:44:11 -05:00
aarif
79bf089406 updated the django-waffle to support django 2.2
made changes to test with previous version of django-waffle

updated the query count to test

testing with version 0.13

testing with version 0.14

testing with version 0.15

added version 0.14

updated the django-waffle version to use 0.18

updated the django-waffle version to use 0.16

updated the query counts to pass tests

ran make upgrade

updated the django-waffle to support django 2.2

made changes to test with previous version of django-waffle

updated the query count to test

testing with version 0.13

testing with version 0.14

testing with version 0.15

added version 0.14

updated the django-waffle version to use 0.18

updated the django-waffle version to use 0.16

updated the query counts to pass tests

removed the pdb statements

ran make upgrade
2020-01-08 14:11:42 +05:00
Alex Dusenbery
6ab42849b7 CR-1640 | Makes course_api.api.get_due_dates() a little more defensive. 2020-01-07 21:34:09 -05:00
Feanil Patel
046feb0cf0 Merge pull request #22649 from edx/feanil/fix_pep8
Fix all E303 pep8 errors.
2019-12-30 13:32:26 -05:00
Feanil Patel
6e3fe00fff Fix all E303 pep8 errors. 2019-12-30 12:25:38 -05:00
Feanil Patel
2df8b8226b Merge pull request #22643 from edx/feanil/2to3_asserts
Run `2to3 -f asserts . -w` on edx-platform.
2019-12-30 12:13:42 -05:00
Feanil Patel
9cf2f9f298 Run 2to3 -f future . -w
This will remove imports from __future__ that are no longer needed.

https://docs.python.org/3.5/library/2to3.html#2to3fixer-future
2019-12-30 10:35:30 -05:00
Feanil Patel
70294b0ad2 Run 2to3 -f asserts . -w on edx-platform.
https://docs.python.org/3.5/library/2to3.html#2to3fixer-asserts
2019-12-30 10:22:19 -05:00
Diana Huang
4a828d749a Remove items from a different dictionary than the one we're
iterating over.
2019-12-10 13:21:03 -05:00
Matthew Piatetsky
bd76a71019 delete old holdback code 2019-11-07 09:51:39 -05:00
DawoudSheraz
4970e3d7e3 enable video url re-write flag for all the courses 2019-11-06 12:21:08 +05:00
DawoudSheraz
169349d57e add encoded video key check in video transformer 2019-11-04 12:23:58 +05:00
Syed Muhammad Dawoud Sheraz Ali
83f567c485 Revert "enable video url rewrite flag" 2019-10-30 21:09:34 +05:00
DawoudSheraz
8c75a3757d enable video url rewrite flag 2019-10-30 12:19:37 +05:00
Braden MacDonald
5fc73468b3 Change completion API to work with any learning context 2019-10-22 14:04:31 -04:00
Calen Pennington
7ceb0e30fa Mark course outline with graded and scored status in the DOM so that we can run optimizely code on them 2019-10-17 12:14:49 -04:00