Commit Graph

54 Commits

Author SHA1 Message Date
Jesper Hodge
8c9be5478a fix cms api route details (#33346)
This fixes the routes and swagger details for the experimental CMS API. (The swagger-ui is available under studio.edx.org/cms-api/ui and the schema file at studio.edx.org/cms-api/schema.) Only change that practically affects the routes is that you need to use PUT instead of POST for updates usually, now.
2023-09-28 12:57:31 -04:00
Jesper Hodge
cd2ce32d73 CMS API serializers and validations (#33316)
Internal ticket: https://2u-internal.atlassian.net/browse/TNL-11077

This adds validations to all new CMS API endpoints via serializers.

Validations follow the "strong parameter" concept:
https://www.mintbit.com/blog/securing-ruby-on-rails-applications-part-3-use-strong-parameters#:~:text=Strong%20parameters%20are%20a%20feature,parameters%20to%20a%20controller%20action.
2023-09-22 17:49:49 -04:00
Jesper Hodge
f197f9e61e add swagger for CMS API via drf-spectacular (#33282)
This adds two new urls: `<studio-base>/cms-api/ui` and `<studio-base>/cms-api/schema` with swagger ui and swaggerfile only for the new CMS API using drf-spectacular
2023-09-19 21:06:40 +00:00
ruzniaievdm
3978375abf feat: create course home api DRF (#33173) (#33204) 2023-09-08 08:39:31 -04:00
connorhaugh
901ac926bd Revert "feat: create course home api DRF (#33173)" (#33194)
This reverts commit e480a79d9c. as it failed final checks before prod: 
https://github.com/openedx/edx-platform/actions/runs/6098198385/job/16548257136
2023-09-07 13:22:53 +00:00
ruzniaievdm
e480a79d9c feat: create course home api DRF (#33173) 2023-09-06 10:05:25 -04:00
ruzniaievdm
b84d45410c feat: add api for help tokens (#33073) 2023-08-23 09:48:16 -04:00
ruzniaievdm
ddb092c07c feat: Create DRF for course team (#32782) 2023-08-17 09:12:02 -04:00
Usama Sadiq
4ee5964855 fix: fix django4 deprecation warnings (#32957) 2023-08-16 14:39:49 +05:00
Kristin Aoki
69cab96714 feat: remove 403 for disabled advanced settings (#32906) 2023-08-03 19:52:34 +00:00
ruzniaievdm
0d93075a01 fix: api for schedule and details page MFE page (#32890) 2023-08-03 11:41:52 -04:00
Jesper Hodge
6598abbb6b Studio content api videos (#32803)
* refactor: extract methods to video_storage_handlers

* refactor: move private functions

* refactor: move functions to videos_storage_handlers

* refactor: asset_storage_handlers

* feat: add video api views

* feat: add video urls

* feat: add mock videos post

* refactor: mock video upload url

* fix: json extraction

* fix: url pattern for video deletion

* fix: video url views

* fix: lint

* fix: lint

* fix: tests

* fix: tests

* fix: tests

* Feat  studio content api transcripts (#32858)

* feat: add transcript endpoints

feat: add transcript upload endpoint, check that transcripts for deletion exist

fix: remove transcript credentials view cause out of scope

* fix: lint

* feat: TNL-10897 fix destroy() args to kwargs bug

---------

Co-authored-by: Bernard Szabo <bszabo@edx.org>

---------

Co-authored-by: Bernard Szabo <bszabo@edx.org>
2023-07-31 13:37:00 -04:00
Kristin Aoki
948f23a011 feat: return denied when waffle flag disabled (#32795) 2023-07-24 12:32:53 -04:00
Jesper Hodge
7fc32f80b8 add assets to studio content api (#32676)
The purpose of this is to expose the assets_handler endpoint as a public endpoint as part of the studio content API MVP. This allows a course author to register an oauth application in django admin and then retrieve, create and delete assets with this endpoint. You can only update the "locked" attribute for an asset.
2023-07-20 14:18:11 -04:00
Jesper Hodge
96f1397872 Refactor rename contentstore xblock services (#32581)
This PR addresses the renaming of the contentstore/xblock_services folder to contentstore/xblock_storage_handlers as a follow-up to PR #32282. The renaming is done to prevent naming conflicts with xblock runtime services and to make the purpose of the files more understandable. The file xblock_service.py has been renamed to view_handlers.py to better reflect its functionality.

Justification and Future Refactoring Outlook:
The xblock_storage_handlers folder contains service methods that implement the business logic for view endpoints located in contentstore/views/block.py. It is renamed to xblock_storage_handlers to reflect its responsibility of handling storage-related operations of xblocks, such as creation, retrieval, and deletion.

The view_handlers.py file includes business methods called by the view endpoints. These methods, such as handle_xblock, delete_orphans, etc., interact with the required modulestore methods, handle any errors, and aggregate and serialize data for the response.

The term 'handler' in the context of 'view_handlers.py' represents methods that facilitate business logic for view endpoints. It is critical to note the distinction between these 'handler methods' and the xblock_handler method. The xblock_handler is a view endpoint itself, residing in contentstore/views/block.py, and is well known in this context. Although its name might suggest otherwise, it is not a handler in the sense of the 'handler methods' we've defined in 'view_handlers.py'. To maintain consistency with existing naming conventions, it remains as xblock_handler.
2023-07-05 11:24:24 -04:00
Jesper Hodge
a6c57811cd feat add xblock api endpoint (#32282)
* feat: add xblock endpoint for updating an xblock

fix: remove debugger

feat: make function call more generic

refactor: just use request.json for request data as before

refactor: extract method

fix: revert wrong method change

fix: refactor correct method

feat: use handle_xblock method so that we can do more than update xblocks

fix: usage_key_string defaults to None

add all CRUD operations

fix usage key parameter

refactor: create /views folder

refactor: move xblock view functions to xblock_services

fix: tests

fix: tests

refactor: move xblock API endpoint to contentstore

* docs: add explanatory comment to new xblock_service

* feat: add feature flag for enabling content editing api

* feat: raise 404 if studio content api is disabled

* tests: test xblock endpoint

* test: make all post tests work

* test: check that xblock_handler receives correct args

* refactor: create util mixin for course factories with staff

* refactor: extract course staff authorization tests

* refactor: extract tests to api view testcase class

* test: add get tests

* test: fix tests

* test: fix tests

* test: fix tests

* test: add all crud tests

* fix: refactor to fix tests

* fix: merge conflict

* fix: merge conflict

* fix: tests after merge

* fix: json request decorator

* fix: lint

* fix: lint

* fix: lint

* fix: lint

* fix: new test files

* fix: lint

* fix: lint and apply PR suggestions

* fix: lint

* fix: lint

* fix: lint

* fix: lint

* fix: lint

* fix: lint
2023-06-15 14:17:49 -04:00
Kristin Aoki
6f90724fb6 feat: update tab_handler to include blockId (#32392) 2023-06-13 15:41:47 -04:00
ruzniaievdm
dea67f29c4 feat: Create DRF for course grading (#32399) 2023-06-09 10:52:30 -04:00
ruzniaievdm
96b8ba5d6a feat: Create DRF for course settings and course details views out of current Django views (#32397) 2023-06-08 11:07:29 -04:00
ruzniaievdm
a6ce487827 feat: Extending API functionality for proctoring errors (#32331) 2023-05-31 14:00:09 -04:00
Arunmozhi
d417a7561f refactor: rename ItemFactory to BlockFactory 2023-01-23 14:47:47 +01:00
0x29a
83396ffb07 refactor: convert course_module term to course_block 2022-12-19 17:48:49 +01:00
0x29a
0df1411636 refactor: xmodule/course_module.py -> xmodule/course_block.py 2022-12-19 17:48:49 +01:00
alangsto
92b60f11b2 feat: add lti proctoring provider option (#30950) 2022-09-08 13:53:23 -04:00
Kshitij Sobti
8169aa99da fix: if pages and resources view is disabled, show all pages in studio (#30550)
In a previous PR #28686, the ability to see and enable/disable wiki and progress tabs was removed from studio along with the ability to re-order non-static tabs. The ability to toggle the Wiki tab was moved to the pages and resources section of the course authoring MFE. If that MFE is unavailable this means there is no way to show/hide the Wiki. This reverts some of the old changes if the pages and resources view is disabled.
2022-06-28 21:19:32 +05:00
Simon Chen
895cc10c1b fix: do not validate proctoring_provider if proctoring is disabled (#29803)
Co-authored-by: Simon Chen <schen@edx-c02fw0guml85.lan>
2022-01-21 12:45:43 -05:00
Jawayria
7f5b4a6a47 chore: removed 'wrong-import-order' from disabled imports (#29365)
* chore: removed 'wrong-import-order' from disabled imports
2022-01-06 19:14:51 +05:00
Jawayria
0e63c20f64 chore: Applied lint-amnesty on cms/djangoapps/contentstore 2021-12-10 19:20:37 +05:00
Kshitij Sobti
e8e8f4acbe feat!: Change the way tabs are ordered [BD-38] [TNL-9174] [BB-5076] (#29262)
* feat!: Change the way tabs are ordered
The change imposes a new ordering for tabs based on their new priority. When reordering tabs, this ordering will be maintained.

* fix: Apply suggestions from code review

Co-authored-by: Farhaan Bukhsh <farhaan@opencraft.com>

* fix: review feedback

Co-authored-by: Farhaan Bukhsh <farhaan@opencraft.com>
2021-11-22 11:17:30 +05:00
M. Zulqarnain
e54fb5f76e feat: New codemods on CMS (#28768) 2021-10-25 12:59:54 +05:00
Tinuade Adeleke
706df06638 feat: updated pages to the new custom pages design (#28686)
made changes to pages template
refactored method to handle reordering of static tabs
refactored test for the refactored method
added link to the pages and resources MFE on the updated page
2021-10-21 20:06:22 +05:00
Usama Sadiq
95427251dc fix: fixed pylint warnings 2021-10-21 09:54:22 -04:00
Kyle McCormick
9bf266f717 fix: add missing __init__.py files 2021-10-21 09:54:22 -04:00
Kshitij Sobti
3e05e0f49b feat: add support for enabling/disabling the wiki app (#28889)
Currently the wiki app can't be enabled or configured. This change allows enabling/disabling the wiki app which effectively hides/shows the wiki tab.
2021-10-07 11:04:03 +05:00
Usama Sadiq
484cd536e2 fix: Fixed new pylint warnings (#28724) 2021-09-23 17:54:04 +05:00
Kshitij Sobti
8cf751a405 feat: Add REST APIs for course advanced settings and course tabs
This commit adds new APIs that allow MFEs to modify a course's advanced settings
and to update tab settings to show/hide/move tabs.
2021-08-31 11:11:46 +05:00
Kyle McCormick
d42b0c401d refactor: normalize xmodule imports
Code in ./common/lib/xmodule/xmodule should
be imported as `from xmodule`, since `xmodule`
is a locally-installed package.

This is weird, but as long as it is the case,
we should be consistent.

(In BOM-2584, I propose moving the files to
 ./xmodule, which would quell this confusion.)
2021-06-07 16:36:38 -04:00
Bianca Severino
52f0bcb4f9 fix: require create_zendesk_tickets field 2021-06-01 15:37:40 -04:00
alangsto
5bfc790014 fix: allow instructors to modify zendesk ticket setting (#27512)
MST-362. Previously instructors were unable to modify the zendesk ticket field, although that field should change based on the proctoring provider. This backend change allows course instructors to modify the field so that it is appropriate for whateverproctoring provider they choose.
2021-05-05 12:04:53 -04:00
stvn
22fb1ec124 refactor: Move InstructorFactory helper to common/ 2021-04-14 07:26:39 -07:00
stvn
5dd8302d8b refactor: Move GlobalStaffFactory helper to common/ 2021-04-14 07:26:39 -07:00
Ahtisham Shahid
f3a62b5f89 Error message for proctor exam show to user (#27238)
* Error message for proctor exam visible to user

* Created exception class for Invalid Proctor settings
2021-04-07 10:46:19 +05:00
M. Zulqarnain
5562944e87 BOM-2369 (A): pyupgrade on api,contentstore and cms_user_tasks apps under CMS (#26676)
* pyupgrade on cms api,contentstore and cms_user_tasks apps
2021-03-04 15:06:07 +05:00
Kyle McCormick
151bd13666 Use full names for common.djangoapps imports; warn when using old style (#25477)
* Generate common/djangoapps import shims for LMS
* Generate common/djangoapps import shims for Studio
* Stop appending project root to sys.path
* Stop appending common/djangoapps to sys.path
* Import from common.djangoapps.course_action_state instead of course_action_state
* Import from common.djangoapps.course_modes instead of course_modes
* Import from common.djangoapps.database_fixups instead of database_fixups
* Import from common.djangoapps.edxmako instead of edxmako
* Import from common.djangoapps.entitlements instead of entitlements
* Import from common.djangoapps.pipline_mako instead of pipeline_mako
* Import from common.djangoapps.static_replace instead of static_replace
* Import from common.djangoapps.student instead of student
* Import from common.djangoapps.terrain instead of terrain
* Import from common.djangoapps.third_party_auth instead of third_party_auth
* Import from common.djangoapps.track instead of track
* Import from common.djangoapps.util instead of util
* Import from common.djangoapps.xblock_django instead of xblock_django
* Add empty common/djangoapps/__init__.py to fix pytest collection
* Fix pylint formatting violations
* Exclude import_shims/ directory tree from linting
2020-11-10 07:02:01 -05:00
Kyle McCormick
a3deb6e317 Sort imports in cms/
Command: `isort --recursive cms/`
2020-10-19 09:34:31 -04:00
Kyle McCormick
538dbf696b Import CMS code using fully qualified module names
or, using proper the proper Python 3 relative imports
(e.g., 'from .views import x') which are standard and
unambiguous.
2020-10-19 09:34:31 -04:00
alangsto
458b8b14ce added override settings for test (#24777) 2020-08-13 15:46:54 -04:00
alangsto
1f5b1e6c4d Removed waffle flag for proctoring backend advanced setting (#24606)
* remove waffle flag for proctoring providers

removed waffle flag

removed tests

updates for requested changes

corrected mistake

Add edX Django Rest Framework Extensions CSRF App URLS to Studio

MST-334 Make sure the CSRF hooks are in INSTALLED_APPS on Studio (#24607)

ENT-2894: Use new welcome template when redirected from enterprise proxy login view (#24587)

* using new welcome template when redirected from enterprise proxy login view

* enabling safe redirects to enterprise learner portal from login in devstack

* ading admin portal to login redirect whitelist

* running make upgrade to version bump edx-enterprise

fix(i18n): update translations

Updating Python Requirements

[REV-1257] Add upsell tracking for upgrading all programs button on program dashboard (#24589)

Added upsell tracking to the course upgrade all button on the program dashboard so we have a better understanding of when users are clicking our upsell links.

POST proctored exam settings (#24597)

allow blank escalation email (#24613)

[BD-10] Remove _uses_pattern_library property from EdxFragmentViews (#24536)

[BD-10] remove edx-pattern-library from JS bundles (#24165)

Co-authored-by: Sankar Raj <sankar.raj@crystaldelta.com>

Make the ExperimentWaffleFlag respect course masquerading when checking if it's active for a specific enrollment

[REV-1205] Add doc location comment so future devs can easily find it  (#24615)

AA-204: passing correct section information to frontend to complete outline portion of tab

AA-204: adding tests

AA-204: fixed up documentation and tests

[BD-10] Remove uses bootstrap method  (#24535)

Remove pattern library of certificate styles.

update search description on new search string (#24619)

* update search description on new search string

* disable xss-lint rule for jquery.html

make comment more general, to allow for future changes (#24618)

[BD-10] [DEPR-92] Remove pattern library of pavelib folder (#24591)

[BD-10] [DEPR-92] Remove directories that includes pattern-library. (#24602)

Add SSO Records endpoint for support tools

Bucket users regardless of enrollment in courseware MFE experiment

Updating Python Requirements

Change the default value of allow_proctoring_opt_out (#24626)

MST-333

ENT-3143: display message banner guiding user to their enterprise LP if enabled (#24625)

* display message banner guiding user to their enterprise LP if enabled

* adding new sass class name to use same styling as recovery email alert

Add "Source from library" XBlock

This lets the user import a block from a blockstore-based content library into a (modulestore based) course, by copying the block into the course.

Revert "[BD-10] [DEPR-92] Remove pattern library of certificate styles." (#24633)

Revert "[BD-10] [DEPR-92] Remove directories that includes pattern-library. (#24602)"

This reverts commit e4f28debb7.

Revert "[BD-10] [DEPR-92] Remove pattern library of pavelib folder (#24591)" (#24635)

This reverts commit 6980291d96.

allow plus or minus one (#24637)

geoip2: update maxmind geolite country database

fix keyerror with request.session (#24642)

* fix keyerror with request.session

* improve the conditional

AA-127: Created MFE Outline Tab Waffle Flag

Note: The team settled on raising a 404 when the waffle flag is disabled.
Upon receiving the 404, the frontend will redirect to the LMS.

Fixes session caching for enterprise portal links by only caching for auth'd learners

BUG: fixes for saml provider config/data lookup

Fix xss in edit member template

Fix xss while rendering file-upload

Fix xss in date

Fix xss in base site template

* revert

* removed from test_views
2020-08-13 11:37:17 -04:00
Michael Roytman
2e4bfecc6c Merge pull request #24663 from edx/mroytman/MST-345-proctoring-escalation-email-empty
mroytman/mst 345 proctoring escalation email empty
2020-08-05 11:33:25 -04:00
Michael Roytman
5b4527097b change proctoring_escalation_email serializer to not be required and to allow null to better align with the underlying data model and use case 2020-08-04 13:16:44 -04:00