Commit Graph

80 Commits

Author SHA1 Message Date
Dillon Dumesnil
a59155e83c AA-36: Link to toggle calendar sync 2020-03-10 14:45:29 -04:00
Calen Pennington
a8ba43133f Remove schedules plugin from cms.djangoapps listing 2020-03-04 11:27:07 -05:00
Calen Pennington
d853444229 Schedules is a core part of the LMS, install it by default, rather than through the plugins mechanism 2020-03-04 10:52:17 -05:00
David Ormsbee
8c7dc22dfe Merge pull request #23068 from open-craft/olx-rest-api
REST API to export modulestore XBlocks as OLX
2020-02-25 15:11:08 -05:00
Jeff LaJoie
fa3b1cd835 AA-6: Adds in dates tab and dates dashboard view to courseware 2020-02-25 10:48:45 -05:00
Braden MacDonald
23d649d7e3 REST API to export modulestore XBlocks as OLX.
This was originally a separate plugin called openedx-olx-rest-api.

It provides a Studio API that any user with course authoring permission can use to get the OLX of an individual XBlock or a unit. Without this, the only way to get an XBlock's OLX was to download the tarball of the entire course.

Examples of usage (be logged in to Studio on devstack):

Simple HTML XBlock:
http://localhost:18010/api/olx-export/v1/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@030e35c4756a4ddc8d40b95fbbfff4d4/

Exporting a unit:
http://localhost:18010/api/olx-export/v1/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@134df56c516a4a0dbb24dd5facef746e/

Example output for an HTML block:

    { 
       "root_block_id":"block-v1:edX+DemoX+Demo_Course+type@html+block@030e35c4756a4ddc8d40b95fbbfff4d4",
       "blocks":{ 
          "block-v1:edX+DemoX+Demo_Course+type@html+block@030e35c4756a4ddc8d40b95fbbfff4d4":{ 
             "olx":"<html display_name=\"Blank HTML Page\"><![CDATA[\n<p><strong>Welcome to the edX Demo Course Introduction.</strong></p>\n]]></html>\n"
          }
       }
    }

The code is designed primarily for use when importing content into Blockstore. So it will:
* Export HTML blocks as a combined OLX/HTML file, with the HTML in a CDATA section
* Convert vertical blocks to unit blocks (unit is like a vertical but has no UI elements)
* Detect static files (such as images) used by the XBlock and list the absolute URL of each static file in the "static_files": {...} JSON element for each XBlock that has at least one static file usage. This can handle static files that are in mongo ("contentstore" / "Files & Uploads") as well as files generated on-the-fly during OLX serialization via the export_fs API (mostly this is video transcripts).
2020-02-21 11:29:21 -08: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
Ned Batchelder
efba6e45e8 Finally import courseware properly everywhere to get rid of a warning 2019-09-26 09:40:15 -04:00
Braden MacDonald
ec97387d3e Move new Blockstore key types to external opaque-keys library. 2019-09-13 09:56:44 -07:00
Brian Mesick
75e38fc4fd DEPR-18 Remove deprecated Notes LMS djangoapp (#21008) 2019-09-03 16:49:58 -04:00
Braden MacDonald
d3f6ed09d8 Learning Contexts, New XBlock Runtime, Blockstore API Client + Content Libraries
https://github.com/edx/edx-platform/pull/20645

This introduces:
* A new XBlock runtime that can read and write XBlocks that are persisted using
  Blockstore instead of Modulestore. The new runtime is currently isolated so
  that it can be tested without risk to the current courseware/runtime.
* Content Libraries v2, which store XBlocks in Blockstore not modulestore
* An API Client for Blockstore
* "Learning Context" plugin API. A learning context is a more abstract concept
  than a course; it's a collection of XBlocks that serves some learning purpose.
2019-08-30 10:31:15 -07:00
David Ormsbee
b1f3d2cef2 Revert "Fix the unpredictable order randomization issue with randomized content blocks" 2019-07-25 13:42:20 -04:00
Guruprasad Lakshmi Narayanan
df4aee23b9 Fix the order randomization behaviour of Randomized Content Block
The Randomized Content Block XBlock only randomizes the selection of
the children blocks and has unpredictable randomization of
the order of the selected child blocks due to the usage of sets, which
are unordered, for storing the selected blocks. This becomes apparent
when all the available child blocks in a library are chosen for a
Randomized Content Block, to randomize just the order of the child
blocks and not just the selection of the blocks. The order of the
selected blocks ends up being similar for multiple learners.

This change modifies the XBlock to store the selected child blocks in
a list, instead of a set, after randomly shuffling them.
2019-07-25 00:58:11 +05:30
Matt Tuchfarber
2583d317db Remove all references to Journals 2019-07-09 14:19:25 -04:00
David Ormsbee
d2af1d4c5b Revert "Fix the unpredictable order randomization issue with randomized content blocks" 2019-05-08 12:42:44 -04:00
Guruprasad Lakshmi Narayanan
73ab30e342 Fix the order randomization behaviour of Randomized Content Block
The Randomized Content Block XBlock only randomizes the selection of
the children blocks and has unpredictable randomization of
the order of the selected child blocks due to the usage of sets, which
are unordered, for storing the selected blocks. This becomes apparent
when all the available child blocks in a library are chosen for a
Randomized Content Block, to randomize just the order of the child
blocks and not just the selection of the blocks. The order of the
selected blocks ends up being similar for multiple learners.

This change modifies the XBlock to store the selected child blocks in
a list, instead of a set, after randomly shuffling them.
2019-04-25 10:23:46 +05:30
Rick Reilly
2bf3e6621e Add ProgramEnrollment app and model for masters 2019-04-12 15:50:30 -04:00
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
Matt Hughes
d1f938ba44 fixing issue with instructor service not being loaded in studio
was causing issues with PT exam configuration dashboard launch
2019-03-25 17:19:33 -04:00
Josh McLaughlin
4d4b040517 Add dashboard announcements feature
- Add announcements view using JSX to the dashboard sidebar
- Create a new maintenance interface to edit and manage announcements
- Adds an override to main.html template to include new skip links
- Add plugins required for announcements to TinyMCE

This is motivated by a desire to have system wide messages for students
that show on the dashboard. Enabled with FEATURES['ENABLE_ANNOUNCEMENTS'].
Global staff are allowed to edit from the studio maintenance view.
2019-03-10 19:25:13 -07:00
Calen Pennington
325fbe4eb2 Hide empty container blocks from the course blocks api when called by the mobile app
All code in this PR should be removed after REVE-52 is merged and mobile
traffic from older app versions falls to < 5% of the mobile traffic
to the course_blocks api
2018-12-20 15:17:24 -05:00
Calen Pennington
83d676cbfa Add Content Type Gating Behind Waffle Flag
Content Type Gating: Xblocks that have a graded component cannot be
accessed by audit track users.
  - Caveats:
    - In studio, instructors can set certain xblocks to be available to
      all users, but graded components will default to not being
      available for audit users
    - If a course does not have a verified mode option, all users will
      have access to graded content.

The Waffle Flag: The waffle flag is of for now.
  It's name is: ```content_type_gating.debug```

This Commit Does NOT Include: Displaying for a user WHY they do not have
access to a specific piece of content.  That change will be part of
another PR.
2018-10-31 12:34:48 -04:00
Calen Pennington
99f8918b74 Add an automatic UserPartition and Scheme for Content Type Gating.
For now, this UserPartition groups all users as Full-access users.
2018-10-29 12:37:30 -04:00
Nimisha Asthagiri
8cf44283c9 Consolidate user login and authentication code 2018-09-15 03:21:39 -04:00
Bill Filler
c746a4e630 Add Journals support
Enable the journal app in LMS. Add support to display Journals on index
and courseware pages and dashboard.
2018-07-23 13:11:26 -04:00
David Ormsbee
72ed987dff Enable model-caching of discussions ID mapping.
Doing modulestore lookups is expensive, so commit 695b036 created a
course_publish listener that would materialize the discussion ID to
XBlock usage key mapping into the CourseDiscussionSettings model.

However, the signal wasn't hooked up to the Studio process, so that
async task was never called. When hooking it up, I also discovered that
bok choy tests related to partitioning were failing because of a race
condition where multiple processes are overwriting the discussion
settings. To make sure this wasn't an issue, I moved the mapping to
its own table.

This is part of ARCH-111, and the overall Course Structures API
deprecation.
2018-06-13 08:21:08 -04:00
Anthony Mangano
07609e7d75 Add password_policy checks to login views
LEARNER-4869
2018-05-04 11:55:57 -04:00
Jeff LaJoie
29748877de LEARNER-4700: Converts credentials to plugin 2018-04-25 11:32:33 -04:00
Gavin Sidebottom
7626d4abf0 Changed 'instructor' django app to follow plugin pattern 2018-03-26 10:44:41 -04:00
David Ormsbee
f5a4ad20aa Merge pull request #17451 from mitodl/fix_outline_aq_course_structure_api
Fixed edX block structure api to load override data
2018-02-28 09:39:09 -05:00
Bill DeRusha
071594392b Merge pull request #17384 from edx/bderusha/zendesk-plugin
zendesk proxy plugin
2018-02-26 17:06:56 -05:00
Bill DeRusha
9611284df0 zendesk proxy plugin 2018-02-26 14:20:32 -05:00
Bill DeRusha
4fba472139 Discssions as a plugin 2018-02-23 09:23:53 -05:00
Amir Qayyum Khan
aa6f88382d Fixed edX block structure api to load override data 2018-02-16 11:10:17 +05:00
Gavin Sidebottom
7f3ffcc047 Changed 'bookmarks' django app to follow plugin pattern 2018-02-01 15:30:06 -05:00
Nimisha Asthagiri
1fe74c889c Django App Plugins: Support for Signal Receivers 2018-01-18 11:47:30 -05:00
Nimisha Asthagiri
70164ff978 Update setup.py with few Django App Plugins 2018-01-11 14:35:07 -05:00
Tomasz Gargas
64c4ae4a7a Add block completion value as optional field in course_blocks.api.
Signed-off-by: Tomasz Gargas <tomasz@opencraft.com>
2017-12-12 14:22:10 +01:00
Gabe Mulley
44e5afba1e Revert "Revert "Merge pull request #16260 from edx/mulby/dynamic-deadline-upgrade-messaging""
This reverts commit b541dfa3fd.
2017-10-24 11:18:06 -04:00
Eric Fischer
b541dfa3fd Revert "Merge pull request #16260 from edx/mulby/dynamic-deadline-upgrade-messaging"
This reverts commit a13595352f, reversing
changes made to 68d5fe8922.
2017-10-20 10:45:40 -04:00
Gabe Mulley
dafeca5770 Change upgrade deadline messaging 2017-10-19 10:59:44 -04:00
Gabe Mulley
6a36eb0183 Use ACE to 'send' Recurring Nudge emails 2017-08-31 16:58:08 -04:00
Andy Armstrong
2842533eb4 Introduce a course_tool plugin entry point and migrate the updates, bookmarks and reviews tools into plugins. 2017-06-23 15:11:28 -04:00
Eric Fischer
f3da0eb5de Implement a naive PartitionScheme for ICRV 2017-05-03 15:21:27 -04:00
Eric Fischer
5c26acc115 Re-kill ICRV block
This reverts commit 1224e341de. I've also added
NotImplementedPartitionScheme, which allows deprecated partition types to have
a valid entry point despite being unusable.

TNL-6675
2017-04-19 15:55:13 -04:00
Diana Huang
196d379cc6 Rename MilestonesTransformer.
Add comment explaining why we can't have a separate transformer.
2017-04-13 14:39:38 -04:00
cahrens
e5035746bf Introduce EnrollmentTrackUserPartition.
TNL-6674
2017-03-30 12:24:48 -04:00