Skip to content
Snippets Groups Projects
Unverified Commit 1ec2e797 authored by Cory Lee's avatar Cory Lee Committed by GitHub
Browse files

Revert "pyupgrade on static_templates, staticbook and support apps (#26646)" (#26685)

This reverts commit a235425a.
parent 9dc6ab1c
No related branches found
No related tags found
No related merge requests found
Showing
with 92 additions and 88 deletions
......@@ -37,10 +37,10 @@ class MarketingSiteViewTests(TestCase):
"""
Test the about view with the header and content set in SiteConfiguration.
"""
test_header = "Very Unique Test Header"
test_content = "Very Unique Test Content"
test_header_key = 'static_template_about_header'
test_content_key = 'static_template_about_content'
test_header = u"Very Unique Test Header"
test_content = u"Very Unique Test Content"
test_header_key = u'static_template_about_header'
test_content_key = u'static_template_about_content'
response = None
configuration = {test_header_key: test_header, test_content_key: test_content}
with with_site_configuration_context(configuration=configuration):
......@@ -52,10 +52,10 @@ class MarketingSiteViewTests(TestCase):
"""
Test the about view with html in the header.
"""
test_header = "<i>Very Unique Test Header</i>"
test_content = "<i>Very Unique Test Content</i>"
test_header_key = 'static_template_about_header'
test_content_key = 'static_template_about_content'
test_header = u"<i>Very Unique Test Header</i>"
test_content = u"<i>Very Unique Test Content</i>"
test_header_key = u'static_template_about_header'
test_content_key = u'static_template_about_content'
response = None
configuration = {test_header_key: test_header, test_content_key: test_content}
with with_site_configuration_context(configuration=configuration):
......@@ -85,7 +85,7 @@ class MarketingSiteViewTests(TestCase):
resp = self.client.get(url)
self.assertContains(
resp,
'There has been a 500 error on the <em>{platform_name}</em> servers'.format(
u'There has been a 500 error on the <em>{platform_name}</em> servers'.format(
platform_name=settings.PLATFORM_NAME
),
status_code=500
......
......@@ -46,7 +46,7 @@ for key, value in settings.MKTG_URL_LINK_MAP.items():
if '.' not in template:
# Append STATIC_TEMPLATE_VIEW_DEFAULT_FILE_EXTENSION if
# no file extension was specified in the key
template = f"{template}.{settings.STATIC_TEMPLATE_VIEW_DEFAULT_FILE_EXTENSION}"
template = "%s.%s" % (template, settings.STATIC_TEMPLATE_VIEW_DEFAULT_FILE_EXTENSION)
# Make the assumption that the URL we want is the lowercased
# version of the map key
......
......@@ -15,13 +15,13 @@ from django.template import TemplateDoesNotExist
from django.utils.safestring import mark_safe
from django.views.decorators.csrf import ensure_csrf_cookie
from django.views.defaults import permission_denied
from mako.exceptions import TopLevelLookupException
from ratelimit.exceptions import Ratelimited
from mako.exceptions import TopLevelLookupException
from common.djangoapps.edxmako.shortcuts import render_to_response, render_to_string
from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
from common.djangoapps.util.cache import cache_if_anonymous
from common.djangoapps.util.views import fix_crum_request
from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
valid_templates = []
......
......@@ -4,11 +4,11 @@ Test the lms/staticbook views.
import textwrap
from unittest import mock
import pytest
import mock
import requests
from django.urls import NoReverseMatch, reverse
from six import text_type
from common.djangoapps.student.tests.factories import CourseEnrollmentFactory, UserFactory
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
......@@ -50,7 +50,7 @@ class StaticBookTest(ModuleStoreTestCase):
"""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
super(StaticBookTest, self).__init__(*args, **kwargs) # lint-amnesty, pylint: disable=super-with-arguments
self.course = None
def make_course(self, **kwargs):
......@@ -69,7 +69,7 @@ class StaticBookTest(ModuleStoreTestCase):
Automatically provides the course id.
"""
kwargs['course_id'] = str(self.course.id)
kwargs['course_id'] = text_type(self.course.id)
url = reverse(url_name, kwargs=kwargs)
return url
......
......@@ -8,10 +8,10 @@ from django.http import Http404
from django.views.decorators.clickjacking import xframe_options_exempt
from opaque_keys.edx.keys import CourseKey
from common.djangoapps.edxmako.shortcuts import render_to_response
from common.djangoapps.static_replace import replace_static_urls
from lms.djangoapps.courseware.access import has_access
from lms.djangoapps.courseware.courses import get_course_with_access
from common.djangoapps.edxmako.shortcuts import render_to_response
from common.djangoapps.static_replace import replace_static_urls
@login_required
......@@ -25,7 +25,7 @@ def index(request, course_id, book_index, page=None):
book_index = int(book_index)
if book_index < 0 or book_index >= len(course.textbooks):
raise Http404(f"Invalid book index value: {book_index}")
raise Http404(u"Invalid book index value: {0}".format(book_index))
textbook = course.textbooks[book_index]
table_of_contents = textbook.table_of_contents
......@@ -83,7 +83,7 @@ def pdf_index(request, course_id, book_index, chapter=None, page=None):
book_index = int(book_index)
if book_index < 0 or book_index >= len(course.pdf_textbooks):
raise Http404(f"Invalid book index value: {book_index}")
raise Http404(u"Invalid book index value: {0}".format(book_index))
textbook = course.pdf_textbooks[book_index]
viewer_params = '&file='
......@@ -108,7 +108,7 @@ def pdf_index(request, course_id, book_index, chapter=None, page=None):
viewer_params += '#zoom=page-fit&disableRange=true'
if page is not None:
viewer_params += f'&page={page}'
viewer_params += '&page={}'.format(page)
if request.GET.get('viewer', '') == 'true':
template = 'pdf_viewer.html'
......@@ -151,7 +151,7 @@ def html_index(request, course_id, book_index, chapter=None):
book_index = int(book_index)
if book_index < 0 or book_index >= len(course.html_textbooks):
raise Http404(f"Invalid book index value: {book_index}")
raise Http404(u"Invalid book index value: {0}".format(book_index))
textbook = course.html_textbooks[book_index]
if 'url' in textbook:
......
......@@ -4,10 +4,14 @@ Serializers for use in the support app.
import json
from django.urls import reverse
from rest_framework import serializers
from common.djangoapps.student.models import CourseEnrollment, ManualEnrollmentAudit
from lms.djangoapps.program_enrollments.models import ProgramCourseEnrollment, ProgramEnrollment
from lms.djangoapps.program_enrollments.models import (
ProgramEnrollment,
ProgramCourseEnrollment,
)
from openedx.core.djangoapps.catalog.utils import get_programs_by_uuids
from openedx.features.course_experience import default_course_url_name
......@@ -19,7 +23,7 @@ class ManualEnrollmentSerializer(serializers.ModelSerializer):
"""Serializes a manual enrollment audit object."""
enrolled_by = serializers.SlugRelatedField(slug_field='email', read_only=True, default='')
class Meta:
class Meta(object):
model = ManualEnrollmentAudit
fields = ('enrolled_by', 'time_stamp', 'reason')
......@@ -30,7 +34,7 @@ class CourseEnrollmentSerializer(serializers.Serializer):
is_active = serializers.BooleanField()
mode = serializers.CharField()
class Meta:
class Meta(object):
model = CourseEnrollment
......@@ -43,7 +47,7 @@ class ProgramCourseEnrollmentSerializer(serializers.Serializer):
course_enrollment = CourseEnrollmentSerializer()
course_url = serializers.SerializerMethodField()
class Meta:
class Meta(object):
model = ProgramCourseEnrollment
def get_course_url(self, obj):
......@@ -61,7 +65,7 @@ class ProgramEnrollmentSerializer(serializers.Serializer):
program_course_enrollments = ProgramCourseEnrollmentSerializer(many=True)
program_name = serializers.SerializerMethodField()
class Meta:
class Meta(object):
model = ProgramEnrollment
def get_program_name(self, obj):
......
# coding: UTF-8
"""
Tests for support views.
"""
......@@ -7,35 +8,31 @@ import itertools
import json
import re
from datetime import datetime, timedelta
from unittest.mock import patch
from uuid import UUID, uuid4
import ddt
import six
from django.contrib.auth.models import User # lint-amnesty, pylint: disable=imported-auth-user
from django.db.models import signals
from django.http import HttpResponse
from django.urls import reverse
from mock import patch
from organizations.tests.factories import OrganizationFactory
from pytz import UTC
from social_django.models import UserSocialAuth
from common.test.utils import disable_signal
from common.djangoapps.course_modes.models import CourseMode
from common.djangoapps.course_modes.tests.factories import CourseModeFactory
from common.djangoapps.student.models import ( # lint-amnesty, pylint: disable=line-too-long
ENROLLED_TO_ENROLLED,
CourseEnrollment,
CourseEnrollmentAttribute,
ManualEnrollmentAudit
)
from common.djangoapps.student.roles import GlobalStaff, SupportStaffRole
from common.djangoapps.student.tests.factories import CourseEnrollmentFactory, UserFactory
from common.djangoapps.third_party_auth.tests.factories import SAMLProviderConfigFactory
from common.test.utils import disable_signal
from lms.djangoapps.program_enrollments.tests.factories import ProgramCourseEnrollmentFactory, ProgramEnrollmentFactory
from lms.djangoapps.support.serializers import ProgramEnrollmentSerializer
from lms.djangoapps.verify_student.models import VerificationDeadline
from lms.djangoapps.verify_student.services import IDVerificationService
from lms.djangoapps.verify_student.tests.factories import SSOVerificationFactory
from common.djangoapps.student.models import ENROLLED_TO_ENROLLED, CourseEnrollment, CourseEnrollmentAttribute, ManualEnrollmentAudit # lint-amnesty, pylint: disable=line-too-long
from common.djangoapps.student.roles import GlobalStaff, SupportStaffRole
from common.djangoapps.student.tests.factories import CourseEnrollmentFactory, UserFactory
from common.djangoapps.third_party_auth.tests.factories import SAMLProviderConfigFactory
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase, SharedModuleStoreTestCase
from xmodule.modulestore.tests.factories import CourseFactory
......@@ -51,7 +48,7 @@ class SupportViewTestCase(ModuleStoreTestCase):
def setUp(self):
"""Create a user and log in. """
super().setUp()
super(SupportViewTestCase, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments
self.user = UserFactory(username=self.USERNAME, email=self.EMAIL, password=self.PASSWORD)
self.course = CourseFactory.create()
success = self.client.login(username=self.USERNAME, password=self.PASSWORD)
......@@ -65,7 +62,7 @@ class SupportViewManageUserTests(SupportViewTestCase):
def setUp(self):
"""Make the user support staff"""
super().setUp()
super(SupportViewManageUserTests, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments
SupportStaffRole().add_users(self.user)
def test_get_contact_us(self):
......@@ -192,7 +189,7 @@ class SupportViewIndexTests(SupportViewTestCase):
def setUp(self):
"""Make the user support staff. """
super().setUp()
super(SupportViewIndexTests, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments
SupportStaffRole().add_users(self.user)
def test_index(self):
......@@ -210,7 +207,7 @@ class SupportViewCertificatesTests(SupportViewTestCase):
"""
def setUp(self):
"""Make the user support staff. """
super().setUp()
super(SupportViewCertificatesTests, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments
SupportStaffRole().add_users(self.user)
def test_certificates_no_filter(self):
......@@ -226,10 +223,10 @@ class SupportViewCertificatesTests(SupportViewTestCase):
def test_certificates_along_with_course_filter(self):
# Check that an initial filter is passed to the JavaScript client.
url = reverse("support:certificates") + "?user=student@example.com&course_id=" + str(self.course.id)
url = reverse("support:certificates") + "?user=student@example.com&course_id=" + six.text_type(self.course.id)
response = self.client.get(url)
self.assertContains(response, "userFilter: 'student@example.com'")
self.assertContains(response, "courseFilter: '" + str(self.course.id) + "'")
self.assertContains(response, "courseFilter: '" + six.text_type(self.course.id) + "'")
@ddt.ddt
......@@ -237,10 +234,10 @@ class SupportViewEnrollmentsTests(SharedModuleStoreTestCase, SupportViewTestCase
"""Tests for the enrollment support view."""
def setUp(self):
super().setUp()
super(SupportViewEnrollmentsTests, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments
SupportStaffRole().add_users(self.user)
self.course = CourseFactory(display_name='teꜱᴛ')
self.course = CourseFactory(display_name=u'teꜱᴛ')
self.student = UserFactory.create(username='student', email='test@example.com', password='test')
for mode in (
......@@ -280,7 +277,7 @@ class SupportViewEnrollmentsTests(SharedModuleStoreTestCase, SupportViewTestCase
'mode': CourseMode.AUDIT,
'manual_enrollment': {},
'user': self.student.username,
'course_id': str(self.course.id),
'course_id': six.text_type(self.course.id),
'is_active': True,
'verified_upgrade_deadline': None,
}, data[0])
......@@ -311,7 +308,7 @@ class SupportViewEnrollmentsTests(SharedModuleStoreTestCase, SupportViewTestCase
kwargs={'username_or_email': getattr(self.student, search_string_type)}
)
response = self.client.post(url, data={
'course_id': str(self.course.id),
'course_id': six.text_type(self.course.id),
'old_mode': CourseMode.AUDIT,
'new_mode': CourseMode.VERIFIED,
'reason': 'Financial Assistance'
......@@ -424,11 +421,11 @@ class SupportViewEnrollmentsTests(SharedModuleStoreTestCase, SupportViewTestCase
with patch('lms.djangoapps.support.views.enrollments.get_credit_provider_attribute_values') as mock_method:
credit_provider = (
['Arizona State University'], 'You are now eligible for credit from Arizona State University'
[u'Arizona State University'], 'You are now eligible for credit from Arizona State University'
)
mock_method.return_value = credit_provider
response = self.client.post(url, data={
'course_id': str(self.course.id),
'course_id': six.text_type(self.course.id),
'old_mode': CourseMode.AUDIT,
'new_mode': new_mode,
'reason': 'Financial Assistance'
......@@ -439,7 +436,7 @@ class SupportViewEnrollmentsTests(SharedModuleStoreTestCase, SupportViewTestCase
self.assert_enrollment(new_mode)
if new_mode == 'credit':
enrollment_attr = CourseEnrollmentAttribute.objects.first()
assert enrollment_attr.value == str(credit_provider[0])
assert enrollment_attr.value == six.text_type(credit_provider[0])
def set_course_end_date_and_expiry(self):
""" Set the course-end date and expire its verified mode."""
......@@ -468,7 +465,7 @@ class SupportViewLinkProgramEnrollmentsTests(SupportViewTestCase):
def setUp(self):
"""Make the user support staff. """
super().setUp()
super(SupportViewLinkProgramEnrollmentsTests, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments
self.url = reverse("support:link_program_enrollments")
SupportStaffRole().add_users(self.user)
self.program_uuid = str(uuid4())
......@@ -490,7 +487,7 @@ class SupportViewLinkProgramEnrollmentsTests(SupportViewTestCase):
Test the view without mocking out the rendering like the rest of the tests.
"""
response = self.client.get(self.url)
content = str(response.content, encoding='utf-8')
content = six.text_type(response.content, encoding='utf-8')
assert '"programUUID": ""' in content
assert '"text": ""' in content
......@@ -500,7 +497,7 @@ class SupportViewLinkProgramEnrollmentsTests(SupportViewTestCase):
'program_uuid': 'notauuid',
'text': self.text,
})
msg = "Supplied program UUID 'notauuid' is not a valid UUID."
msg = u"Supplied program UUID 'notauuid' is not a valid UUID."
render_call_dict = mocked_render.call_args[0][1]
assert render_call_dict['errors'] == [msg]
......@@ -513,9 +510,9 @@ class SupportViewLinkProgramEnrollmentsTests(SupportViewTestCase):
@ddt.unpack
def test_missing_parameter(self, program_uuid, text, mocked_render):
error = (
"You must provide both a program uuid "
"and a series of lines with the format "
"'external_user_key,lms_username'."
u"You must provide both a program uuid "
u"and a series of lines with the format "
u"'external_user_key,lms_username'."
)
self.client.post(self.url, data={
'program_uuid': program_uuid,
......@@ -551,7 +548,7 @@ class SupportViewLinkProgramEnrollmentsTests(SupportViewTestCase):
'program_uuid': self.program_uuid,
'text': text,
})
msg = "All linking lines must be in the format 'external_user_key,lms_username'"
msg = u"All linking lines must be in the format 'external_user_key,lms_username'"
render_call_dict = mocked_render.call_args[0][1]
assert render_call_dict['errors'] == [msg]
......@@ -613,14 +610,14 @@ class SupportViewLinkProgramEnrollmentsTests(SupportViewTestCase):
})
render_call_dict = mocked_render.call_args[0][1]
if username:
expected_success = f"('{external_user_key}', '{username}')"
expected_success = "('{}', '{}')".format(external_user_key, username)
assert render_call_dict['successes'] == [expected_success]
program_enrollment.refresh_from_db()
assert program_enrollment.user == linked_user
program_course_enrollment.refresh_from_db()
assert program_course_enrollment.course_enrollment.user == linked_user
else:
error = "All linking lines must be in the format 'external_user_key,lms_username'"
error = u"All linking lines must be in the format 'external_user_key,lms_username'"
assert render_call_dict['errors'] == [error]
......@@ -636,7 +633,7 @@ class ProgramEnrollmentsInspectorViewTests(SupportViewTestCase):
)
def setUp(self):
super().setUp()
super(ProgramEnrollmentsInspectorViewTests, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments
self.url = reverse("support:program_enrollments_inspector")
SupportStaffRole().add_users(self.user)
self.program_uuid = str(uuid4())
......@@ -662,7 +659,7 @@ class ProgramEnrollmentsInspectorViewTests(SupportViewTestCase):
def test_initial_rendering(self):
response = self.client.get(self.url)
content = str(response.content, encoding='utf-8')
content = six.text_type(response.content, encoding='utf-8')
expected_organization_serialized = '"orgKeys": {}'.format(
json.dumps(sorted(self.org_key_list))
)
......@@ -684,7 +681,7 @@ class ProgramEnrollmentsInspectorViewTests(SupportViewTestCase):
if org_key and external_user_key:
user_social_auth = UserSocialAuth.objects.create(
user=user,
uid=f'{org_key}:{external_user_key}',
uid='{0}:{1}'.format(org_key, external_user_key),
provider='tpa-saml'
)
user_info['sso_list'] = [{
......@@ -957,7 +954,7 @@ class SsoRecordsTests(SupportViewTestCase): # lint-amnesty, pylint: disable=mis
def setUp(self):
"""Make the user support staff"""
super().setUp()
super(SsoRecordsTests, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments
SupportStaffRole().add_users(self.user)
self.student = UserFactory.create(username='student', email='test@example.com', password='test')
self.url = reverse("support:sso_records", kwargs={'username_or_email': self.student.username})
......
......@@ -5,8 +5,8 @@ URLs for the student support app.
from django.conf.urls import url
from .views.certificate import CertificatesSupportView
from .views.contact_us import ContactUsView
from .views.certificate import CertificatesSupportView
from .views.course_entitlements import EntitlementSupportView
from .views.enrollments import EnrollmentSupportListView, EnrollmentSupportView
from .views.feature_based_enrollments import FeatureBasedEnrollmentsSupportView
......
"""
Certificate tool in the student support app.
"""
from urllib.parse import quote_plus, unquote
from django.utils.decorators import method_decorator
from django.views.generic import View
from six.moves.urllib.parse import quote_plus, unquote
from common.djangoapps.edxmako.shortcuts import render_to_response
from lms.djangoapps.support.decorators import require_support_permission
......
......@@ -8,9 +8,9 @@ from django.http import Http404
from django.views.generic import View
from common.djangoapps.edxmako.shortcuts import render_to_response
from common.djangoapps.student.models import CourseEnrollment
from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
from openedx.features.enterprise_support import api as enterprise_api
from common.djangoapps.student.models import CourseEnrollment
class ContactUsView(View):
......@@ -35,7 +35,7 @@ class ContactUsView(View):
current_site_name = configuration_helpers.get_value("SITE_NAME")
if current_site_name:
current_site_name = current_site_name.replace(".", "_")
tags.append(f"site_name_{current_site_name}")
tags.append("site_name_{site}".format(site=current_site_name))
if request.user.is_authenticated:
context['course_id'] = request.session.get('course_id', '')
......
......@@ -2,6 +2,8 @@
Support tool for changing course enrollments.
"""
import six
from django.contrib.auth.models import User # lint-amnesty, pylint: disable=imported-auth-user
from django.db import transaction
from django.db.models import Q
......@@ -12,16 +14,10 @@ from django.views.generic import View
from opaque_keys import InvalidKeyError
from opaque_keys.edx.keys import CourseKey
from rest_framework.generics import GenericAPIView
from six import text_type
from common.djangoapps.course_modes.models import CourseMode
from common.djangoapps.edxmako.shortcuts import render_to_response
from common.djangoapps.student.models import ( # lint-amnesty, pylint: disable=line-too-long
ENROLLED_TO_ENROLLED,
CourseEnrollment,
CourseEnrollmentAttribute,
ManualEnrollmentAudit
)
from common.djangoapps.util.json_request import JsonResponse
from lms.djangoapps.support.decorators import require_support_permission
from lms.djangoapps.support.serializers import ManualEnrollmentSerializer
from lms.djangoapps.verify_student.models import VerificationDeadline
......@@ -29,6 +25,8 @@ from openedx.core.djangoapps.credit.email_utils import get_credit_provider_attri
from openedx.core.djangoapps.enrollments.api import get_enrollments, update_enrollment
from openedx.core.djangoapps.enrollments.errors import CourseModeNotFoundError
from openedx.core.djangoapps.enrollments.serializers import ModeSerializer
from common.djangoapps.student.models import ENROLLED_TO_ENROLLED, CourseEnrollment, CourseEnrollmentAttribute, ManualEnrollmentAudit # lint-amnesty, pylint: disable=line-too-long
from common.djangoapps.util.json_request import JsonResponse
class EnrollmentSupportView(View):
......@@ -93,19 +91,19 @@ class EnrollmentSupportListView(GenericAPIView):
reason = request.data['reason']
enrollment = CourseEnrollment.objects.get(user=user, course_id=course_key)
if enrollment.mode != old_mode:
return HttpResponseBadRequest('User {username} is not enrolled with mode {old_mode}.'.format(
return HttpResponseBadRequest(u'User {username} is not enrolled with mode {old_mode}.'.format(
username=user.username,
old_mode=old_mode
))
except KeyError as err:
return HttpResponseBadRequest('The field {} is required.'.format(str(err)))
return HttpResponseBadRequest(u'The field {} is required.'.format(text_type(err)))
except InvalidKeyError:
return HttpResponseBadRequest('Could not parse course key.')
return HttpResponseBadRequest(u'Could not parse course key.')
except (CourseEnrollment.DoesNotExist, User.DoesNotExist):
return HttpResponseBadRequest(
'Could not find enrollment for user {username} in course {course}.'.format(
u'Could not find enrollment for user {username} in course {course}.'.format(
username=username_or_email,
course=str(course_key)
course=six.text_type(course_key)
)
)
try:
......@@ -132,7 +130,7 @@ class EnrollmentSupportListView(GenericAPIView):
)
return JsonResponse(ManualEnrollmentSerializer(instance=manual_enrollment).data)
except CourseModeNotFoundError as err:
return HttpResponseBadRequest(str(err))
return HttpResponseBadRequest(text_type(err))
@staticmethod
def include_verified_mode_info(enrollment_data, course_key):
......
......@@ -11,12 +11,13 @@ from django.utils.translation import ugettext as _
from django.views.generic import View
from rest_framework.generics import GenericAPIView
from common.djangoapps.edxmako.shortcuts import render_to_response
from common.djangoapps.student.models import UserPasswordToggleHistory
from common.djangoapps.util.json_request import JsonResponse
from common.djangoapps.edxmako.shortcuts import render_to_response
from lms.djangoapps.support.decorators import require_support_permission
from openedx.core.djangoapps.user_api.accounts.serializers import AccountUserSerializer
from openedx.core.djangoapps.user_authn.utils import generate_password
from common.djangoapps.util.json_request import JsonResponse
from openedx.core.djangolib.oauth2_retirement_utils import retire_dot_oauth2_models
......
......@@ -13,7 +13,6 @@ from django.views.generic import View
from social_django.models import UserSocialAuth
from common.djangoapps.edxmako.shortcuts import render_to_response
from common.djangoapps.third_party_auth.models import SAMLProviderConfig
from lms.djangoapps.program_enrollments.api import (
fetch_program_enrollments_by_student,
get_users_by_external_keys_and_org_key,
......@@ -25,8 +24,12 @@ from lms.djangoapps.program_enrollments.exceptions import (
ProviderDoesNotExistException
)
from lms.djangoapps.support.decorators import require_support_permission
from lms.djangoapps.support.serializers import ProgramEnrollmentSerializer, serialize_user_info
from lms.djangoapps.support.serializers import (
ProgramEnrollmentSerializer,
serialize_user_info
)
from lms.djangoapps.verify_student.services import IDVerificationService
from common.djangoapps.third_party_auth.models import SAMLProviderConfig
TEMPLATE_PATH = 'support/link_program_enrollments.html'
DATETIME_FORMAT = '%Y-%m-%dT%H:%M:%S'
......@@ -91,7 +94,7 @@ class LinkProgramEnrollmentSupportView(View):
program_uuid = UUID(program_uuid_string)
except ValueError:
return [], [
f"Supplied program UUID '{program_uuid_string}' is not a valid UUID."
"Supplied program UUID '{}' is not a valid UUID.".format(program_uuid_string)
]
reader = csv.DictReader(
linkage_text.splitlines(), fieldnames=('external_key', 'username')
......@@ -210,7 +213,7 @@ class ProgramEnrollmentsInspectorView(View):
result['id_verification'] = IDVerificationService.user_status(user)
return result, ''
except User.DoesNotExist:
return {}, f'Could not find edx account with {username_or_email}'
return {}, 'Could not find edx account with {}'.format(username_or_email)
def _get_external_user_info(self, external_user_key, org_key, idp_provider=None):
"""
......
......@@ -8,9 +8,9 @@ from django.utils.decorators import method_decorator
from rest_framework.generics import GenericAPIView
from social_django.models import UserSocialAuth
from common.djangoapps.util.json_request import JsonResponse
from lms.djangoapps.support.decorators import require_support_permission
from lms.djangoapps.support.serializers import serialize_sso_records
from common.djangoapps.util.json_request import JsonResponse
class SsoView(GenericAPIView):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment