Commit Graph

66833 Commits

Author SHA1 Message Date
Saad Yousaf
790fdcf05a fix: fix accessibility issue with video editor speed option selected speed 2025-03-03 13:21:45 +05:00
Muhammad Adeel Tajamul
1d0c72a0e1 chore: updated openedx-forum to 0.1.8 (#36314) 2025-03-03 12:00:52 +05:00
jawad khan
a84ad87f4b fix: Adjusted discussion notification context for mobile (#36304)
* fix: Adjusted discussion notification context for mobile
2025-03-03 10:44:47 +05:00
Abdul Rehman
385ea8382e fix: Remove duplicate imports of js files in instructor dashboard pages (#36289)
Co-authored-by: Abdul Rehman <abdul.rehman02@A006-01628.local>
2025-03-03 09:48:22 +05:00
David Ormsbee
d5aa834b6c refactor: move get_user_model call out of method
The get_service_user method used to do a local call to the
get_user_model function because it was not guaranteed to be properly
initialized at the time of import. This was partly due to how we did
custom initialization using lms/startup.py, but it was also because
when it was implemented (commit f318661), the platform was still
running on Django 1.8.18. At that time, get_user_model was guaranteed to
work only after Django has imported all models.

In Django 1.11, the behavior of get_user_model was changed:

  https://docs.djangoproject.com/en/1.11/releases/1.11/#django-contrib-auth

> get_user_model() can now be called at import time,
> even in modules that define models.

Now that lms/startup.py is gone and get_user_model is safe to call at
the module level, I'm refactoring the catalog app's models.py file to
follow the convention we use everywhere else in edx-platform with
respect to get_user_model.
2025-02-28 23:16:05 -05:00
David Ormsbee
c4f21b6931 fix: remove custom startup to fix dev reloading
The cms/startup.py and lms/startup.py files were created to
allow us to do a lot of custom initialization around things
like the ModuleStore, monkey-patching, adding MIME types to
our process, etc. As far back as 2017, we recognized that
this was a bad thing, marked these modules as "deprecated",
and started removing things or putting them in the standard
Django locations for them (0279181).

In its current state, these startup modules no longer do any
custom work, and just invoke django.startup(). But this is
meant for running Django code in "standalone" usage, e.g. if
you have a script that isn't a management command but needs
some Django functionality.

The "runserver" command used during development normally
launches a child process to serve requests and knows how to
kill and respawn that process when files are modified, so
that changes are reflected. It can also normally handle the
case where there's a SyntaxError in the child process, and
fixing that error will reload the code again.

Something about running django.startup() manually interferes
with this functionality in "runserver". It still reloads the
code in response to changes, but if the code gets into a
broken state for any reason (like a syntax error), the master
process itself dies. That causes the container to restart,
only to die again shortly afterwards in a loop until the
error is fixed. The container restarts will break any shell
you had opened into the container, as well as any IDE
integrations that connected to that container to access the
files and Python instance.

Getting rid of the custom startup code fixes this and moves
us one small step closer to being a more normal Django
project.
2025-02-28 23:16:05 -05:00
jawad khan
05890d25b6 feat: Add hide_after_due field in blocks api (#36284) 2025-02-28 12:36:04 +05:00
Kyle McCormick
2dc4dfe281 docs: Settings Simplification ADR (#36224)
Part of: https://github.com/openedx/edx-platform/issues/36215

Follow up in: https://github.com/openedx/open-edx-proposals/issues/684
2025-02-27 09:27:28 -05:00
Ahtisham Shahid
b1efc9b609 fix: resolved allow enroll email issue (#36309) 2025-02-27 15:34:05 +05:00
Hassan Raza
35243385eb fix: track duplicate unsubscribe events in snowflake by adding preference updates (#36299)
Co-authored-by: Hassan Raza <h.raza@A006-01472.local>
2025-02-27 11:42:38 +05:00
Katrina Nguyen
9416fba6fa Merge pull request #36308 from openedx/katrinan029/upgrade-edx-enterprise-6d21b97
feat: Upgrade Python dependency edx-enterprise
2025-02-26 12:09:42 -08:00
katrinan029
ff4d7d5107 feat: Upgrade Python dependency edx-enterprise
version bummp

Commit generated by workflow `openedx/edx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`
2025-02-26 19:18:46 +00:00
Ahtisham Shahid
6d21b97a8b fix: user id in allow enroll email inconsistent (#36300) 2025-02-26 18:12:57 +05:00
Awais Qureshi
3ef635b584 feat!: upgrading add_users_to_cohorts api to DRF ( 33 ) (#35613)
* feat!: upgrading api to DRF.
2025-02-26 17:49:46 +05:00
Muhammad Farhan
0e0d1dab95 feat: Add test for detecting broken and locked links (#36286) 2025-02-26 12:09:23 +05:00
Rômulo Penido
9451cfca26 feat: add API to return list of downstream blocks for an upstream [FC-0076] (#36253)
Adds the API for listing downstream contexts and parents for a given publishable entity.
2025-02-25 13:55:02 -05:00
Muhammad Afaq Shuaib
b83c8495e1 chore: add TRANSCRIPT_LANG_CACHE_TIMEOUT setting variable in common setting envs (#36296)
* chore: add TRANSCRIPT_LANG_CACHE_TIMEOUT setting variable in common setting envs
* chore: bump edx-val version
2025-02-25 20:07:14 +05:00
Bryann Valderrama
a2bb8c9458 refactor!: remove ENABLE_HOME_PAGE_COURSE_API_V2 feature toggle (#36181) 2025-02-24 16:42:06 +01:00
Muhammad Faraz Maqsood
2798f28c2a fix: send correct status for scanning 2025-02-24 13:31:08 +05:00
Deborah Kaplan
ecf5aee297 feat: management command to purge information about web certificates (#36287)
for Open edX  operators who still have users with legacy PDF certificates, retirement requires first extracting information from the user's GeneratedCertificate record in order to delete the 4 associated files for each PDF certificate, and then removing the links to the relevant files.  this creates a management command to do that work.

After thinking about it, I have removed the update to `status` from this management command, as per the original specification of the ticket. I added it for completeness originally, but was already uncomfortable, because it's not exactly accurate. The `CertificateStatuses` enum does define a `deleted` status:

```
    deleted             - The PDF certificate has been deleted.
```

but I think it's inappropriate to use here.

#### Why not use `CertificateStatuses.deleted` in the first place

There are multiple places in the code where it's clear that almost all of the statuses are legacy and unused (eg. [Example 1](6c6fd84e53/lms/djangoapps/certificates/data.py (L12-L34)), [Example 2](1029de5537/common/djangoapps/student/helpers.py (L491-L492))). There are innumerable APIs in the system that have expectations about what might possibly be returned from a `GeneratedCertificate.status` object, and none of them is expecting `deleted`

#### Why not revoke the certificate

Ultimately, the certificate isn't revoked, which has a specific meaning around saying it was unearned. The certificate was earned; it has simply been deleted.  We should not be kicking off program certificate invalidation, because that's not what's happening. We should be trusting the normal user retirement process to remove/purge PII from any program certificates that might exist. The nature of web certificates simply means that we are going through this process outside of the normal retirement flow. The normal retirement flow can be trusted to implement any certificate object revocation/removal/PII-purging, and doing an extra step outside of that flow is counterproductive.

#### Why not robustly add a flow for `CertificateStatuses.deleted`

When PDF certificates were removed from the system, they weren't removed in their entirety. Instead, we have this vestigial remains of PDF certificates code, just enough to allow learners to display and use the ones that they already have, without any of the support systems for modifying them. Adding a `deleted` status, verifying that all other APIs wouldn't break in the presence of a certificate with that status, adding the signals to process and propagate the change: all of this would be adding more tech debt upon the already existing technical debt which is the PDF certs code. Better to simply add this one necessary data integrity change, and focus on a process which might allow us to eventually remove the web certificates code.

#### Why it is good enough to ignore the status

The original ask was simply to enforce data integrity: to remove links to files that have been deleted, as an indication that they've been deleted. I only added `status` update out of a (misplaced but well-intentioned) completionist urge.

FIXES: APER-3889
2025-02-21 14:43:04 -05:00
Chris Chávez
b6489e718c feat: Video editor supports transcripts [FC-0076] (#36058)
* Add error handler on save video to avoid creating sjson
* Support transcripts without edx_video_id in definition_to_xml
* When copying a video from a library to a course: Create a new edx_video_id
* Save transcripts as static assets in a video in a library when adding a new transcript.
* Delete transcripts as static assets in a video in a library when deleting transcripts.
* Support download transcript in a video in a library.
* Support replace transcript in a video in a library.
* Support updating transcripts in video in a library.
* Refactor the code of downloading YouTube transcripts to enable this feature in libraries.
* Support copy from a library to a course and a course to a library.
2025-02-21 13:33:13 -05:00
Maria Grimaldi
6c6fd84e53 fix: import authoring filter from content_authoring instead (#36109)
Correctly name authoring subdomain according to DDD docs: https://openedx.atlassian.net/wiki/spaces/AC/pages/663224968/edX+DDD+Bounded+Contexts
2025-02-21 14:55:50 +01:00
Awais Qureshi
b5de356747 docs: fixing make docs command. (#36280)
* docs: fixing make docs command.
2025-02-21 13:00:44 +05:00
Peter Kulko
0319d62a78 feat: course unit - edit iframe modal window (#35777)
Adds logic to support the functionality of editing xblocks via the legacy modal editing window.
2025-02-20 17:02:43 -03:00
renovate[bot]
0e9fb5d845 chore(config): migrate config .github/renovate.json5 2025-02-20 18:16:32 +00:00
Michael Roytman
7dd4a0969c Merge pull request #36257 from openedx/michaelroytman/COSMO-605-timed-exam-due-date-inconsistencies
Make computation of due date for edx-proctoring powered exams consistent.
2025-02-20 10:36:27 -05:00
michaelroytman
c9beec776f feat: make computation of due date for edx-proctoring powered exams consistent
This commit fixes an inconsistency in the way an exam due date is computed for courses that do not use an LTI based proctoring provider.

The edx-exams microservice was released last year to provide support for LTI based proctoring providers. After the release of this microservice, all proctoring requests initiated by the platform began to be funneled through the microservice, which acted as a broker for these requests, routing them directly to the service for exams in courses using an LTI based proctoring provider or to the platform edx-proctoring plugin for all other cases.

There is an asynchronous task in the platform that syncs exams from the platform to either the edx-exams microservice or the edx-proctoring plugin. Prior to the release of the microservice, this task computed the due date on exams as the exam subsection due date if the course was instructor-paced or None. After the release of the microservice, the task computed due dates differently than before. The due date on exams was computed as the due date on the exam, if there was one, or the end date of the course, if there was one, or None. This differed from the prior definition.

This resulted in inconsistent due date behavior. The exams in courses that were published or republished after the edx-exams microservice was released had the new computation of due date, while exams in courses that were published or republished before the edx-exams microservice was released had the old computation of due date.

This causes an issue for all exams in courses using non-LTI based providers. This is because the due date on exams across all courses that either do not use proctoring or that use a non-LTI based provider are inconsistent, depending on when they were last published.

This commit reintroduces the old computation to the task for exams in courses using a non-LTI based proctoring provider (i.e. those courses whose exams are not powered by the edx-exams microservice). In order to maintain the functionality of edx-exams, we continue to compute the due date as before for exams in courses using an LTI based proctoring provider (i.e. those courses whose exams are powered by the edx-exams microservice).
2025-02-20 09:44:35 -05:00
navinkarkera
ee19fad28d feat: Upgrade Python dependency xblock-drag-and-drop-v2
Commit generated by workflow `openedx/edx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`
2025-02-20 13:04:01 +00:00
Feanil Patel
45f44c3965 Merge pull request #36259 from openedx/feanil/fix_docs_build
feanil/fix docs build
2025-02-19 09:27:09 -05:00
Kyle D. McCormick
6124695fdf refactor: Remove broken Force-Publish UI from Studio
Co-Authored-By: Feanil Patel <feanil@axim.org>
2025-02-19 09:07:57 -05:00
Kyle McCormick
569c2d9ad2 Revert "fix: Remove pointless Maintenance and Announcement apps (#35852)"
This reverts commit 9274852f2d.
2025-02-19 09:07:57 -05:00
Chris Chávez
d29ff63e2c fix: Render Word cloud block editor in libraries [FC-0076] (#36199)
* fix: Render Word cloud and conditional block editor

- The xmodule-type to render is MetadataOnlyEditingDescriptor
- The xmodule type `MetadataOnlyEditingDescriptor` renders a `<div>` with the block metadata in the `data-metadata` attribute. But is necessary to call `XBlockEditorView.xblockReady()` to run the scripts to build the editor using the metadata.
- To call XBlockEditorView.xblockReady() we need a specific require.config

* fix: Adding save and cancel button

* fix: save with studio_submit of conditional_block and word_cloud_block

* test: Tests for studio_submit of conditional and word cloud

* revert: Delete studio_submit of conditional block. It is not supported

* style: Fix lint

---------

Co-authored-by: Navin Karkera <navin@opencraft.com>
2025-02-19 18:05:55 +05:30
Ahtisham Shahid
b7a2ffaab8 fix: log only for allowed_enroll email (#36273) 2025-02-19 17:35:43 +05:00
Awais Qureshi
9f5fe30f54 feat!: upgrading get_proctored_exam_results api to DRF ( 32 ) (#35612)
* feat!: upgrading api to DRF
2025-02-19 15:12:39 +05:00
Muhammad Farhan Khan
bdd2bc3cd8 Merge pull request #36270 from openedx/farhan/upgrade-xblocks-contrib-a1d0826
feat: Upgrade Python dependency xblocks-contrib
2025-02-19 11:46:18 +05:00
farhan
917ee7d0fb feat: Upgrade Python dependency xblocks-contrib
chore: Update xblocks-contrib pypi package

Commit generated by workflow `openedx/edx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`
2025-02-18 18:30:48 +00:00
Navin Karkera
a1d0826a2a feat: entity link view and api (#36190)
Adds api for listing upstream entity links for a given course.
2025-02-18 15:34:00 +00:00
github-actions[bot]
5077910b85 feat: Upgrade Python dependency geoip2 (#36266)
Commit generated by workflow `openedx/edx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`

Co-authored-by: UsamaSadiq <41958659+UsamaSadiq@users.noreply.github.com>
Co-authored-by: Usama Sadiq <usama.sadiq@arbisoft.com>
2025-02-18 16:49:30 +05:00
Hassan Raza
5db14d2b5b fix: tracker context issue (#36247)
Co-authored-by: Hassan Raza <h.raza@192.168.1.12>
2025-02-18 15:12:35 +05:00
github-actions[bot]
f81e374c77 feat: Upgrade Python dependency faker (#36262)
chore: upgrade faker package version

Commit generated by workflow `openedx/edx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`

Co-authored-by: UsamaSadiq <41958659+UsamaSadiq@users.noreply.github.com>
Co-authored-by: Usama Sadiq <usama.sadiq@arbisoft.com>
2025-02-18 15:05:03 +05:00
Bilal Qamar
04c933d7b3 Merge branch 'master' into renovate/uglify-js-2.x 2025-02-18 14:28:39 +05:00
Eemaan Amir
4fe77b89a2 fix: fixed escaped characters in goal reminder email (#36260) 2025-02-18 12:52:11 +05:00
Awais Qureshi
cba02f5e81 feat!: upgrading api to DRF. (#35609) 2025-02-17 14:41:08 +05:00
Usama Sadiq
87a5611375 chore: update edx-proctoring package version (#36256)
* fix: fix tests with new version of edx-proctoring

* feat: Upgrade Python dependency edx-proctoring (#36255)

chore: update edx-proctoring version

Commit generated by workflow `openedx/edx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`

Co-authored-by: UsamaSadiq <41958659+UsamaSadiq@users.noreply.github.com>

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-17 14:37:09 +05:00
Syed Sajjad Hussain Shah
c05a3f394a feat: override refund_entitlement (#36248) 2025-02-17 10:55:06 +05:00
Feanil Patel
b079d4c39b docs: Update the Open API docs. 2025-02-14 15:51:24 -05:00
Feanil Patel
18fe2976c7 build: We don't need to override this setting.
The format of the `source_suffix` setting has change but the default is
fine for us so we don't need to override this.
2025-02-14 15:51:24 -05:00
Feanil Patel
9589c43a49 build: Add more apps to the set of installed apps.
These app models get pulled in when trying to build the OpenAPI docs so
we need their relevant apps installed into the environment used to
generate the docs.
2025-02-14 14:52:55 -05:00
Chris Chávez
392fd3e090 chore: Bump version of xblock-poll to 1.14.1 (#36252)
Updates the requirements for using the latest version of xblock-poll. Changes are generated by make compile-requirements
2025-02-14 17:33:33 +00:00
Ahtisham Shahid
15cacf9dd0 fix: log only for allowed_enroll email (#36254) 2025-02-14 14:48:02 +05:00