Commit Graph

4767 Commits

Author SHA1 Message Date
Raymond Zhou
f3413fd767 fix: video page api error 2024-05-31 15:15:11 -04:00
Kristin Aoki
1ef4c0d7a2 fix: add missing end field (#34880)
* fix: add missing end field

* fix: lint and test errors
2024-05-31 09:42:53 -04:00
Kristin Aoki
38320f8433 feat: grading rest api for authoring api (#34854)
* feat: grading rest api for authoring api

* fix: doc string api path
2024-05-29 14:54:00 -04:00
Alison Langston
791e317085 feat: update timeout for course reindexing (#34866) 2024-05-28 15:31:05 -04:00
Feanil Patel
4085066fea Merge pull request #34417 from qasimgulzar/qasim/DEPR/git-issue-34342
[DEPR]: Remove Neo4J Support #34342
2024-05-28 10:25:33 -04:00
Kyle McCormick
11626148d9 refactor: switch from mock to unittest.mock (#34844)
As of Python 3.3, the 3rd-party `mock` package has been subsumed into the
standard `unittest.mock` package. Refactoring tests to use the latter will
allow us to drop `mock` as a dependency, which is currently coming in
transitively through requirements/edx/paver.in.

We don't actually drop the `mock` dependency in this PR. That will happen
naturally in:

* https://github.com/openedx/edx-platform/pull/34830
2024-05-22 13:52:24 -04:00
Ahtisham Shahid
362899e797 fix: Added message to Course update notification in case of small text (#34819) 2024-05-21 13:31:41 +05:00
Jesper Hodge
e95d7e7e32 fix: libraries performance problem
This is an attempt to fix a performance problem on the libraries home page. When you go to studio home and click on the libraries tab, on prod it will be quick for admins but extremely slow for course instructors (> 12 seconds) and leads to timeouts. It grows with the number of libraries that are assigned to the instructor.

The Python code for the request to load libraries for a particular user goes through all existing libraries and then checks all of the user's roles for each library, which results in a complexity of O(l*r), l=libraries, r=roles. This PR improves the complexity to O(l).

The BulkRoleCache and RoleCache classes were using a python set to store all roles for a particular user. A user can have a large number of roles, and lookup speed of iterating through a set is slow (O(n)). Most roles don't have the same course id, however. So if you have the course id of the role you're looking for, we can use a dict of course ids that contain related roles. The number of roles per course id is negligible, so we arrive at a lookup speed of O(1) when looking up a user's roles that belong to a specific course id.

The BulkRoleCache now caches and stores user roles in a data structure like this:
    {
        user_id_1: {
            course_id_1: {role1, role2, role3},  # Set of roles associated with course_id_1
            course_id_2: {role4, role5, role6},  # Set of roles associated with course_id_2
            [ROLE_CACHE_UNGROUPED_ROLES_KEY]: {role7, role8}  # Set of roles not tied to any specific course or library. For example, Global Staff roles.
        },
        user_id_2: { ... }  # Similar structure for another user
    }

While this changes the data structure used to store roles under the hood and adds the new property `roles_by_course_id` to the RoleCache,
when initializing the RoleCache will store roles additionally in the previous data structure - as a flat set - in the `_roles` property accessible via `all_roles_set`. This establishes
backwards compatibility.

We are now storing roles twice in the RoleCache (in each of the two data structures), which means this takes twice as much memory, but only in the scope of a request.
2024-05-20 16:34:08 -04:00
Maria Grimaldi
33b8137763 refactor: rename minimum partition ID constant to be more generic (#34529)
Rename MINIMUM_STATIC_PARTITION_ID to MINIMUM_UNUSED_PARTITION_ID
so it's not confusing when used to generate IDs for static or dynamic
partitions.
2024-05-20 14:38:58 -04:00
qasim.gulzar
48cdbce893 refactor: [DEPR]: Neo4J Support #34342 2024-05-17 18:55:16 +05:00
Raymond Zhou
0fd3bde79d fix: remove instructor info serializer validation (#34802) 2024-05-16 13:47:07 -04:00
Raymond Zhou
74a514518c fix: instructor info in course details api (#34760) 2024-05-13 12:47:22 -04:00
ABBOUD Moncef
3fa77ea44d feat: add a nontranslated status video field (#33939) 2024-05-13 09:58:01 -04:00
Kyle McCormick
15caa9746f refactor: Completely remove Blockstore (#34739)
Blockstore and all of its (experimental) functionality has been replaced with
openedx-learning, aka "Learning Core". This commit uninstalls the now-unused
openedx-blockstore package and removes all dangling references to it.

Note: This also removes the `copy_library_from_v1_to_v2` management command,
which has been broken ever since we switched from Blockstore to Learning Core.

Part of this DEPR: https://github.com/openedx/public-engineering/issues/238
2024-05-13 09:48:18 -04:00
Rômulo Penido
b42da7429f feat: Enable taxonomy/tagging feature in MFE by default (#34633)
* feat: make tagging feature enabled by default

* fix: use the correct flag for tagging enabled

* fix: make compatible with other changes from master

* fix: more compatibility fixes

* fix: show tag counts at all levels of the outline, not just units

* chore: typo

* test: fix counts in test suite now that tagging is on by default

---------

Co-authored-by: Braden MacDonald <braden@opencraft.com>
Co-authored-by: Yusuf Musleh <yusuf@opencraft.com>
2024-05-09 18:57:05 +05:30
Braden MacDonald
4c582e64bb feat: Always enable the "copy-paste units" functionality (#34742) 2024-05-09 17:20:56 +05:30
Kaustav Banerjee
d43a2f73eb feat: default grade designations configurable from settings (#32406) 2024-05-08 01:14:03 +05:30
Yusuf Musleh
a3924f687b feat: Tag sections, subsections, and the whole course (#34690)
(In the legacy UI, if the 'new_studio_mfe.use_tagging_taxonomy_list_page' waffle flag is enabled)
2024-05-07 10:29:35 -07:00
Maria Grimaldi
b792222772 fix: add support to Group Configuration view for Teams partitions (#34643) 2024-05-06 11:46:02 -04:00
Glib Glugovskiy
f9caa8ee48 feat: update path for textbook page on course-authoring mfe redirect 2024-04-30 20:31:08 +03:00
Maria Grimaldi
809ffc3743 feat: connect teams with content groups using dynamic partition generator (#33788)
Implements the connection from the teams feature to the content groups feature. This implementation uses the dynamic partition generator extension point to associate content groups with the users that belong to a Team.

This implementation was heavily inspired by the enrollment tracks dynamic partitions.
2024-04-25 13:02:49 -04:00
ruzniaievdm
5967ddea37 fix: provide with can_paste_component in serializers (#34521) 2024-04-24 11:25:26 -04:00
Saad Yousaf
164c8ab835 fix: fix course_update event content param 2024-04-22 13:15:31 +05:00
ruzniaievdm
a9db690900 feat: refactoring xblock actions (#34452) 2024-04-12 11:17:54 -04:00
connorhaugh
df3c38ce2e feat: add heartbeat to authoring api (#34449)
* feat: add heartbeat to authoring api
2024-04-10 10:28:30 -04:00
ruzniaievdm
a8586e5114 feat: display error notifications on the Unit page (#34450) 2024-04-09 09:52:35 -04:00
Pooja Kulkarni
3c7e16255a feat: add new endpoint for cloning course (#31794)
Co-authored-by: Maxim Beder <maxim@opencraft.com>
2024-04-09 15:05:10 +05:30
Chris Chávez
ddb407a3f2 feat: handle tags when importing/exporting courses (#34356) 2024-04-08 11:39:46 -07:00
Irtaza Akram
c810a1b3e5 Merge branch 'master' into xblock2 2024-04-04 15:16:55 +05:00
Brian Mesick
704c2e58a1 Merge pull request #34454 from qasimgulzar/qasim/DEPR/34342-warning
temp: adding DeprecationWarning to remove neo4j.
2024-04-03 11:16:00 -04:00
Irtaza Akram
682a80addd fix: review changes 2024-04-03 16:03:56 +05:00
Irtaza Akram
79a4327f67 Merge branch 'master' into xblock2 2024-04-03 14:57:00 +05:00
qasim.gulzar
2eba42c7ad temp: adding DeprecationWarning to remove neo4j. 2024-04-02 23:44:10 +05:00
Jillian
7ad225658f feat: don't use OLX for tags when copying/duplicating blocks (#34386) 2024-04-02 09:59:57 -07:00
Irtaza Akram
834384c88e fix: runtim id_generator issue 2024-04-01 17:47:57 +05:00
Irtaza Akram
3faa773bb9 feat: add support for xblock 2 2024-04-01 16:02:06 +05:00
Kristin Aoki
9f734a7a5e feat: update youtube transcript fetch to allow all languages (#34436)
* feat: allow all languages

* feat: add youtube transcript import functions as drf
2024-03-29 08:28:18 -04:00
Syed Sajjad Hussain Shah
4d4f8f457d Revert "chore: moved user_authn all urls in urls.py (#34396)" (#34431)
This reverts commit fc63719ceb.
2024-03-27 11:33:38 +05:00
Isaac Lee
40744eca36 fix: gate lti tools frorm onboarding function (#34413)
* fix: gate lti tools frorm onboarding function

- Block calls to does_backend_support_onboarding if the proctoring provider uses LTI

* fix: LTI onboarding false by default
2024-03-25 19:59:30 +00:00
Alison Langston
f944e67ce4 fix: register exams without due date or course end date (#34421) 2024-03-25 15:21:46 -04:00
Syed Sajjad Hussain Shah
fc63719ceb chore: moved user_authn all urls in urls.py (#34396) 2024-03-25 22:05:55 +05:00
ruzniaievdm
6d13b77495 feat: [FC-0044] group configurations API DRF (#34389) 2024-03-25 10:02:34 -04:00
ruzniaievdm
85dd7f35e3 feat: [FC-0044] certificates API DRF (#34339)
* feat: [FC-0044] certificates API DRF

* fix: remove unused import from previous commits
2024-03-22 10:46:34 -04:00
Justin Hynes
907c32ae6d fix: add validation to cdb and cad settings on update (#34406)
[APER-3228]

This PR tries to correct bad data on a course update before it enters the system. There are times when we are updating a course (via Studio) and we save bad data that has been persisted and passed to the backend from the CMS's legacy Django template-based frontend.

The bad data doesn't affect the LMS or CMS much, as there is extra logic in the monolith around course pacing. However, downstream services (e.g. Credentials) don't understand the concept of course pacing and will persist bad data (like a certificate available date associated with a self-paced course run).

The most common problem that manifests is that Credentials will hide a certificate from a learner on their Learner Record, even though the course certificate is visible and accessible to the learner from the LMS.
2024-03-21 13:46:45 -04:00
ruzniaievdm
3ecc4bf6a0 feat: [FC-0044] textbooks API DRF (#34388)
* feat: [FC-0044] textbooks API DRF

* fix: resolve discussions
2024-03-21 13:39:03 -04:00
Maria Grimaldi
45178e0ced feat: add paginated HomePageCoursesV2 view with filtering & ordering (#34173) 2024-03-20 11:31:59 -04:00
Diana Olarte
490a3d4c75 feat: allow instructors to manage certificates (#31265)
* feat: Add context to certificate webview.

Add support to instructor certificates generation. If user has instructor permissions over a course, the staff permissions are also granted.
* fix: rename local parameters to fix pylint redefined-outer-name alert
* feat: create a setting to enable certificate panel for instructors
* fix: remove unnecessary permisions
* fix: update persmissions and testing
* style: fix pylint issues

---------

Co-authored-by: Squirrel18 <daniel.quiroga@edunext.co>
Co-authored-by: Maria Fernanda Magallanes Zubillaga <maria.magallanes@edunext.co>
2024-03-20 07:46:15 -04:00
ruzniaievdm
7189bd6484 feat: [FC-0044] add waffle flag support (#34338)
* feat: [FC-0044] add waffle flag support

* fix: resolve discussions
2024-03-19 10:16:16 -04:00
ruzniaievdm
1bcf25f22b feat: manage Tags on block level (#34361) 2024-03-18 16:09:47 -04:00
Jonas Burigo
1247254fbe test: un-skip test of course export tarball (#33697) 2024-03-18 12:30:02 -07:00