[LTI Provider] WIP: Simple LTI authentication - #8176
Conversation
|
Thanks for the pull request, @mcgachey! I've created OSPR-609 to keep track of it in JIRA. JIRA is a place for product owners to prioritize feature reviews by the engineering development teams. Feel free to add as much of the following information to the ticket:
All technical communication about the code itself will still be done via the Github pull request interface. As a reminder, our process documentation is here. |
|
It looks like there's a single namespace for lti_user_id. I can see how this is great in the case that there's a single pool of users across all the tool consumers, but in environments like edge, this will likely result in collisions and different users accidentally sharing accounts. Should the lti_user_id be scoped by LTI consumer key? |
|
@sarina - sorry; that was https://github.com/edx/edx-platform/pull/8117. |
|
@wmono - that's an excellent point. I'll make the change. |
|
@mcgachey all your tests are failing for reason, |
|
This looks reasonable to me except for the test failures. I'm going to send this one to Dave as well. |
|
@sarina - thanks. I saw the failing tests, but I put this request up to get feedback on the approach rather than as code to be merged (the code's missing any new unit tests as well). I'm planning to close this pull request early next week, and then submit a new one incorporating any feedback. Given that intention, is 'WIP' the right tag to attach to the change? |
|
There are more low-level items I could go into, but the reason it's taking me so long to give feedback is that I'm trying to evaluate how we want it to work at a higher level. Auto create + forced logout is a bit of a kludge, and will skew our stats/analytics. It would be nice to create a virtual user for the purposes of XBlock state management, but without all the Django user baggage (since it only has to live for the context of that LTI interaction). |
|
Do we ever have to preserve problem state from one LTI activation to another? Or are we expected to present a blank slate every time? If it's the former, then maybe extending our existing third-party-auth code would be best. If it's the latter, then we should definitely look at extending the XBlock FieldData code with non-durable storage capabilities. |
|
@cpennington - We will want to preserve state over time. The longer term plan is to integrate with the third-party auth code. |
|
@bradenmacdonald: Is LTI SSO something that will overlap with the SSO work that you are doing for Shib providers? |
|
@mcgachey: Is the code going to be deployed/enabled before you move the auth to the third-party-auth solution? |
|
@cpennington - Yes. There's a larger project underway, headed up by Beth and the UBC folks, to figure out exactly how LTI user management should work. This is a stopgap that meets one specific use case so that we can use the system at Harvard while that work's underway. |
|
@cpennington From this PR it doesn't look like there's overlap, but if/when it's integrated into third_party_auth, then yes there would be. Hopefully my work will make this LTI SSO easier to achieve. It's something I need to look into more as I don't yet have much knowledge of LTI. |
|
@cpennington - I should have mentioned, all of this functionality is behind a feature flag, so while it'll be deployed at Harvard it doesn't have to be deployed anywhere else yet. |
This change cleans up the work in progress request at https://github.com/edx/edx-platform/pull/8176 This is an initial authentication implementation that allows LTI users to log in transparently to edX. The behavior is driven by pilot users at Harvard; this was the most requested feature. The patch creates a new database model that maps users' LTI identifiers to newly-created edX accounts. If an LTI launch comes in with a user_id field that is not in the database, a new edX account is created with a random user name and password. This account is then stored in the database, so that it is permanently associated with the LTI user ID. This patch takes a simplistic approach to session management. If a user is logged in with a different account when they perform an LTI launch, they will be logged out and then re-logged in using their LTI account. In order to keep the patch simple, I have split out some refactoring that needs to be done into a separate branch that I'll post once this has been merged. Since we no longer redirect to the login page, we don't need to maintain two separate LTI endpoints (one for the LTI launch and one for authenticated users), or deal with the session management that requires. There are also multiple fetches of the LtiConsumer object (one in the view, one in the signature validation) that the later patch will consolidate into one.
|
This WIP request has been replaced by https://github.com/edx/edx-platform/pull/8347 |
This is an initial authentication implementation that allows LTI users to log in transparently to edX. The behavior is driven by pilot users at Harvard; this was the most requested feature. The patch creates a new database model that maps users' LTI identifiers to newly-created edX accounts. If an LTI launch comes in with a user_id field that is not in the database, a new edX account is created with a random user name and password. This account is then stored in the database, so that it is permanently associated with the LTI user ID. This patch takes a simplistic approach to session management. If a user is logged in with a different account when they perform an LTI launch, they will be logged out and then re-logged in using their LTI account. In order to keep the patch simple, I have split out some refactoring that needs to be done into a separate branch that I'll post once this has been merged. Since we no longer redirect to the login page, we don't need to maintain two separate LTI endpoints (one for the LTI launch and one for authenticated users), or deal with the session management that requires. There are also multiple fetches of the LtiConsumer object (one in the view, one in the signature validation) that the later patch will consolidate into one. This branch fixes the previous conflicts with the test refactoring carried out in PR 8240.
Hotfix for Aug 20, 2015 * tag 'hotfix-2015-08-20': Fix Forum Update Issue #TNL-3101 Allow user partition version >= current version. HTML-escape uses of course display name. Fixing minimum grade value error ECOM-2109 Allow course staff and privileged users to create multiple teams. Revert "Merge pull request #8724 from Colin-Fredericks/ColinF-partial-credit" Only let global staff (is_staff=True) see the Proctoring tab in the Instructor Dashboard only include JS when feature flag is on and the course has proctoring enabled Validating team size on join, server-side Fix broken test due to two PRs merging Bok choy tests for dynamic updating after team changes. Implement model refreshing for Teams tab Clean i18n directories before validating Show correct error when creating a team. Update translations (autogenerated message) Integration of edx_proctoring into the LMS Remove invite link functionality from teams. fix various style regressions on eComm tab of Instructor dashboard Support filtering team membership remove list margin and padding on cards lists Also pass course_id when fetching memberships for user in team profile view. Fixed accessibility related issues on schedule tab inside CCX coach dashboard Add toggle_login_modal to list of base_application_js. Support leaving a team ziafazal/SOL-1044: Database-Driven Certificate Templates support joining a team Team details page. Fix various team accessibility issues. Improve Teams tab navigation Govern team creation for non-privileged users Team API include correct info when expanding users TNL-2975 Added optional mark_as_read field to comments in Discussion API Make status use ConfigurationModel instead. add more lti logging around oauth (TNL-2980) Support team UI for regenerating certificates Update to latest version of nose. Make status use ConfigurationModel instead. Revert "Optimize OpenID Course Claims for non-global-staff users." Revert "Test library failed to export after import" Added API endpoints for CreditCourse Add more context to translation strings Fix CCX 0002 migration Revert "Revert "Merge pull request #8986 from jazkarta/remove-ccx-enrollment"" Updating video bumper play button SOL-1118 My Teams tab. Style simplification to sync up styles Make new masquerading code compatible to existing session data. Fixed course_id pattern regex. PLAT-776 Test Cale's RC fix. Show vaguer error message if using default start date Use the correct attribute when accessing StudentModuleHistory creation dates Add more information when logging data about differing history and score entries Don't violate the empty-dict vs None semantics of student_module during delete_many Update the version of django-staticfiles OSPR-535 Partial Credit settings.STUDIO_SHORT_NAME doesn't exist in LMS settings.STUDIO_SHORT_NAME doesn't exist in LMS mattdrayer/SOL-981: Integrate edx-organizations application Separate out the Backbone image field Revert "Merge pull request #8986 from jazkarta/remove-ccx-enrollment" Revert "Merge pull request #9241 from mitocw/bdero/readd-ccx-membership-model" Remove Stanford branding from external_auth view Update i18n-tools [LOC-88] Add the CcxMembership model back Emit INFO-level messages when a mode does not have a SKU Update edx reverification block on plateform Handle case of video in a content library with no transcripts. Enable teams and deprecate the advanced setting Update translations (autogenerated message) Test that discussion admins can delete team posts. Fix IE10 issue with delete button. Delete button should not be clickable if in use by a unit. Include coffee dependency files in discussion_js. Allow discussion vendor files to be bundled. Reduce dependency on courseware_js. Strip aways slashes from the asset 'displayname' as they cause export to fail. TNL-2669 MA-1061 Fix IntegrityError caused by race condition in CourseOverview.get_from_id pep8 Initialize signal handler, so we can remove getattr Allow image files to be cached. on clicking Edit of certificate config show prompt Add Bok Choy tests for teams page URL routing. Add Full Country & Language Names to Teams [TNL-2891] No need to install prereqs twice on circleci.com Enforce discussions permissions in teams UI. Allow editing of own post in team discussion updated inline discussion styling to account for lack of expand / show message (which was being relied on for layout) and also removed issues of generic pagination styling impacting the older inline discussion pagination pattern with a class renaming Only verify course access for threads with course context. Show inline discussion component on Team view Ignore more directories to speed up extracting i18n strings. Fixing course settings page for change in minimum grade ECOM-1987 updated the help text for cert_whitelist Should never just link the word 'here' Test library failed to export after import New bok-choy shard (#7). Get circleci configuration working for forks MA-977 Use "supports" decorator on XBlocks for multi-device support Clean up unused CI scripts create a new team certificate edit/delete is only allowed if user is edX PM or certificate is not active Add DataDog histogram events to DjangoXBlockUserStateClient class. Add the creator of a team to that team. Exposing course verification deadline via Commerce API Exposing course name via Commerce API Exposing course verification deadline via Commerce API Add circle configuration We should only add the DjDT urls if it is enabled. SOL-1035 Fixed ORA1 deprecated warning message when a component does not have a `display_name` TNL-2855 Fixed confirmation message display for StaffDebug actions Remove needless 'disable=no-member' pragmas Optimize OpenID Course Claims for non-global-staff users. Remove 'pylint: disable=no-value-for-parameter' that we no longer need. Exposing course name via Commerce API Update pylint and astroid, reduces pylint count by 400 adds back in correct and incorrect styling for annotations problems Make team chat icon appear. Remove unneeded block from courses.html template Remove Mustache usage from discussions Add a test of submission history display Remove remove_input_state.py, as it was one-time fix code, and is not worth porting to the new interface Make DjangoXBlockUserStateClient pass semantic tests Remove extraneous documentation, contracts, and method definitions Add a subclass-implementation of the UserStateClient tests Use the standard enrollment table instead of a custom CCX table for CCX enrollments. Fix forums escaping bug Extend is_commentable_cohorted to support teams ECOM-1947: updated the middleware to exclude the password strings from event logging Removing @contract Correct email settings URL and rename variable. MA-1063 Add versioning and timestamping to CourseOverview CHANGELOG is dead. Allow microsites to use logistration page (ECOM-1976) MA-851: Add access response information into view_course_access Make context for threads more implicit. remove certificates menu if html certs not enabled Update translations (autogenerated message) Bump problem builder version to avoid 500 error from PLAT-772 Ignore team membership for privileged users. Move is_commentable_cohorted to django_comment_client Fix setuptools infinite loop bug triggered by python-saml Upgrade MySQL-python to 1.2.5 Upgrade setuptools to 18.0.1 Deactivate HTTPS on dev and devstack ECOM-1947: updated the middleware to exclude the password strings from event logging Add team permission check on commentable_id. Allow enrollments in expired modes to be deactivated Revert "Remove unnecessary DB call in team pagination." Revert "TNL-394: Fixed the confirmation message" generate diff-coverage report in JS jenkins build Delete null_handler.py Update ICRV version Copy & Styling for Credit messages on Dashboard hide certificate configuration activate/deactivate and delete buttons Initial idea Make email addresses in SAML metadata fully configurable disable course discovery feature by default in devstack. Add New Relic tracing to TeamsListView.get. Add index on CourseTeam name. Add historical course enrollment table. Fixing indicator spacing Fix Django Debug Toolbar circular imports Pin the rc6266 fork release quality fix errors use a universal null handler Revert "a different take" Update testing.rst with info about bok choy accessibility tests Add discussion_topic_id to Team API docstrings switch to using tags Sending focus to modal in CMS a different take ECOM-1817: updated the course name and also styling for the provider add a null signal handler to BulkOperationMixin, remove conditionals Autopublish when vertical is deleted Resolved LogHandler bug in rf6266 Add in-course reverification to advanced components. ECOM-1911: Fixes to credit requirements in Studio. Allow previewing cohorted content when masquerading commerce/api: Don’t allow setting expiration of prof modes. commerce/api: pass expiration_datetime when updating modes Corrected CourseMode Display Name Integrate timed and proctored exam authoring into Studio Simplify birth_year variable Resolved LogHandler bug in rf6266 Thread sort key and direction for discussion api assertTrue should be assertEqual Minor improvements to learner profile tests Fix markdown editor reference link having colon issue TNL-1943 Support thread context for team discussions Fix team count in topic serializers Fixed Flaky test (TestLibraryImport.test_import_timestamp) PLAT-760 Fix flaky test. Respond to code review feedback Pull discussion underscore templates out into individual files ECOM-1916: updated the dispaly Course discovery UI improvements Allow users to submit initial verification at in-course checkpoints. Fix View Live link on Textbooks page in Studio. Bump mongoengine version to 0.10.0 Give teams view error messages focus. commerce/api: Don’t allow setting expiration of prof modes. commerce/api: pass expiration_datetime when updating modes mistaken update of edx_proctoring repo hash update, this was meant for a working branch Update github.txt White-listed course detail API calls Mark CourseTeamPageTest testcase class as flaky Enable faster ModuleStore tests with SharedModuleStoreTestCase. Skipping the failing tests; which are also failing in master Can see if we remove skipIf from video base class. Using youtube api (v3) instead of v2 to get the video duration . Corrected CourseMode Display Name ECOM-1807 Adding personal email in authors file. ECOM-1807 Adding provider thumbnail url. Inserting RTL support Update translations (autogenerated message) mark test_import_timestamp as flaky generate verify_uuid for web based certificates also update caching for eligibility email content and edx-logo ECOM-1525 Optimize test course creation with bulk_operations. allows platform version formatting as a part of static url served by djpyfs update authors Convert to named arguments for localized strings. Delete mention of direction from checkboxgroup. Display rounded problem results. Fix library index test Update edx-oauth2-provider to 0.5.6 Set default value of showanswer to Never since it doesn't work. Redirect to dashboard from non-live courses. Sort the grade cutoffs. Fix conflicting 0004_ migrations on course_overviews Dependency cleanup. Fix TrueFalse responses with single answers. Fix the teams factory spec so it runs. Grading doesn't work for XML courses TNL-2879 Fixed MathJax rendering in problem hint TNL-2857 Skipping the failing tests; which are also failing in master Can see if we remove skipIf from video base class. Using youtube api (v3) instead of v2 to get the video duration . TNL-394: Fixed the confirmation message Add in-course reverification to advanced components. Make active menu highlight in blue. Set the second arg to __init__ for the HeartbeatFailure exception to 'mongo', create a split_mongo connection test ECOM-1911: Fixes to credit requirements in Studio. Post complexity metric to a file for downstream collection. Reset advertised_start field course rerun Integrate timed and proctored exam authoring into Studio Added unanswered/unread query params for thread in discussion api Allow course staff to bypass embargo rules. hiding generated certificate button in case of self paced courses Remove unnecessary DB call in team pagination. Update translations (autogenerated message) A variety of small printing fixes Fix broken Jasmine tests for course discovery Add teams-for-topic list view to Teams page. added incontext option to system message styles for teams Update edx-search, fix lms filter generator and courseware index tests start-date-reset-to-DEFAULT_START_DATE Allow previewing cohorted content when masquerading credit eligibility and payment receipt email MA-834: Add new fields to course enrollments endpoint in mobile API Fix URL trailing slash bug in teams endpoint Add Backbone model and collection for teams. Fixes DOC-841 per multiple requests Update translations (autogenerated message) Separate verification deadline from upgrade deadline Update edx-oauth2-provider to 0.5.5 Update edx-oauth2-provider to 0.5.4 Optimize edxnotes files. Fixup for tests. Better fix for open ended grading. Addressed notes. Add ability to activate a child block via jump_to_id. PLAT-734 Fix slow transaction due to multiple calls to unpickling Clean up some e-commerce strings on the Instructor Dashboard Credit progress page formatting bugfixes. Instead of calculating the course's usage key, just follow the parent chain. Return just the CourseDescriptor in discussions get_course() Cache CcxFieldOverrides on a per-request basis Cache CustomCourseForEdX object lookup per-request Make CcxFactory fill in a coach if one isn't supplied Make request_cache easier to use Optimize search usages. PLA-749 Fix student dashboard for users enrolled in CCX courses Convert cohort JS to use RequireJS. Optimize finish_auth_factory. Optimize account settings and learner profile. Implement RequireJS Optimizer in the LMS Remove modulestore dependency from Enrollment API Additional configuration options for LTI provider feature. Fix test failure due to missing settings import Refactor auth.has_access to auth.user_has_role MA-849: Change has_access return type Fixing footer printing (LMS) Update edx-oauth2-provider to 0.5.4 Fixing spacing within inline Fixing spans inside inline divs Skip test that had a hardcoded date expectation MA-1038 Delete white spaces that are causing test failures Revert "Decorated instructor dashboard with sudo_required." Mark too-flaky test for skipping Disable potentially flaky jasmine tests SOL-1065 TNL-394: Additional testing ECOM-1816: added the provider detail on the receipt page. modify the whitelist cert script to take list of users enable certificate generation for html certificates Update code of get_eligibility api. ECOM-1858 Added DjangoSudo functionality for instructor dashboard and course team page Import missing settings module in tests of commerce views Final tweaks to API documentation updates Update AUTHORS Remove unused includes Support setting email opt-in in calls to the Otto shim Mark basket creation and order retrieval endpoints as v0 Pulling JWT settings from envs tokens Update edx-oauth2-provider to 0.5.3 Reorganize and update API documentation MA-1036 Make CourseOverviews handle malformed grading policies asadiqbal08/SOL-1050: Support split mongo course id for Twitter sharing URL ziafazal/SOL-980: Fix error while generating certificates Remove outdated Analytics scripts, code, and css Add messaging about Insights to Analytics instructor tab Remove everything gated by ENABLE_INSTRUCTOR_ANALYTICS flag Add query count tests asadiqbal08/SOL-1046: Convert LinkedIn anchor tag to button Revert MySQL-python upgrade Revert setuptools upgrade only ddx PM can activate/deactivate or delete certificate configuration new view added "get_provider_detail" for getting provider info with provider_id ECOM-1858 Revert MySQL-python upgrade Revert setuptools upgrade add url link for credit checkout page ECOM-1524 Update lxml to 3.4.4 SOL-974 make index and remove calls use ES bulk API Support setting email opt-in in calls to the Otto shim Custom error messages for delete course command Update edx-ora2 and ease for lxml version compatibility Update edx-ora2 and ease for lxml version compatibility Mark delete certificates test as flaky SOL-1053 Added New page creation animation Added sanitization of id names Added Vedran ziafazal/SOL-1021: Capture additional certificate configuration events updated graded icon indicator to use data-tooltip, font-awesome, plus hides it from screenreaders Allow masquerading as a specific user different from the logged in user. Fix indentation Remove `logging-not-lazy` Pylint violations Pylint logging-format-interpolation: Convert logging calls to use %s formatting Set new Pylint threshold Remove `superfluous-parens` pylint violations Clean up old style class definitions Convert Meta classes to new-style classes Remove Pylint violations `deprecated-pragma`, `bad-option-value` Eliminate instances of `unused-import` Pylint violation add data_dir to bok_choy test settings TNL-2389 Use discussion id map cache for thread creation and update Update student migration 0035 to add a dependency. Mark basket creation and order retrieval endpoints as v0 Update lxml to 3.4.4 TNL-2458 Cache discussion id mapping on course publish Make render_xblock return a 404 if access check fails Remove duplicated Teams app setting. ECOM-1661 removed nav links for logged out states Add context for navigation states added find course to dashboard sidebar and included check for context that Will adds in PR removed nav_course_search context due to design change so replaced with nav_hidden Removed rwd_header.js and all references as no longer being used. address quality violation when removing field from _field_data_cache when rebinding a module to a new user, also remove it from _dirty_fields (TNL-2640) update to course import (TNL-2270) Add a column for release notes in the release.py table bokchoy update update the code as per suggestions Students can share their certificate view on Twitter Visual change to new Hints and Feedback problem types Update translations (autogenerated message) reduce log severity when building marketing links Commerce baskets API supports cross-domain session and OAuth2 authentication pr feedback user menu cleanup Update AUTHORS Updated Commerce API to return CourseMode expiration date Fix for TE-745 LMS now passes JWT issuer and expiration date to ecommerce API client don't install ease in editable mode Don't install nltk in editable mode Use compatible versions of edx-ora2 and ease Use a forked version of NLTK Upgrade distribute to the latest stable version of setuptools Update AUTHORS Update edx-ora2 to release-2015-07-09T14.47. ORA2: Focus and outline styles Mark test as flaky TNL-2704 update bok choy to version 0.4.3 Optimize grading/progress page to reduce database queries (cache max scores). Re-enable the video translation Jasmine tests Custom error message for export course command Update copy for On Demand Cert Download ECOM-1651 Credit Payment - Dashboard States add 'provider_description' field for CreditProvider model ECOM-1842 Fix failed test_course_about_in_cart Upgrade Django 1.4 to the latest point release Revert "edX Course/Library Import/Export API" Revert "Add feature flag for Import/Export API in LMS" Cherrypick hotfix-2015-07-07 into release candidate rc/2015-07-08-mattdrayer: Hide button behind feature flag Corrected path to Commerce API ECOM-1829 Removing the regen link. Fix migrations 0012 and 0013 in the credit app Update edx-oauth2-provider to 0.5.2 Fix a small typo for credit requirements on the progress page. Mark a too-flaky Milestones acceptance test for skipping Remove unused Ruby gems Added more descripted release script message MA-779 Update student dashboard to use CourseOverview MA-779 Make has_access work on CourseOverview objects Disable flaky GroupConfigurationsPage JS test TNL-1475 Fix a pep8 violation update credit eligibility ui text ECOM-1648 TNL-2665 Prevent Taiwan from being translated Make the release script use the primary email from people.yaml [LTI Provider] Refactoring to remove the lti_run method Disable test specs that use old flaky sinon pattern Revert "Update copy for On Demand Cert Download" Update copy for On Demand Cert Download ECOM-1651 add 'fulfillment_instructions' for 'CreditProvider' model + add api method to get credit provider data ECOM-1815 TNL-2165 "play_video" event emitted after seeking forward in a video contains old position Fix the Paver run_all_servers method. Fix hinted login view to be compatible with secondary providers. Revert "edX Course/Library Import/Export API" Revert "Add feature flag for Import/Export API in LMS" mattdrayer/num-queries-fix: Update query value to reflect new reality Use the correct sinon request pattern to avoid flaky tests Remove unused references to AjaxHelpers Cherrypick hotfix-2015-07-07 into release candidate rc/2015-07-08-mattdrayer: Hide button behind feature flag Remove the DjDT profiling panel from devstack.py. It appears to cause horrendeous performance issues, while offering very little benefit. Adding uniqueness to some elements Fix 'stuck in publish issue' when deleting an item after dicarding the changes Corrected path to Commerce API ECOM-1829 Removing the regen link. Fixed misordered settings for devstack environment ECOM-1601: Added the help link of credit info Revert "Adding entries of Call Stack Manager in StudentModule and StudentModuleHistory" Enforcing lowercase currency for CourseMode Creating Zendesk refund notifications via API flag test as flaky Feature flag credit provider messaging on the dashboard. LMS: Modification in enrollment API Improved text in Studio Certificate Configuration Enable CallStackManager on StudentModule and StudentModuleHistory to capture any use outside of DjangoXBlockUserStateClient Fixing aria values and contrast for accessibility Default "Course About" image Fix migrations 0012 and 0013 in the credit app add coveralls Mention Confluence in the README Studio "Schedule & Details" page is broken in IDBx+IDB9x+2015_T2 fixed pagination styles in teams and studio Implement paginated Team Topics UI Add generic paging framework Update translations (autogenerated message) Fixed randomized problems which were not appearing to work. certificate add/update/delete operations permission check Disable ORA 1 tabs in LMS if combinedopeneded is disabled in LMS. Added ability to disable xblock types in LMS. Update comment to match method name. Use new bok-choy with invisible property. Wait for element to not be present. (Compatible with minor bok-choy upgrade.) Add feature flag to skip enrollment start date filtering for course search Fix other temp dirs that are not cleaned up properly Convert some try/finally to addCleanup Correct parent references in one test. Put gitignores for test_root/uploads in one place asadiqbal08/SOL-766: Add Facebook sharing to certificate view mattdrayer/update-num-queries-check: Modify value to reflect improved workflow(s) Add feature flag for Import/Export API in LMS edX Course/Library Import/Export API Credit requirement optimizations ziafazal/SOL-980: Generate certificates from instructor dashboard Update docs for testing common requirejs tests Carol's edits Credit eligibility/provider refactor Mark test as flaky; TNL-2647 fixed trailing white space errors change redirect url from '/accounts/login' to '/login' ECOM-1734 fix pep8 violations Lower pylint threshold to 7000! Support running Studio with optimized assets use 1 coveragerc file to generate 1 coverage report per build Fixed quality report Revert "Fixed randomized problems which were not appearing to work." Fixed pylint line-too-long violations Additional references to "Pending Instructor Tasks" changed Add the Poll XBlock to the requirements and ADVANCED_COMPONENT_TYPES. Remove border from chromeless xblock Fixes header styling issue introduced in SOL-734 (#8389) by reverting heights to what they were before that PR missing quote catch by Christine Mark's edits Add grading spec tests. Fix not being able to set course passing grades above 80%. fixup! removed css comments from _courses.scss, fixed rebase issue which resulted in having only 1 course on tablet (medium) size layouts fix python unit tests search input element styling improvements, test clean up Initial syles cleanup and changes for course discovery on openedx Fixed randomized problems which were not appearing to work. TNL-2551 get_certificate_url should return certificate download_url in case of non html certificates Order of Credit Eligibility line items Fix errors with fetching Shibboleth metadata Added course endpoints for Commerce API Dark lang middleware: Check if user is authenticated Improve logging of ecommerce interactions Add Albert Liang to AUTHORS TNL-2623 Fix bug where status icons were hidden in image response problems Add missing comma to tuple give the header the right height in the verify flow ECOM-1808 Fix XBlock class loading in local resource view Handle dates have year smaller than 1900 Display warning message on course outline in Studio when course contains deprecated features/components Improve screen reader user experience on logistration page Remove "instructor" label or change to "Admin" generic and Team card/listing FED Fix: users without course creation permission were not shown new library form update xblock only to mark field values as dirty if they've changed (TNL-2475) Fixes DOC-1957 Fix login/logout errors caused by unicode cookie names Allow group_id to be set in discussion API Make resetting of attempts and student state on blocks recursive. Delete unused student_profile code (WIP profile). Update translations (autogenerated message) Fix i18n paver command wrt cleanup Responsive Homepage Hero, Header, Footer ECOM-1597 adding signals to update min-grade requirement. New course cannot be started till web certificate is active Don't i18n test files Update i18n-tools to latest version fix for instr dash and wiki responsive New Hinted Login View - PR 8591 New provider config options, New Institution Login Menu - PR 8603 Bump python-social-auth and python-same to upstream's latest master - PR 8599 Asynchronous metadata fetching using celery beat - PR 8518 New SAML/Shibboleth tests - PR 8518 Use ConfigurationModels for third_party_auth, new metadata fetching - PR 8155 SAML2 third_party_auth provider(s) - PR 8018 Put a timeout on poling for codeinput and matlab problems. Set Courseware Search to False in default devstack, because it doesn't work Dark language should stay set until explicitly cleared. [LTI Provider] Added an authentication backend to log in LTI users Regression test: dark lang stays set through multiple pages Add i18n roundtrip regression tests for language pref and dark lang Replace deprecated 'django_language' key with LANGUAGE_SESSION_KEY Add i18n regression tests (LOC-72, LOC-85) dark_lang: only allow released langs in accept header LOC-72, LOC-85 Store released dark_lang codes as all lower-case Port django.utils.translation.trans_real.parse_accept_lang_header from Django 1.8 Port django.middleware.locale.LocaleMiddleware from Django 1.8 Fix hint-problem tab bug TNL-2542 Consolidating merge from rebase Sample more frequently, and always record unexpected cache misses Improve the structure cache metrics with a course context, more standardized from_cache tag, and compression sizes Fix XBlock inheritance ordering. XBlockMixin and derivatives should always come after XBlock and derivatives Making background pictures printable mattdrayer/fix-progress/template: Improved web certificates support removing extra bold font-weight (800) from style rules/typeface files removing unnecessary typeface file formats + adding optimized .woff2 formats fix the source_version xblock after discard changes Accept string-encoded timestamps Make credit provider callback CSRF exempt Remove restrictions on library creation in Studio PHX-40 added the sorting of the most popular coupon codes used. MA-879 Fix bug in course_start_datetime_text Fixes DOC-1715, video doc is now in the correct RTD project Pass XBlock parents down to their children when constructing them, for caching Include stack traces when counting calls in unit tests Gracefully handle credit provider keys with unicode type LMS: revising and minimizing font-face calls Studio: revising and minimizing font-face calls mattdrayer/SOL-449: Add flaky decorator to bok choy test Fix flaky test_import_timestamp test. Update Bok Choy to use optimized static assets Reverification flow asks for permission to use the webcam twice Adding dependency for edx-user-state-client Make the user info cookie secure Update credit eligibility Update URL when switching between Team tabs. Fix flaky test. User info cookie Shorten long lines to resolve pylint issues Fix misleading enrollment API documentation split common/lib and js unit tests into separate shards Move forgot_password_modal to login.html. Credit Eligibility display on the CMS accessibility issues ECOM-1524: Display credit availability on the dashboard add tests for structure cache use default cache for tests add test for when cache isn't configured add test for dummy cache noop if no cache found Cache SplitMongo course structures in memcached. Add abuse flagging to discussion API Remove unused setting. Delete files that have no references to them. Remove duplicate logged-in-cookie helper methods pass debug option through to compile_sass don't use hardcoded date in verification email test XCOM-416: Embargo restrictions are now enforced during logistration Add followed thread retrieval to discussion API Set a minimum number of Xblock constructions in field override tests Update bok-choy version Switch tabs to use ugettext_noop for titles. Fixes tests, adds internationalized strings for new state tooltips, corrected tooltip javascript, etc. ECOM-1772 Due date issue test case fixed. Cache SplitMongo course structures in memcached. MA-776 change UserCourseEnrollmentsList endpoint to use course_overviews MA-772 create app course_overviews for caching course metadata Add new testing decorator check_mongo_calls_range Correct logistration GET parameter preservation test case Fix JS tests that broke due to a conflict between merges mattdrayer/ECOM-1773: Fixed invalid URL reversal Revert "Merge pull request #8402 from edx/sarina/annotate-middleware" Respond to code review feedback. ECOM-1772 Due date issue test case fixed. Update the format of the credit provider timestamp. Reverification iOS support and refactor Remove Hints tab from Studio Use RequireJS Optimizer for content libraries Updates the XBlock utilsrequirement to the latest Remove hinting templates as 'tab:' definition fails on Split Fixed two paly_video events emitted on video replay. TNL-2166 Iniital refactor of capa styling for basic checkbox and multiple choice problem types, including additional comments to sass styles fix problems with multi-seat purchases when accessibility review was completed Upgrade rednose to latest to fix bad output. Credit eligibility requirements display on student progress page Learner profile Location and Language fields Accessibility issues ECOM-1772 Due date issue test case fixed. Fix flaky test. SOL-975 I18N needs to not include the string substitution Adding call stack manager adjust margin-bottom on courseware with license Make course tab refreshing safer. Updated Payment Buttons fixup! Enforce MAX_COMMENT_DEPTH in discussion_api Add editable_fields to discussion API responses Handle whitespace-only content in discussion API fix price per seat Update translations (autogenerated message) ECOM-1673 removed class and icon to always show full upsell content. removed JavaScript function specific to the upsell toggle removed bok choy test Removed all referenced to toggleExpandMessage() Wrap course structure generation task in bulk operation. Fix CRI-9 so third_party_auth pipeline always completes, and consolidate auto-enrollment code Changes for compatibility with latest python-social-auth (0.2.7) MA-844 Video Upload: remove dependency on AssetMetaDataStore. Re-nest for the signal-sending, then un-nest. Change publish signal test to reflect new behavior. Enforce MAX_COMMENT_DEPTH in discussion_api Fix SEARCH_ENGINE set logic in settings files Treat aggregate sums of None as 0 Make a11y test inherit from a base class Fix discussion_api to handle old threads Update edx-milestones Github reference TNL-1893 Teams Topic Card SOL-939 Jasmine Tests Add rendered_body to discussion API endpoints Extended Feedback and Hints for Problems Improve cohort test TNL-2291 Add caching to discussion forum permissions Update bok-choy cached db with latest migrations Disable lineage traversal when no providers are specified in OverrideFieldData Add enable_ccx to the suite of override performance checking tests Only enable the OverrideFieldData when there are active overrides on a course. compile sass in quiet mode unless debug=True Revert "Update bok-choy version and move to base.txt" Ensure noseid dir exists when running tests Add professional enrollments to the instructor dashboard. Make edxmako cache properly with changing lookup paths Lower pylint threshold to 7100 Add background to focused labels for cleaner display Improve support for right to left languages add Richard Moch to AUTHORS set .response-header-actions block to absolute position to allow overlap with title Add text_search parameter to discussion API SOL-994 fix js loading if search features disabled Display error message on ORA 1 components in units in Studio. update reverification block version to fix error for 'skip_reverification' service method ECOM-1738 Add comment voting to discussion API Fix typo in Instructor dashboard UI text Update studio templates to remove fieldset and legend tags Fix modal css to be hidden immediately Remove extra lean modal trigger update edx-search hash to include faceted search first wave cleanup of fixed width at page level in LMS ECOM-1494 deleting models from database through new migrations. Ensure that is_hidden does not affect equality checks. Certificates: addressing a11y feedback Executive Summary Report update the ICRV requirments status Update bok-choy version and move to base.txt Add discussion API course endpoint ECOM-1683 removing regen-cert code. Removing element selectors PR feedback and receiept template updates modernize the dashboard button styles Fixed the empty list price issue. Added columns to the CC purchases report. (added Qty and Total Discount. Moved the Total Amount to the last index). Coupon code report. PR feedback Display Eligibility table on progress page remove in-memory files LMS: Modification in enrollment API Add a11y test for lms student dashboard Jasmine test runner for files in common using RequireJS. Correct issue for RequireJS optimizer. Convert to RequireJS text for templates Create a common paginated list view Fix bug in discussion API comment update Clear all caches before measure FieldOverride performance Reduce the number of queries when walking parents in MongoModuleStore by avoiding cache misses on the data due to missing runs Measure XBlock instantiations in FieldOverride performance tests Allow check_sum_of_calls to measure methods as well as pure functions Better simulate a request happening in the LMS in FieldOverride performance tests certificates event tracking Delay constructing the set of mongo calls until they're needed Use the more abstract api for parsing UsageKeys in mongo/base.py Make RequestCache.clear_request_cache a classmethod Add CCX SQL query/mongo read tests Add Sven Marnach to the AUTHORS file. Add feature flag to allow hiding the discussion tab for individual courses. Add i18n regression tests (LOC-72, LOC-85) dark_lang: only allow released langs in accept header LOC-72, LOC-85 Store released dark_lang codes as all lower-case Port django.utils.translation.trans_real.parse_accept_lang_header from Django 1.8 Port django.middleware.locale.LocaleMiddleware from Django 1.8 Deprecate course details API v0 Increasing contrast in course nav accordions Update translations (autogenerated message) MIT CCX: Use CCX Keys: further revisions in response to code review Prevent duplication of tabs with different names. Log an exception before swallowing it in a KeyValueMultiSaveError Don't pass in a user object to DjangoUserStateClient Convert access to StudentModuleHistory to use the UserStateClient API. ECOM-1724 a11y footer updates Fix flaky lettuce test. TNL-1452 Make addCleanup idempotent. This change cleans up the work in progress request at #8176 MA-725 responsive_ui indication on responsive xBlocks. MA-792 Course Blocks and Navigation API (user-specific) Video module support for student_view_json. Make RequestCache reusable Specified number of mongo and split calls in xblock outline handler test with ddt. PLAT-674 add name param check_transcripts show credit eligibility requirements in studio ECOM-1591 MIT CCX: Use CCX Keys - responses to code review MIT CCX: Use CCX Keys Revert "[LTI Provider] Basic LTI authentication" Avoid POSTing unnecessary payment processor parameter In bulk_operations() exit, emit signals at the end. Added comment deletion in the discussion API Payment button UI modifications Receipt page now also handles Cybersource payment failures. Add comment endorsement to discussion API Add myself to AUTHORS Add comment editing to discussion API Credit provider integration Python API Flag test as flaky. See SOL-975 Removed IsAuthenticatedOrDebug Web Certs: adjusting base/honor-code rendering to only hide staff signatures TNL-1907 Implement Course Team Membership API tidying up loose ends from sass compilation to css dir change mattdrayer/SOL-449: Remove @skip decorator Remove V2 of the EdX.org footer Remove unused code left over from ECOM-188. ECOM-1644 minor message updation. Fixes bug with app links in new footer Fixed slow transaction on xblock outline handler. TNL-2425 Fix for flaky behavior in cohort search tests. TNL-2362 Payment button UI modifications Fix updating immutable request dictionary. SOL-971 ECOM-1494 removing models only. Add jasmine tests for ccx schedule code. revising expected output paths for Django Pipeline Added includes_expired parameter to enrollment API mattdrayer/SOL-952: Update default URLs and add backwards migration BUGFIX: CCX icon FA4 conversion BUGFIX: fix FA4 conversion for a few icons Profile Images API doc Move _creative-commons.scss into elements directory transcript name param url Moved Creative Commons CSS into Sass Update testing.rst move lms edx notes tests to shard_4 Use dicts when defining JSON Update testing.rst Updating account_settings_url for bulk emails. Removing course_title from email subject. Fix flaky lettuce test. TE-572. ECOM-1644 Implementing course-access roles. PLAT-643 Fixed cms course export [LTI Provider] Fix bug preventing unenrolled users from accessing content UX-2011: adding print-based styles for Open edX web certs Use parent_id returned from the comments service move bok choy studio split tests to shard_2 move bok choy video license tests to shard_2 move bok choy discussion tests to shard_2 Added delete thread in discussion api Refactor and merge CourseViewType and CourseTab. Improve README for openedx directory TNL-1891 Browse Teams: Category Subnavigation Removing conflict from header Fixing test to match CSS add ccx-keys as a dependency of edx ECOM-1572 implementing code to new branch. Tweaked names of badge events. linda adding name to authors file Credit provider integration Python API Update github.txt to use a tag instead of a commit unskip acid xblock tests DOC: Finalize Help targets, sidebar text for certificates don’t trigger a refund request in otto, if otto requested unenrollment. Correct deactivation logic in enrollment api and test. Allow multiple external_link tabs for one course. Bump edx-submissions hash to latest version. update edx-search commit reference (SOL-835) Addressing flakiness of the reindex acceptance test make courses.html also honor the ENABLE_COURSE_DISCOVERY feature flag Default to filestorage when S3 isn't configured (aws.py) refactored code to make certificate PDF generation optional asadiqbal08/SOL-961: Student-generated certificate flow shows "download" certificate button Skip test that has become too flaky. SOL-449. mattdrayer/SOL-947: Refactor Web/HTML certificate URL patterns Allow released languages to be previewed under dark lang Fix self-paced badge naming. Use Django 1.4 @ensure_csrf_cookie method PLAT-664 Add thread voting to discussion API Change name of section from Sales to Course Seat Purchases Update translations (autogenerated message) Fixed youtube video was not loading even youtube is available. TNL-2361 Add ability to follow a thread in discussion API MA-722 Render xBlock API Support Follow imports order guidelines. Set up Credit Provider Model www.stage.edx.org is our Drupal site Flag test as flaky. SOL-449 Flag test as flaky. TNL-2386 mattdrayer/SOL-953: Remove Mako UNDEFINED overrides asadiqbal08/SOL-946: Remove default value for course title override ECOM-1684 updated footer styles in line with Marketing requests TNL-1652: Allow instructors to obtain CSV file listing students who may enroll in a course but have not signed up yet. Enable VAL URLs even when mobile API is disabled Add Tim Krones to AUTHORS. handle more exceptions for file uploading TNL-1900 Implement teams header component Add thread editing to discussion API Removing uppercase requirement Reducing size of error message heading Learners don't need to be lean Add tests for enrollment deactivation under various modes. add Xiaolu's name Change the misleading doc string (str doesn't has attr 'name' ) Adding myself to AUTHORS DOC-2044 Fixing factor-of-ten error Add metrics around all split-mongo database operations measuring count, duration, and approximate size Fixed wiki pointing to old course's wiki in rerun courses. TNL-2314 Bug - Unicode character in tab number shouldn't return 500 #TNL-2055 update tests to match text changes Disabled CSRF Validation for checkout cancel page Add student bio max_length to migrations. Update enrollment code confirmation emails Update Instructor Dashboard UI text for enrollment codes Update UI text for Saudi e-commerce features on the Instructor Dashboard disable contracts that were breaking capa problems on devstack (TNL-2343) [LTI Provider] Basic LTI authentication time how long imports take in datadog base teams space (template) and create team form SOL-916 Add ability to query, enable, disable, unredeem Enrollment Codes Update XBlock dependency to use the merged commit from the edx repo [LTI Provider] Bugfix in LtiConsumer handling code TNL-1897 Implement Course Team API Centering text in sign in button vertically Group imports together in Mako templates add script for jenkins to run accessibility tests Expose EDXNOTES_PUBLIC_API/EDXNOTES_INTERNAL_API Added Christopher Lee to authors list MA-642 Add topic_id query to discussion/thread api fix tolerance rounding error (TNL-904) use 'name' field in 'CreditRequirement' model to save the location of xblocks 'pause_video' event should emit in addition to the 'stop_video' when user watches the video completely (For Youtube videos) Add support for edX namespaced define. 2.0.14 version of requiresjs/text Add teams tab SOL-536 Experiment-Aware content search set default on is_entrance_exam Updated AUTHORS Allow for keyed ConfigurationModels + New Admin UI [LTI Provider] Use LTI Outcome Service to pass back scores Fix for flaky library users studio test, SOL-618 Convert all tabs to the new plugin framework. Analytics events for badges. Allow sharing of badges through the certificate web view. Implement OpenBadge Generation upon Certificate generation through Badgr API SOL-236 Manual Enrollments Add extensible course view types for edX platform Add additional "reason" field to CreditRequirementStatus Overall Grade Range in Grading does not show consistant view when grades are removed Added ccx enable/disable flag to advance settings and show hide ccx coach option on lms Delete unused methods. Fix simplifiable-range pylint warnings. Update edx_lint to latest, with range checker Remove table of contents Replacing top border on footer Updated LTI render courseware test ECOM-1592: code refactoring don't assume in the ORM query a single RegCodeRedemption per enrollment record No indication the photo was taken ECOM-1592: Adding incourse reverification as a credit requirement in course New Feature: Certificates Web View Avoid loading all users for "reviewing user" on the verify_student admin page. Translate error message for unsupported file format Add JSON response to auto_auth with anonymous_id Enable the browser's spellcheck in tinymce PR feedback ECOM-1678: Fix broken footer image URLs when using a CDN. handle more exceptions for file uploading use reverification xblock location as an identifier of reverification checkpoint ECOM-1612 Prevent Django admin from loading all users for verify student models. (SOL-883) RTL support for Registration Code redemption page Course Discovery - Language Filtering Course Discovery feature using edx-search Internationalize help text Add correct_or_past_due option for showanswer help text (ref bbeb79cb) Use platform name, not edX, in all strings Add Video Bumper. fix quality violation Revert "Fieldset and legend solution is lost when edit Problem" Revert "changes for failing label test" Make clean_history.py use the StudentHistoryModule django model. fixup! Enable HTML in note tags and support highlighting Wrap _invoke_xblock_handler in a bulk_op. Update translations (autogenerated message) Allow specification of ReadPreference via DOC_STORE_CONFIG. Use a MongoReplicaSetClient for Split modulestore, but only if replicaSet config is set. Add comment creation to discussion API Removing background-image from button hovers Add fake Arabic testing language Fix credit requirement "criteria" name SOL-839 confirmation and receipt page internationalization Suppress email for refunds unless mode is verified. Use publicly-accessible ecommerce URL root when constructing refund email Fix bug when student scoring error occurs with no message. TNL-2269 Compute language direction every time. ECOM-1339 minor CSS tweaks for the footer. It now extends the full width of the browser and fixes issues with link hover states. Accessibility tweaks and patching RTL Revert "i18n lon-capa problem explanation title" Use publicly-accessible ecommerce URL root when constructing refund email ECOM-1339 Branding API footer Calculator a11y issues ECOM-1590: added the min_grade as a requirements Initial chromeless template Allow course creation after deletion at same URL Ignore migrations in coverage reports Add timestamp value test [LTI Provider] Documentation fix Move generic mobile API view decorators. Logging invalid key errors Addressing review comments Minor update to video_outline API. Add UI acceptance test Add cancel() on object interface Add "following" parameter to thread creation added line with variable declarations to stop these being global, removed a bit of spurious whitespace at the end of another line MA-738 OAuth2 token exchange for session cookie. ECOM-1494 removing code from models. Improvements on error handling + misc PR feedback Fix XSS vulnerability in User Profile. fix verification widget layout on dashboard Add thread creation to discussion API Add an explicit accessibility test TE-890 Update translations (autogenerated message) Minor refactoring Fix documentation comment for enrollment API Continue to Payment button is not accessible TNL-2223 Inline discussion jumps to the bottom of the page when thread is expanded. Add framework for testing the effects of modulestore operations on OLX. Add tests for all course-changing operations from the ModuleStoreDraftAndPublished interface. Enforce the OLX format of draft and published items for those ops. Use jshint in paver, include in builds. SOL-794 Detailed Enrollment Report - added the abstract and concrete layers of enrollment report provider - created a celery task. -added the button in the e-commerce reports section Revert "Enable PyContracts during tests" Load creative-commons icon CSS on RTL pages boostrapper -> bootstrapper Allow CourseAboutFactory to be used without django by explicitly passing in a modulestore Add timestamp on success step + refactoring Add moment.js fixed invalid CSS selectors (SOL-837) Added RTL support to payment page Update commit hash for problem-builder. ECOM-1472: js nitpick fixes Fixed call to refund creation endpoint Fully enable licensing on devstack Expose `EDXNOTES_INTERFACE` from configuration Add comment list URLs to discussion api threads ECOM-1600 fixing certs button issue. added jasmine tests for focusing on and scrolling to newly added textbook Implement student-initiated refunds for external commerce service. Add endorsement fields to comment list API Bumped xblock-utils version ECOM-1472: js nitpick fixes Add ability to specify starting dir for bok-choy tests ECOM-1472: fixed the tab issue for taking photo Add jshint npm package. Add __len__ to FieldDataCache Standardize on triple double-quotes for docstrings Improve documentation of courseware.model_data Record valid scopes when raising InvalidScopeError Make the use of StudentModules explicit in variable names in user_state_client.py Use a specialized method to clean up DjangoKeyValueStore Add contracts to DjangoXBlockUserStateClient interface methods Add a test case for an XBlock that has no student state fields, but sets a score Use DjangoXBlockUserStateClient to implement UserStateCache Move query-chunking into StudentModule and related ORM-objects ECOM-1590 adding new field in advance_settings. Remove the ability to `select_for_updates` from FieldDataCache. Use current OpaqueKeys methods when loading a block for the XQueue callback Clarify the interface used by xqueue_callback to load an XBlock Inline some private methods in UserStateCache Add implementation of get_many and set_many to DjangoXBlockUserStateClient Add more documentation to XBlockUserStateClient interface Enforce user-state only for StudentModule backend Client Add an empty implementation of XBlockUserStateClient backed by StudentModule Reorder methods in UserStateCache Flatten DjangoOrmFieldCache methods into UserStateCache Add a last_modified method to FieldDataCache Add a temporary set_grade method to the FieldDataCache and UserStateCache Use per-type cache set_many calls in FieldDataCache set_many Push `get` down into per-type caches Implement per-type set methods in terms of set_many methods Make test_model_data test_set_many_failure slightly more robust Push `set_many` save() calls into per-type caches Push `set_many` object creation down into per-type caches Add more documentation to DjangoOrmFieldCache Inline find_or_create Move `has` logic down into per-scope caches Move `delete` logic down into per-scope caches Move the logic from `find` into the methods that use it Push `has` down into FieldDataCache from DjangoKeyValueStore Push `delete` down into FieldDataCache from DjangoKeyValueStore Push `set_many` down into FieldDataCache from DjangoKeyValueStore Push `get` down into FieldDataCache, from DjangoKeyValueStore Push cache_key transformations inside the cache objects Extract common django-orm-backed-cache functionality Stop leaking private _data members from per-scope caches Store cache objects, rather than dictionaries generated by cache objects Extract _all_block_types and _all_usage_keys out of cache class Separate caching for particular fields from instantiating the cache Change the central cache to store at two levels: first by scope, then by cache key Move field_object -> cache_key transformations to the scope-specific caches Push field_object iteration inside _retrieve_fields, and rename to _cache_fields Extract cache instantiation into classes per-scope Extract query chunking from FieldDataCache Add the candidate XBlockUserStateClient interface Enable PyContracts during tests Fix cyclic import in pavelib need to urlencode the course_id when constructing the registration redirect query string Add comment list endpoint to Discussion API fix for broken course status label on outline page added myself to AUTHORS Update overview.rst [LTI Provider] Refactoring and clean-up scroll to newly created section and make first input element active on creation of a new textbook in the textbooks list page (fix for https://openedx.atlassian.net/browse/TNL-130) ECOM-1590 adding models for credit eligibility. Update devops in requirement file comments Supply default url for XQA server Update student notes eventing for tags. Create email message only when it will be sent Added Randy Ostler to AUTHORS MAYN-65 fixed the bug, removed the redemption table entry when the item is expired from the user cart changes for failing label test Fieldset and legend solution is lost when edit Problem Allow enrollment API to deactivate enrollments Skip test. TNL-1590 Remove unused css Passing full name to E-Commerce API Default course license to All Rights Reserved Courseware license (Creative Commons): FED Make courseware licenses show up in Studio XBlock previews Creative Commons: Accessibility improvements Wrap block with license info in LMS only Move LicenseMixin into VideoFields class Added a simple XBlockMixin for courseware licenses Skip flaky test. SOL-618. Display Scope.content fields in Studio editor Refactor discussion API to use DRF serializer Move Discussion API access control checks updated dashboard html to remove rebase bug which displayed the username to learners ECOM-1547 created new template and Sass file for new footer. Wrapped it in a feature flag and updated previously named footer-edx-new.html to footer-edx-v2.html to better track/name updates to the footer going forward. ECOM-1547 removed data-updated attributes from body ECOM-1548 added JS file that inits analytics event listener and makes ajax call to API to get footer and HTML and add it to the DOM ECOM-1547 code review cleanup ECOM-1547 rebase and Sass appraoch update after @talbs the IE9 killer slayed the mighty beast. ECOM-1547 updated file names and added comments in light of @talbs review of PR ECOM-1547 update to social media link styles and nav link order ECOM-1547 updated SOCIAL_MEDIA_FOOTER_NAMES if ENABLE_FOOTER_V3 is true ECOM-1547 added translations to screenreader text ECOM-1547 fixed test and renamed files in line with @talbs's pending PR ECOM-1547 cleaned up file naming Ensure GA events have a course label if available Add Richard Moch to AUTHORS i18n lon-capa problem explanation title MAYN-68 fixed the bug, total credit card purchases amount does not include the bulk purchases. update xml The SAMPLE feature flag is not used anywhere Remove MathPlayer message add more detailed comment about exit status SOL-495 Cohort-Aware content search LMS: removing now unnecessary IE-specific _ie.scss Sass partial Studio: renaming Sass/CSS files for consistency and clarity LMS: renaming Sass/CSS files for consistency and clarity Enable HTML in note tags and support highlighting clean up all-tests.sh script Complete printing cleanup, rebased into one ECOM-1471 Hiding the text. lightened harshness of dashboard modal styling Conflicts: CHANGELOG.rst cms/djangoapps/contentstore/tests/test_course_settings.py cms/djangoapps/contentstore/utils.py cms/djangoapps/contentstore/views/component.py cms/djangoapps/contentstore/views/tabs.py cms/djangoapps/models/settings/course_details.py cms/envs/aws.py cms/envs/common.py cms/static/cms/js/require-config.js cms/static/js/models/settings/course_details.js cms/static/js/views/settings/main.js cms/static/sass/_base.scss cms/static/sass/elements/_header.scss cms/templates/js/add-xblock-component-menu-problem.underscore cms/templates/widgets/header.html common/djangoapps/student/models.py common/djangoapps/student/tests/tests.py common/djangoapps/student/views.py common/djangoapps/third_party_auth/provider.py common/lib/capa/capa/responsetypes.py common/lib/capa/capa/templates/choicegroup.html common/lib/capa/capa/tests/test_files/extended_hints_checkbox.xml common/lib/capa/capa/tests/test_files/extended_hints_with_errors.xml common/lib/capa/capa/tests/test_hint_functionality.py common/lib/xmodule/xmodule/capa_base.py common/lib/xmodule/xmodule/course_module.py common/lib/xmodule/xmodule/css/capa/display.scss common/lib/xmodule/xmodule/js/fixtures/video.html common/lib/xmodule/xmodule/js/fixtures/video_all.html common/lib/xmodule/xmodule/js/fixtures/video_html5.html common/lib/xmodule/xmodule/js/fixtures/video_no_captions.html common/lib/xmodule/xmodule/js/fixtures/video_yt_multiple.html common/lib/xmodule/xmodule/js/spec/capa/display_spec.coffee common/lib/xmodule/xmodule/js/spec/problem/edit_spec_hint.coffee common/lib/xmodule/xmodule/js/src/capa/display.coffee common/lib/xmodule/xmodule/js/src/video/01_initialize.js common/lib/xmodule/xmodule/js/src/video/03_video_player.js common/lib/xmodule/xmodule/tabs.py common/lib/xmodule/xmodule/templates/problem/checkboxes_response_hint.yaml common/lib/xmodule/xmodule/templates/problem/multiplechoice_hint.yaml common/lib/xmodule/xmodule/templates/problem/numericalresponse_hint.yaml common/lib/xmodule/xmodule/templates/problem/optionresponse_hint.yaml common/lib/xmodule/xmodule/templates/problem/string_response_hint.yaml common/lib/xmodule/xmodule/tests/test_tabs.py common/lib/xmodule/xmodule/video_module/video_module.py common/test/acceptance/pages/lms/problem.py common/test/acceptance/tests/lms/test_lms_problems.py lms/djangoapps/branding/tests/test_page.py lms/djangoapps/branding/views.py lms/djangoapps/bulk_email/tasks.py lms/djangoapps/certificates/management/commands/ungenerated_certs.py lms/djangoapps/certificates/queue.py lms/djangoapps/certificates/views.py lms/djangoapps/class_dashboard/dashboard_data.py lms/djangoapps/courseware/access.py lms/djangoapps/courseware/module_render.py lms/djangoapps/courseware/tabs.py lms/djangoapps/courseware/tests/test_access.py lms/djangoapps/courseware/tests/test_module_render.py lms/djangoapps/courseware/tests/test_video_mongo.py lms/djangoapps/courseware/views.py lms/djangoapps/dashboard/sysadmin.py lms/djangoapps/dashboard/tests/test_sysadmin.py lms/djangoapps/django_comment_client/forum/tests.py lms/djangoapps/instructor/tests/test_api.py lms/djangoapps/instructor/utils.py lms/djangoapps/instructor/views/api_urls.py lms/djangoapps/instructor/views/instructor_dashboard.py lms/djangoapps/instructor_analytics/tests/test_basic.py lms/djangoapps/instructor_task/api.py lms/djangoapps/instructor_task/tasks.py lms/djangoapps/instructor_task/tasks_helper.py lms/djangoapps/instructor_task/tests/test_api.py lms/djangoapps/instructor_task/tests/test_tasks.py lms/djangoapps/instructor_task/tests/test_tasks_helper.py lms/djangoapps/lti_provider/tests/test_views.py lms/djangoapps/mobile_api/testutils.py lms/djangoapps/student_account/views.py lms/djangoapps/verify_student/tests/test_views.py lms/envs/aws.py lms/envs/common.py lms/static/coffee/src/instructor_dashboard/data_download.coffee lms/static/js/spec/views/fields_spec.js lms/static/js/student_account/views/account_settings_factory.js lms/templates/courseware/course_navigation.html lms/templates/courseware/courses.html lms/templates/courseware/courseware.html lms/templates/courseware/progress.html lms/templates/dashboard.html lms/templates/dashboard/_dashboard_course_listing.html lms/templates/instructor/instructor_dashboard_2/send_email.html lms/templates/main_django.html lms/templates/navigation.html lms/templates/student_account/account_settings.html lms/templates/sysadmin_dashboard.html lms/templates/video.html requirements/edx/github.txt
This is an initial implementation that allows LTI users to log in transparently to edX. The behavior is driven by pilot users at Harvard; this was the most requested feature.
The diff creates a new database model that maps users' LTI identifiers to newly-created edX accounts. If an LTI launch comes in with a user_id field that is not in the database, a new edX account is created with a random user name and password. This account is then stored in the database, so that it is permanently associated with the LTI user ID.
This patch takes a brute-force approach to session management. If a user is logged in with a different account when they perform an LTI launch, they will be logged out and then re-logged in using their LTI account.
The diff is a little messy since it builds on the code in PR https://github.com/edx/edx-platform/pull/8117. When that is merged I will rebase to clean things up. In the absence of any suggestions for improvement, I'll submit a full PR for this feature on June 1st.