Commit Graph

23768 Commits

Author SHA1 Message Date
Michael Terry
93c5fdf735 Merge pull request #30303 from openedx/mikix/outline-children
fix: guard access to course block children in outline tab data
2022-04-22 09:35:02 -04:00
Demid
da4a6d6103 feat: Implement feature flag to disable students un-enrollment (#29326)
Implements a feature flag DISABLE_UNENROLLMENT that is used to disable students un-enrollment for all courses. The Unenrollment option should be disabled when this feature is set to True.

ref: BB-4951

Co-authored-by: tinumide <tinuade@opencraft.com>
Co-authored-by: Tim McCormack <tmccormack@edx.org>
2022-04-22 13:24:23 +00:00
Michael Terry
ea6b5b9e3c fix: guard access to course block children in outline tab data
In some cases the course blocks API was returning a dict without
a 'children' key, which was causing a traceback.

If the course blocks API has no children, that's IS a problem, but
still better than erroring out due to a KeyError.

AA-1267
2022-04-22 09:08:03 -04:00
AsadAzam
0338aab681 feat: added flag to enable discussions mfe for everyone (#30292)
* feat: added flag to enable discussions mfe for everyone

* refactor: refactord condition

* refactor: refactor condition
2022-04-22 15:14:09 +05:00
Eugene Dyudyunov
f262d64ad4 FC-0001: enterprise dependencies for EdxRestAPIClient replacement (#30240)
* refactor: enterprise dependencies for EdxRestAPIClient replacement

This is a part of https://github.com/openedx/public-engineering/issues/42

- add settings for enterprise-backend-service DOT application
- update utils used by enterprise to get rid of EdxRestAPIClient
- original utils stays in the code (to keep edx-platform api
clients working) till the
https://github.com/openedx/public-engineering/issues/39 deprecation
work will be done

* fix: fix typo in the docstring
2022-04-21 15:28:22 -04:00
Michael Terry
48b0df4f99 Merge pull request #30281 from openedx/mikix/minor-api-cleanup
fix: remove a couple unused learning MFE serializer fields
2022-04-21 09:27:04 -04:00
Jillian Vogel
8b77638bf0 test: refactors blockstore integration tests to run as unit tests.
Tests which @requires_blockstore (i.e. the Blockstore service) have
been made to run as a unit test using the installed Blockstore app, and
will be run by the platform CI.

The Blockstore service tests can still be run manually by setting
EDXAPP_RUN_BLOCKSTORE_TESTS=1

Related fixes:

* adds blockstore bundle storage settings
* let the studio devstack and test servers serve static files from
  the /media URL This allows the blockstore/content libraries API to
  serve blockstore assets in dev.
* Wrap ContentLibrary creation in an atomic transaction, so that if it
 fails, the related bundle can be deleted directly from the database
  during the exception handler. (Previously, we called a REST API which
  deleted it as part of a separate service.)
2022-04-21 09:39:59 +01:00
Jillian Vogel
cfd53aff70 refactor: installs blockstore into edx-platform
* adds blockstore as a requirement and an installed app, with
  configurable bundle storage settings.
* adds waffle switch and setting to allow use of blockstore's python API
  instead of REST API in live testservers and in production.
* adds database router which, when a `blockstore` DATABASE connection is
  configured, allows the platform to use the blockstore service's
  database instead of the default edxapp database.
* replaces blockstore_api exceptions and models with blockstore.app.api classes
* minor fixes to the blockstore_api to make the Blockstore REST API
  return data packaged the same as the Blockstore Python API.
2022-04-21 09:39:54 +01:00
Jillian Vogel
98a26e8674 fix: use default MEDIA_URL in devstack
The devstack override for this variable didn't work, so just use the common default: /edx/var/edxapp/media
2022-04-21 09:35:08 +01:00
Hassan
4569b53bad Merge pull request #30070 from openedx/hassan/dump-course-ids-filter
feat: Added management command dump_course_ids_with_filter.
2022-04-20 10:24:02 -05:00
Tim McCormack
a251d18281 feat!: Use more-trusted IP in rate-limiting (#241)
Previously, our rate-limiting code trusted the entire `X-Forwarded-For`
header, allowing a malicious client to spoof that header and evade
rate-limiting. This commit introduces a new module and setting
allowing us to make a more conservative choice of IPs.

- Create new `openedx.core.djangoapps.util.ip` module for producing
  the IP "external chain" for requests based on the XFF header and the
  REMOTE_ADDR.
- Include a function that gives the safest choice of IPs.
- Add new setting `CLOSEST_CLIENT_IP_FROM_HEADERS` for configuring how
  the external chain is derived (i.e. setting the trust
  boundary). Currently has a default, but we may want to make it
  mandatory in the future.
- Change `django-ratelimit` code to use the proximate IP in the external
  chain -- the one just outside the trust boundary.

Also:

- Change `XForwardedForMiddleware` to use more conservative choice for
  its `REMOTE_ADDR` override
- Other adjustments to `XForwardedForMiddleware` as needed in order to
  initialize new module and support code that needs the real
  `REMOTE_ADDR` value
- Metrics for observability into the change (and XFF composition)
- Feature switch to restore legacy mode if needed

This also gives us a path forward to removing use of the django-ipware
package, which is no longer maintained and has a handful of bugs that make it
difficult to use safely.

Internal ticket: ARCHBOM-2056
2022-04-20 13:46:58 +00:00
Justin Hynes
1435b619b4 Merge pull request #30271 from openedx/jhynes/microba-1507_process-scheduled-tasks
feat: add support for processing scheduled instructor tasks
2022-04-20 09:14:31 -04:00
adeel.tajamul
8c6f307de8 fix: hyperlinks opening in iframe in discussions mfe 2022-04-20 15:21:30 +05:00
Justin Hynes
bec97653b5 feat: add support for processing scheduled instructor tasks
[MICROBA-1507]

* adds new functionality for retrieving and submitting scheduled tasks to Celery
* add an InstructorTaskSchedule factory for unit testing
* adds unit tests for processing scheduled tasks
2022-04-19 15:29:27 -04:00
Michael Terry
790391ad1f fix: add more can-enroll checks to course home outline API
Specifically:
- enrollment has ended or not begun (whoops!)
- is full (at/over max enrollment)

Before this change in these cases, we would still show an enroll
button which wasn't functional, causing user confusion.

AA-1245
2022-04-19 15:08:37 -04:00
Michael Terry
bc10f653dc fix: remove a couple unused learning MFE serializer fields
Now that the frontend assumes there are no legacy courseware pages,
we can stop sending them info about it.
2022-04-19 15:06:37 -04:00
Michael Terry
afd19f0513 feat!: drop legacy courseware tab access for learners
The only way to access the legacy courseware is now through the
Studio preview feature (and at some point, when the MFE supports a
preview mode, we can then remove even that).

This drops the courseware.use_legacy_frontend waffle.
2022-04-19 12:27:10 -04:00
Ali Akbar
9b1db048f8 Merge pull request #30223 from openedx/aakbar/PROD-2738
feat: use new flow with with financial assistance form
2022-04-19 20:19:37 +05:00
AliAkbar
33bb739e50 feat: use new flow with with financial assistance form 2022-04-19 19:57:18 +05:00
Justin Hynes
e3888187c2 Merge pull request #30277 from openedx/jhynes/update-microba-1666-adr
docs: update ADR for reasons why we won't be sanitizing bulk email contents
2022-04-19 09:13:09 -04:00
Kelly Buchanan
6f5efb6203 docs: Add ADR for not sanitizing html in bulk email.
[MICROBA-1666]
- Update ADR to explain why we will not be sanitizing the contents of bulk email messages.
2022-04-19 08:38:06 -04:00
Justin Hynes
d1aa1734dd docs: add ADRs describing approach for the scheduled instructor tasks implementation
[MICROBA-1696]

* Introduce an ADR with details on the proposed approach to scheduled instructor tasks to support scheduled bulk email
* Introduce an ADR with details on how scheduled instructor tasks will be processed
2022-04-19 08:23:43 -04:00
Hassan Javeed
b2acb84855 feat: Added management command dump_course_ids_with_filter. 2022-04-19 01:29:57 -05:00
Jansen Kantor
4d18a6c1a0 feat: block team oras from ESG (#30269)
* feat: add teams enabled flag to ORA item view context

* feat: all team ORAs should be marked esg disabled
2022-04-18 15:41:02 -04:00
Michael Terry
9714959816 Merge pull request #30257 from openedx/mikix/use-course-key
fix: pass a CourseKey not a string to course_home_url
2022-04-15 09:16:17 -04:00
Michael Terry
4732c46985 fix: pass a CourseKey not a string to course_home_url 2022-04-15 08:59:56 -04:00
Mehak Nasir
fefbbcbdba style: button font reduced to reduce button size (#30256) 2022-04-15 16:57:14 +05:00
Michael Terry
ce5f1bb343 feat!: drop legacy course home view and related code
This was the "outline tab" view of the course. Preceded by the
course info view, succeeded by the MFE outline tab.

In addition to the course home view itself, this drops related
features:
- Legacy version of Course Goals (MFE has a newer implementation)
- Course home in-course search (MFE has no search)

The old course info view and course about views survive for now.

This also drops a few now-unused feature toggles:
- course_experience.latest_update
- course_experience.show_upgrade_msg_on_course_home
- course_experience.upgrade_deadline_message
- course_home.course_home_use_legacy_frontend

With this change, just the progress and courseware tabs are still
supported in legacy form, if you opt-in with waffle flags. The
outline and dates tabs are offered only by the MFE.

AA-798

(This is identical to previous commit be5c1a6, just reintroduced
now that the e2e tests have been fixed)
2022-04-14 15:18:31 -04:00
Michael Terry
a515c2e992 Revert "Drop legacy outline tab in favor of the MFE's version" 2022-04-14 14:16:29 -04:00
Michael Terry
6af3cb14d9 Merge pull request #30064 from openedx/mikix/drop-outline-view
Drop legacy outline tab in favor of the MFE's version
2022-04-14 11:59:44 -04:00
María Fernanda Magallanes
a099d9a10b refactor: consider celery imports from common settings plus env tokens (#29739) 2022-04-14 09:16:14 -04:00
Michael Terry
be5c1a64d5 feat!: drop legacy course home view and related code
This was the "outline tab" view of the course. Preceded by the
course info view, succeeded by the MFE outline tab.

In addition to the course home view itself, this drops related
features:
- Legacy version of Course Goals (MFE has a newer implementation)
- Course home in-course search (MFE has no search)

The old course info view and course about views survive for now.

This also drops a few now-unused feature toggles:
- course_experience.latest_update
- course_experience.show_upgrade_msg_on_course_home
- course_experience.upgrade_deadline_message
- course_home.course_home_use_legacy_frontend

With this change, just the progress and courseware tabs are still
supported in legacy form, if you opt-in with waffle flags. The
outline and dates tabs are offered only by the MFE.

AA-798
2022-04-14 09:12:01 -04:00
Michael Terry
0be6d3c8ab Merge pull request #29846 from openedx/mikix/drop-dates-view
feat!: drop legacy dates tab, in favor of MFE version
2022-04-14 09:11:20 -04:00
Demid
16fa97dde4 feat: deprecate filestore
This:

1. Removes the `filestore` property from the `ModuleSystem` in favor of
   the `runtime.resources_fs` property.
   In the original code, `filestore` is equal to
   `DescriptorSystem.runtime.resources_fs`. It's safe to replace it with
   `ModuleSystem.runtime.resources_fs` because both runtimes are combined
   using the `CachingDescriptorSystem`. It provides the `resources_fs` property
   that uses the same file storage.

2. Renames `filestore` argument to `resources_fs` in the `LoncapaSystem`
   constructor.

3. Adds the deprecated `filestore` property to the `ModuleSystemShim`
   and `RuntimeShim`.
2022-04-14 14:45:05 +02:00
Kshitij Sobti
1ea90d8843 fix!: supply the editor and closing user as separate params to cs_comments_service (#30230)
The forum service doesn't get the requesting user id for any operation, only the user id of the content creator. So to apply a different user id for an editor or post closing user, those need to be explicitly passed.
2022-04-14 16:21:55 +05:00
Mehak Nasir
7cf037f540 style: banner height reduced to space screen size (#30241) 2022-04-14 13:14:27 +05:00
Hamza Khchine
ea8f667bee feat: Add management command for updating discussion user stats for all users in a course (#29973)
Adds a management command to trigger an update to generate user stats for all users in a course.
2022-04-13 19:09:50 +05:00
Kshitij Sobti
60918fb160 feat: use native learning MFE tab for discussions (#30109)
Updates the discussions tab to return the learning MFE tab URL so the discussion content can be shown in the learning MFE itself.
2022-04-13 18:55:27 +05:00
SaadYousaf
149ca028d7 feat: update discussion settings API to handle changes reported_content_email_notification field 2022-04-13 15:10:48 +05:00
Syed Sajjad Hussain Shah
781032858f fix: Make course metadata values dynamic
Make course metadata price value dynamic by
sending value from backend

VAN-921
2022-04-13 14:29:22 +05:00
Mubbshar Anwar
0663795781 feat: reminder emails (#30159)
send reminder emails to those users who saved course or program but not enroll within 15 days.
VAN-887
2022-04-13 12:27:50 +05:00
Michael Terry
0eb8962548 feat!: drop legacy dates tab, in favor of MFE version
For the dates courseware tab, we no longer respect the
course_home_use_legacy_frontend waffle flag that enabled the
legacy version in Maple.

Instead, we always send the user to the MFE.

MFEs will be required for the Nutmeg release. This dates tab is
the first to fall, but others will follow.

AA-799
2022-04-12 15:20:37 -04:00
Thomas Tracy
c89a137b68 fix: [MICROBA-1769] Fix early nonpassing status (#30160)
In certain situations, learners in the nonpassing state (or sometimes
students who have finished a course too early and passed) were getting
information about their grad and certificate status before they were
supposed too.

This adds some data to the courseware api that will allow us to mirror
availability states for certifictes of passing learners withour
revealing information through the api. Now, no matter the status of the
students grade or certificate display behavior, a student should not see
information about certificates early.
2022-04-12 14:10:21 -04:00
Justin Hynes
f2582c4e9e Merge pull request #30192 from openedx/jhynes/microba-1507_scheduled-tasks
feat: update existing functions to support scheduled email tasks
2022-04-12 08:26:31 -04:00
Ali Akbar
5eedf84ba8 Merge pull request #30114 from openedx/aakbar/PROD-2740
feat: add financial assistance configuration model and util functions
2022-04-12 13:02:31 +05:00
AliAkbar
9af7418da6 feat: add financial assistance configuration model and util functions 2022-04-12 12:04:15 +05:00
Feanil Patel
40f5744f1f docs: Add documentation for how to extend a setting.
Also remove some old docs suggestions that I don't think are relevant
anymore.

Co-authored-by: David Ormsbee <dormsbee@edx.org>
Co-authored-by: Robert Raposa <rraposa@edx.org>
2022-04-11 13:57:41 -04:00
Maria Grimaldi
7dc60db1d9 Merge pull request #29792 from raccoongang/dyudyunov/fix-certificate-generation-without-persistent-grades
Fix certificate generation without persistent grades
2022-04-08 12:02:53 -04:00
Justin Hynes
e826abc0e8 feat: update existing functions to support scheduled email tasks
[MICROBA-1507]

* Adds support to the bulk course email tool to extract a schedule and timezone from a `send_email` request.
* Submits the task for scheduling when needed.
2022-04-07 13:35:31 -04:00
Michael Terry
dc55021e8e Merge pull request #30176 from openedx/mikix/resize-more
fix: tell MFE about xblock iframe resizes more often
2022-04-07 11:14:46 -04:00