diff --git a/common/djangoapps/third_party_auth/tests/specs/base.py b/common/djangoapps/third_party_auth/tests/specs/base.py
index 6d2b347913..685341ce81 100644
--- a/common/djangoapps/third_party_auth/tests/specs/base.py
+++ b/common/djangoapps/third_party_auth/tests/specs/base.py
@@ -9,6 +9,7 @@ from contextlib import contextmanager
import mock
from django import test
+from django.conf import settings
from django.contrib import auth
from django.contrib.auth import models as auth_models
from django.contrib.messages.storage import fallback
@@ -24,6 +25,7 @@ from lms.djangoapps.commerce.tests import TEST_API_URL
from openedx.core.djangoapps.user_authn.views.login import login_user
from openedx.core.djangoapps.user_authn.views.login_form import login_and_registration_form
from openedx.core.djangoapps.user_authn.views.register import RegistrationView
+from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
from openedx.core.djangoapps.site_configuration.tests.factories import SiteFactory
from openedx.core.djangoapps.user_api.accounts.settings_views import account_settings_context
from common.djangoapps.student import models as student_models
@@ -125,8 +127,14 @@ class HelperMixin(object):
"""Asserts failure on /login for inactive account looks right."""
self.assertEqual(400, response.status_code)
payload = json.loads(response.content.decode('utf-8'))
+ context = {
+ 'platformName': configuration_helpers.get_value('PLATFORM_NAME', settings.PLATFORM_NAME),
+ 'supportLink': configuration_helpers.get_value('SUPPORT_SITE_LINK', settings.SUPPORT_SITE_LINK)
+ }
+
self.assertFalse(payload.get('success'))
self.assertIn('inactive-user', payload.get('error_code'))
+ self.assertEqual(context, payload.get('context'))
def assert_json_failure_response_is_missing_social_auth(self, response):
"""Asserts failure on /login for missing social auth looks right."""
diff --git a/common/static/data/geoip/GeoLite2-Country.mmdb b/common/static/data/geoip/GeoLite2-Country.mmdb
index 65ce56d11b..03aec34786 100644
Binary files a/common/static/data/geoip/GeoLite2-Country.mmdb and b/common/static/data/geoip/GeoLite2-Country.mmdb differ
diff --git a/lms/djangoapps/commerce/api/v1/tests/test_views.py b/lms/djangoapps/commerce/api/v1/tests/test_views.py
index 1155dbf90c..78c1f3dc93 100644
--- a/lms/djangoapps/commerce/api/v1/tests/test_views.py
+++ b/lms/djangoapps/commerce/api/v1/tests/test_views.py
@@ -175,7 +175,7 @@ class CourseRetrieveUpdateViewTests(CourseApiViewTestMixin, ModuleStoreTestCase)
self.assertIsNone(VerificationDeadline.deadline_for_course(self.course.id))
# Generate the expected data
- verification_deadline = datetime(year=2020, month=12, day=31, tzinfo=pytz.utc)
+ verification_deadline = datetime(year=2030, month=12, day=31, tzinfo=pytz.utc)
expiration_datetime = datetime.now(pytz.utc)
response, expected = self._get_update_response_and_expected_data(expiration_datetime, verification_deadline)
diff --git a/lms/static/js/ccx/schedule.js b/lms/static/js/ccx/schedule.js
index a7e4426727..2dea84f42d 100644
--- a/lms/static/js/ccx/schedule.js
+++ b/lms/static/js/ccx/schedule.js
@@ -59,8 +59,9 @@ var edx = edx || {};
if (chapter_location !== 'none') {
var chapter = self.find_unit(self.hidden, chapter_location);
self.sequential_select.html('')
+ // xss-lint: disable=javascript-jquery-append, javascript-concat-html
.append('')
- .append(self.schedule_options(chapter.children));
+ .append(self.schedule_options(chapter.children)); // xss-lint: disable=javascript-jquery-append
self.sequential_select.prop('disabled', false);
$('#add-unit-button').prop('disabled', false);
// When a chapter is selected, start date fields are enabled and due date
@@ -81,8 +82,9 @@ var edx = edx || {};
var chapter = self.chapter_select.val(),
sequential = self.find_unit(self.hidden, chapter, sequential_location);
self.vertical_select.html('')
+ // xss-lint: disable=javascript-jquery-append, javascript-concat-html
.append('')
- .append(self.schedule_options(sequential.children));
+ .append(self.schedule_options(sequential.children)); // xss-lint: disable=javascript-jquery-append
self.vertical_select.prop('disabled', false);
self.set_datetime('start', sequential.start);
self.set_datetime('due', sequential.due);
@@ -175,14 +177,15 @@ var edx = edx || {};
});
// schedule_template defined globally in ccx\schedule.html
/* globals schedule_template */
- this.$el.html(schedule_template({chapters: this.showing}));
+ this.$el.html(schedule_template({chapters: this.showing})); // xss-lint: disable=javascript-jquery-html
$('table.ccx-schedule .sequential,.vertical').hide();
$('table.ccx-schedule .unit .toggle-collapse').on('click', this.toggle_collapse);
// Hidden hover fields for empty date fields
$('table.ccx-schedule .date button').each(function() {
if ($(this).text().trim() === gettext('Click to change')) {
+ // xss-lint: disable=javascript-jquery-html, javascript-concat-html
$(this).html('Set date ' +
- gettext('Click to change') + '');
+ gettext('Click to change') + ''); // xss-lint: disable=javascript-concat-html
}
});
@@ -218,8 +221,9 @@ var edx = edx || {};
if (this.hidden.length) {
// Populate chapters select, depopulate others
this.chapter_select.html('')
+ // xss-lint: disable=javascript-jquery-append, javascript-concat-html
.append('')
- .append(self.schedule_options(this.hidden));
+ .append(self.schedule_options(this.hidden)); // xss-lint: disable=javascript-jquery-append
this.sequential_select.html('').prop('disabled', true);
this.vertical_select.html('').prop('disabled', true);
$('form#add-unit').show();
diff --git a/lms/static/js/verify_student/views/make_payment_step_view.js b/lms/static/js/verify_student/views/make_payment_step_view.js
index 97083a12ac..bc6d06a1f8 100644
--- a/lms/static/js/verify_student/views/make_payment_step_view.js
+++ b/lms/static/js/verify_student/views/make_payment_step_view.js
@@ -114,7 +114,7 @@ var edx = edx || {};
}
// render the name of the product being paid for
- $('div.payment-buttons span.product-name').append(
+ $('div.payment-buttons span.product-name').append( // xss-lint: disable=javascript-jquery-append
self._getProductText(templateContext.courseModeSlug, templateContext.upgrade)
);
@@ -128,6 +128,7 @@ var edx = edx || {};
} else {
// create a button for each payment processor
_.each(processors.reverse(), function(processorName) {
+ // xss-lint: disable=javascript-jquery-append
$('div.payment-buttons').append(self._getPaymentButtonHtml(processorName));
});
}
@@ -197,7 +198,7 @@ var edx = edx || {};
type: 'hidden',
name: key,
value: value
- }).appendTo($form);
+ }).appendTo($form); // xss-lint: disable=javascript-jquery-insert-into-target
});
// Marketing needs a way to tell the difference between users
diff --git a/openedx/core/djangoapps/user_authn/exceptions.py b/openedx/core/djangoapps/user_authn/exceptions.py
index d4abc4377e..5f50f95051 100644
--- a/openedx/core/djangoapps/user_authn/exceptions.py
+++ b/openedx/core/djangoapps/user_authn/exceptions.py
@@ -10,18 +10,19 @@ class AuthFailedError(Exception):
message.
"""
def __init__(
- self, value=None, redirect=None, redirect_url=None, error_code=None
+ self, value=None, redirect=None, redirect_url=None, error_code=None, context={},
):
super(AuthFailedError, self).__init__()
self.value = Text(value)
self.redirect = redirect
self.redirect_url = redirect_url
self.error_code = error_code
+ self.context = context
def get_response(self):
""" Returns a dict representation of the error. """
resp = {'success': False}
- for attr in ('value', 'redirect', 'redirect_url', 'error_code'):
+ for attr in ('value', 'redirect', 'redirect_url', 'error_code', 'context'):
if self.__getattribute__(attr):
resp[attr] = self.__getattribute__(attr)
diff --git a/openedx/core/djangoapps/user_authn/views/login.py b/openedx/core/djangoapps/user_authn/views/login.py
index 88fa606cd6..9e7a023c96 100644
--- a/openedx/core/djangoapps/user_authn/views/login.py
+++ b/openedx/core/djangoapps/user_authn/views/login.py
@@ -175,7 +175,13 @@ def _log_and_raise_inactive_user_auth_error(unauthenticated_user):
profile = UserProfile.objects.get(user=unauthenticated_user)
compose_and_send_activation_email(unauthenticated_user, profile)
- raise AuthFailedError(error_code='inactive-user')
+ raise AuthFailedError(
+ error_code='inactive-user',
+ context={
+ 'platformName': configuration_helpers.get_value('PLATFORM_NAME', settings.PLATFORM_NAME),
+ 'supportLink': configuration_helpers.get_value('SUPPORT_SITE_LINK', settings.SUPPORT_SITE_LINK)
+ }
+ )
def _authenticate_first_party(request, unauthenticated_user, third_party_auth_requested):
diff --git a/requirements/constraints.txt b/requirements/constraints.txt
index 8d3ab07da4..75b7bf00c0 100644
--- a/requirements/constraints.txt
+++ b/requirements/constraints.txt
@@ -38,7 +38,7 @@ drf-yasg<1.17.1
# The team that owns this package will manually bump this package rather than having it pulled in automatically.
# This is to allow them to better control its deployment and to do it in a process that works better
# for them.
-edx-enterprise==3.16.2
+edx-enterprise==3.16.3
# We expect v2.0.0 to introduce large breaking changes in the feature toggle API
edx-toggles<2.0.0
diff --git a/requirements/edx-sandbox/base.in b/requirements/edx-sandbox/base.in
deleted file mode 100644
index 327a83b895..0000000000
--- a/requirements/edx-sandbox/base.in
+++ /dev/null
@@ -1,32 +0,0 @@
-# Packages to install in the Python sandbox for secured execution of code provided by course authors.
-#
-# DON'T JUST ADD NEW DEPENDENCIES!!!
-#
-# If you open a pull request that adds a new dependency, you should:
-# * verify that the dependency has a license compatible with AGPLv3
-# * confirm that it has no system requirements beyond what we already install
-# * run "make upgrade" to update the detailed requirements files
-
-
-# We pin things specifically in this file beacuse we want to be very explicit about
-# updating dependencies to the sandbox since they can impact how custom response code is run.
-# We can then use constraints.txt to constrain any sub-dependencies that may need to be held back.
-
-
--c ../constraints.txt
-
--r shared.txt # Dependencies in common with LMS and Studio
-chem # A helper library for chemistry calculations
-matplotlib==2.2.4 # 2D plotting library
-numpy==1.16.5 # Numeric array processing utilities; used by scipy
-pyparsing==2.2.0 # Python Parsing module
-random2==1.0.1 # Implementation of random module that works identically under Python 2 and 3
-scipy==1.2.1 # Math, science, and engineering library
-sympy==1.4 # Symbolic math library
-git+https://github.com/edx/openedx-calc.git@e9b698c85ad1152002bc0868f475f153dce88952#egg=calc==0.4
-
-# Install these packages from the edx-platform working tree
-# NOTE: if you change code in these packages, you MUST change the version
-# number in its setup.py or the code WILL NOT be installed during deploy.
--e common/lib/sandbox-packages
--e common/lib/symmath
diff --git a/requirements/edx-sandbox/base.txt b/requirements/edx-sandbox/base.txt
deleted file mode 100644
index 74a6a6accb..0000000000
--- a/requirements/edx-sandbox/base.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# This file has been frozen for the benefit of Python 2.7 sandboxes, and
-# "make upgrade" no longer updates it. It can be removed once that
-# version of the sandbox is no longer run in production. Before removal,
-# the configuration repository needs to be updated to use the new file:
-# https://github.com/edx/configuration/blob/master/playbooks/roles/edxapp/defaults/main.yml#L1628
-# Also, this change needs to be announced and communicated to partners
-# before implementation.
-#
-common/lib/sandbox-packages
-common/lib/symmath
-backports.functools-lru-cache==1.6.1 # via matplotlib
-git+https://github.com/edx/openedx-calc.git@e9b698c85ad1152002bc0868f475f153dce88952#egg=calc==0.4
-cffi==1.13.2
-git+https://github.com/edx/openedx-chem.git@ff4e3a03d3c7610e47a9af08eb648d8aabe2eb18#egg=chem==1.0.0
-cryptography==2.8
-cycler==0.10.0 # via matplotlib
-ipaddress==1.0.23
-kiwisolver==1.1.0 # via matplotlib
-lxml==3.8.0
-markupsafe==1.1.1
-matplotlib==2.2.4
-networkx==1.7
-nltk==3.4.5
-numpy==1.7.2
-pycparser==2.19
-pyparsing==2.2.0
-python-dateutil==2.8.1 # via matplotlib
-pytz==2019.3 # via matplotlib
-random2==1.0.1
-scipy==0.14.0
-singledispatch==3.4.0.3
-six==1.13.0
-subprocess32==3.5.4 # via matplotlib
-sympy==0.7.1
-
-# The following packages are considered to be unsafe in a requirements file:
-# setuptools
diff --git a/requirements/edx-sandbox/py35.in b/requirements/edx-sandbox/py35.in
index 886354cd8c..eccc5a8605 100644
--- a/requirements/edx-sandbox/py35.in
+++ b/requirements/edx-sandbox/py35.in
@@ -15,15 +15,15 @@
-c ../constraints.txt
-r shared.txt # Dependencies in common with LMS and Studio
-chem
+chem # A helper library for chemistry calculations
matplotlib==2.2.4 # 2D plotting library
networkx==2.2 # Utilities for creating, manipulating, and studying network graphs
numpy==1.16.5 # Numeric array processing utilities; used by scipy
-openedx-calc
+openedx-calc<2.0.0
pyparsing==2.2.0 # Python Parsing module
random2 # Implementation of random module that works identically under Python 2 and 3
scipy==1.2.1 # Math, science, and engineering library
-sympy==1.6.2 # Symbolic math library
+sympy==1.6.2 # Symbolic math library
# Install these packages from the edx-platform working tree
# NOTE: if you change code in these packages, you MUST change the version
diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt
index 0b91a36d3b..bc92b1fb3f 100644
--- a/requirements/edx/base.txt
+++ b/requirements/edx/base.txt
@@ -98,7 +98,7 @@ edx-django-release-util==0.4.4 # via -r requirements/edx/base.in
edx-django-sites-extensions==2.5.1 # via -r requirements/edx/base.in
edx-django-utils==3.13.0 # via -r requirements/edx/base.in, django-config-models, edx-drf-extensions, edx-enterprise, edx-rest-api-client, edx-toggles, edx-when, ora2, super-csv
edx-drf-extensions==6.2.0 # via -r requirements/edx/base.in, edx-completion, edx-enterprise, edx-organizations, edx-proctoring, edx-rbac, edx-when, edxval
-edx-enterprise==3.16.2 # via -c requirements/edx/../constraints.txt, -r requirements/edx/base.in
+edx-enterprise==3.16.3 # via -c requirements/edx/../constraints.txt, -r requirements/edx/base.in
edx-event-routing-backends==2.0.0 # via -r requirements/edx/base.in
edx-i18n-tools==0.5.3 # via ora2
edx-milestones==0.3.0 # via -r requirements/edx/base.in
diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt
index 9d50f1809b..0b6f9ff37b 100644
--- a/requirements/edx/development.txt
+++ b/requirements/edx/development.txt
@@ -109,7 +109,7 @@ edx-django-release-util==0.4.4 # via -r requirements/edx/testing.txt
edx-django-sites-extensions==2.5.1 # via -r requirements/edx/testing.txt
edx-django-utils==3.13.0 # via -r requirements/edx/testing.txt, django-config-models, edx-drf-extensions, edx-enterprise, edx-rest-api-client, edx-toggles, edx-when, ora2, super-csv
edx-drf-extensions==6.2.0 # via -r requirements/edx/testing.txt, edx-completion, edx-enterprise, edx-organizations, edx-proctoring, edx-rbac, edx-when, edxval
-edx-enterprise==3.16.2 # via -c requirements/edx/../constraints.txt, -r requirements/edx/testing.txt
+edx-enterprise==3.16.3 # via -c requirements/edx/../constraints.txt, -r requirements/edx/testing.txt
edx-event-routing-backends==2.0.0 # via -r requirements/edx/testing.txt
edx-i18n-tools==0.5.3 # via -r requirements/edx/testing.txt, ora2
edx-lint==1.6 # via -r requirements/edx/testing.txt
diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt
index 2f4e6486c0..f2bef8af58 100644
--- a/requirements/edx/testing.txt
+++ b/requirements/edx/testing.txt
@@ -106,7 +106,7 @@ edx-django-release-util==0.4.4 # via -r requirements/edx/base.txt
edx-django-sites-extensions==2.5.1 # via -r requirements/edx/base.txt
edx-django-utils==3.13.0 # via -r requirements/edx/base.txt, django-config-models, edx-drf-extensions, edx-enterprise, edx-rest-api-client, edx-toggles, edx-when, ora2, super-csv
edx-drf-extensions==6.2.0 # via -r requirements/edx/base.txt, edx-completion, edx-enterprise, edx-organizations, edx-proctoring, edx-rbac, edx-when, edxval
-edx-enterprise==3.16.2 # via -c requirements/edx/../constraints.txt, -r requirements/edx/base.txt
+edx-enterprise==3.16.3 # via -c requirements/edx/../constraints.txt, -r requirements/edx/base.txt
edx-event-routing-backends==2.0.0 # via -r requirements/edx/base.txt
edx-i18n-tools==0.5.3 # via -r requirements/edx/base.txt, -r requirements/edx/testing.in, ora2
edx-lint==1.6 # via -r requirements/edx/testing.in