From c33bd1c643db19fdaa8f35729cf56a15156d341a Mon Sep 17 00:00:00 2001 From: Stu Young Date: Tue, 21 May 2019 11:32:51 -0400 Subject: [PATCH] INCR-262 Run python-modernize on lms/djangoapps/certificates/migrations and lms/djangoapps/certificates/views (#20558) * run python modernize * run isort * Fix quality --- .../certificates/migrations/0001_initial.py | 13 ++++---- ...__certificatehtmlviewconfiguration_data.py | 6 ++-- .../migrations/0003_data__default_modes.py | 9 +++--- .../0004_certificategenerationhistory.py | 6 ++-- .../migrations/0005_auto_20151208_0801.py | 2 +- ...006_certificatetemplateasset_asset_slug.py | 2 +- .../0007_certificateinvalidation.py | 6 ++-- .../migrations/0008_schema__remove_badges.py | 2 +- ...ncoursesetting_language_self_generation.py | 3 +- .../0010_certificatetemplate_language.py | 2 +- .../0011_certificatetemplate_alter_unique.py | 3 +- ...oncoursesetting_include_hours_of_effort.py | 2 +- ...tificategenerationcoursesetting_enabled.py | 2 +- .../0014_change_eligible_certs_manager.py | 4 +-- .../migrations/0015_add_masters_choice.py | 2 +- lms/djangoapps/certificates/views/__init__.py | 2 +- lms/djangoapps/certificates/views/support.py | 20 +++++++++---- lms/djangoapps/certificates/views/webview.py | 30 +++++++++++-------- lms/djangoapps/certificates/views/xqueue.py | 2 ++ 19 files changed, 69 insertions(+), 49 deletions(-) diff --git a/lms/djangoapps/certificates/migrations/0001_initial.py b/lms/djangoapps/certificates/migrations/0001_initial.py index 596fb2ca9e..63512c196a 100644 --- a/lms/djangoapps/certificates/migrations/0001_initial.py +++ b/lms/djangoapps/certificates/migrations/0001_initial.py @@ -1,16 +1,17 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals -from django.db import migrations, models -import jsonfield.fields -import model_utils.fields import django.db.models.deletion import django.utils.timezone -from badges.models import validate_badge_image +import jsonfield.fields +import model_utils.fields from django.conf import settings -from lms.djangoapps.certificates import models as cert_models +from django.db import migrations, models from opaque_keys.edx.django.models import CourseKeyField +from badges.models import validate_badge_image +from lms.djangoapps.certificates import models as cert_models + class Migration(migrations.Migration): diff --git a/lms/djangoapps/certificates/migrations/0002_data__certificatehtmlviewconfiguration_data.py b/lms/djangoapps/certificates/migrations/0002_data__certificatehtmlviewconfiguration_data.py index 9420109dfe..fa1df3d3ed 100644 --- a/lms/djangoapps/certificates/migrations/0002_data__certificatehtmlviewconfiguration_data.py +++ b/lms/djangoapps/certificates/migrations/0002_data__certificatehtmlviewconfiguration_data.py @@ -1,11 +1,13 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals + import json +from django.db import migrations, models + # Converted from the original South migration 0020_certificatehtmlviewconfiguration_data.py -from django.db import migrations, models def forwards(apps, schema_editor): diff --git a/lms/djangoapps/certificates/migrations/0003_data__default_modes.py b/lms/djangoapps/certificates/migrations/0003_data__default_modes.py index 7db444a76d..700ba92b23 100644 --- a/lms/djangoapps/certificates/migrations/0003_data__default_modes.py +++ b/lms/djangoapps/certificates/migrations/0003_data__default_modes.py @@ -1,11 +1,12 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals + +from django.conf import settings +from django.core.files import File +from django.db import migrations, models # Converted from the original South migration 0002_default_rate_limit_config.py -from django.db import migrations, models -from django.conf import settings -from django.core.files import File def forwards(apps, schema_editor): """Add default modes""" diff --git a/lms/djangoapps/certificates/migrations/0004_certificategenerationhistory.py b/lms/djangoapps/certificates/migrations/0004_certificategenerationhistory.py index 3f8861a9a4..bd6fa0fa79 100644 --- a/lms/djangoapps/certificates/migrations/0004_certificategenerationhistory.py +++ b/lms/djangoapps/certificates/migrations/0004_certificategenerationhistory.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals -from django.db import migrations, models import django.utils.timezone -from django.conf import settings import model_utils.fields +from django.conf import settings +from django.db import migrations, models from opaque_keys.edx.django.models import CourseKeyField diff --git a/lms/djangoapps/certificates/migrations/0005_auto_20151208_0801.py b/lms/djangoapps/certificates/migrations/0005_auto_20151208_0801.py index 134824cac0..f0082121c3 100644 --- a/lms/djangoapps/certificates/migrations/0005_auto_20151208_0801.py +++ b/lms/djangoapps/certificates/migrations/0005_auto_20151208_0801.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from django.db import migrations, models diff --git a/lms/djangoapps/certificates/migrations/0006_certificatetemplateasset_asset_slug.py b/lms/djangoapps/certificates/migrations/0006_certificatetemplateasset_asset_slug.py index a4b2105c79..a7f31bbc2d 100644 --- a/lms/djangoapps/certificates/migrations/0006_certificatetemplateasset_asset_slug.py +++ b/lms/djangoapps/certificates/migrations/0006_certificatetemplateasset_asset_slug.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from django.db import migrations, models diff --git a/lms/djangoapps/certificates/migrations/0007_certificateinvalidation.py b/lms/djangoapps/certificates/migrations/0007_certificateinvalidation.py index f25fe3d709..fcd4e69809 100644 --- a/lms/djangoapps/certificates/migrations/0007_certificateinvalidation.py +++ b/lms/djangoapps/certificates/migrations/0007_certificateinvalidation.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals -from django.db import migrations, models import django.utils.timezone -from django.conf import settings import model_utils.fields +from django.conf import settings +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/lms/djangoapps/certificates/migrations/0008_schema__remove_badges.py b/lms/djangoapps/certificates/migrations/0008_schema__remove_badges.py index 5e4b5f9a8c..1c3a614b9e 100644 --- a/lms/djangoapps/certificates/migrations/0008_schema__remove_badges.py +++ b/lms/djangoapps/certificates/migrations/0008_schema__remove_badges.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from django.db import migrations, models diff --git a/lms/djangoapps/certificates/migrations/0009_certificategenerationcoursesetting_language_self_generation.py b/lms/djangoapps/certificates/migrations/0009_certificategenerationcoursesetting_language_self_generation.py index b6d758aa52..dd37988153 100644 --- a/lms/djangoapps/certificates/migrations/0009_certificategenerationcoursesetting_language_self_generation.py +++ b/lms/djangoapps/certificates/migrations/0009_certificategenerationcoursesetting_language_self_generation.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from django.apps import apps from django.db import migrations, models from django.db.models import F + def copy_field(apps, schema_editor): CertificateGenerationCourseSetting = apps.get_model('certificates', 'CertificateGenerationCourseSetting') CertificateGenerationCourseSetting.objects.all().update(self_generation_enabled=F('enabled')) diff --git a/lms/djangoapps/certificates/migrations/0010_certificatetemplate_language.py b/lms/djangoapps/certificates/migrations/0010_certificatetemplate_language.py index a49d44ab99..bbe46730ac 100644 --- a/lms/djangoapps/certificates/migrations/0010_certificatetemplate_language.py +++ b/lms/djangoapps/certificates/migrations/0010_certificatetemplate_language.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from django.db import migrations, models diff --git a/lms/djangoapps/certificates/migrations/0011_certificatetemplate_alter_unique.py b/lms/djangoapps/certificates/migrations/0011_certificatetemplate_alter_unique.py index 14730dbfd7..d5f43b1e75 100644 --- a/lms/djangoapps/certificates/migrations/0011_certificatetemplate_alter_unique.py +++ b/lms/djangoapps/certificates/migrations/0011_certificatetemplate_alter_unique.py @@ -1,7 +1,8 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging + from django.db import migrations, models from opaque_keys.edx.django.models import CourseKeyField from opaque_keys.edx.keys import CourseKey diff --git a/lms/djangoapps/certificates/migrations/0012_certificategenerationcoursesetting_include_hours_of_effort.py b/lms/djangoapps/certificates/migrations/0012_certificategenerationcoursesetting_include_hours_of_effort.py index c9cddda313..2dc0c4f280 100644 --- a/lms/djangoapps/certificates/migrations/0012_certificategenerationcoursesetting_include_hours_of_effort.py +++ b/lms/djangoapps/certificates/migrations/0012_certificategenerationcoursesetting_include_hours_of_effort.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from django.db import migrations, models diff --git a/lms/djangoapps/certificates/migrations/0013_remove_certificategenerationcoursesetting_enabled.py b/lms/djangoapps/certificates/migrations/0013_remove_certificategenerationcoursesetting_enabled.py index f56a5cad1f..46be10e64c 100644 --- a/lms/djangoapps/certificates/migrations/0013_remove_certificategenerationcoursesetting_enabled.py +++ b/lms/djangoapps/certificates/migrations/0013_remove_certificategenerationcoursesetting_enabled.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from django.db import migrations diff --git a/lms/djangoapps/certificates/migrations/0014_change_eligible_certs_manager.py b/lms/djangoapps/certificates/migrations/0014_change_eligible_certs_manager.py index a047402989..cb9078bc9f 100644 --- a/lms/djangoapps/certificates/migrations/0014_change_eligible_certs_manager.py +++ b/lms/djangoapps/certificates/migrations/0014_change_eligible_certs_manager.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- # Generated by Django 1.11.8 on 2018-01-30 17:38 -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals -from django.db import migrations import django.db.models.manager +from django.db import migrations class Migration(migrations.Migration): diff --git a/lms/djangoapps/certificates/migrations/0015_add_masters_choice.py b/lms/djangoapps/certificates/migrations/0015_add_masters_choice.py index 565d493d2b..c02981efb9 100644 --- a/lms/djangoapps/certificates/migrations/0015_add_masters_choice.py +++ b/lms/djangoapps/certificates/migrations/0015_add_masters_choice.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-04-04 15:14 -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from django.db import migrations, models diff --git a/lms/djangoapps/certificates/views/__init__.py b/lms/djangoapps/certificates/views/__init__.py index 1b4b8cd4ae..8867ad3f13 100644 --- a/lms/djangoapps/certificates/views/__init__.py +++ b/lms/djangoapps/certificates/views/__init__.py @@ -2,6 +2,6 @@ Aggregate all views exposed by the certificates app. """ # pylint: disable=wildcard-import -from .xqueue import * from .support import * from .webview import * +from .xqueue import * diff --git a/lms/djangoapps/certificates/views/support.py b/lms/djangoapps/certificates/views/support.py index 4153133f88..b7b11c2a1e 100644 --- a/lms/djangoapps/certificates/views/support.py +++ b/lms/djangoapps/certificates/views/support.py @@ -4,11 +4,16 @@ Certificate end-points used by the student support UI. See lms/djangoapps/support for more details. """ -import bleach +from __future__ import absolute_import + import logging -import urllib from functools import wraps +import bleach +import six +import six.moves.urllib.error # pylint: disable=import-error +import six.moves.urllib.parse # pylint: disable=import-error +import six.moves.urllib.request # pylint: disable=import-error from django.db import transaction from django.db.models import Q from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseForbidden, HttpResponseServerError @@ -17,9 +22,9 @@ from django.views.decorators.http import require_GET, require_POST from opaque_keys import InvalidKeyError from opaque_keys.edx.keys import CourseKey +from courseware.access import has_access from lms.djangoapps.certificates import api from lms.djangoapps.certificates.models import CertificateInvalidation -from courseware.access import has_access from lms.djangoapps.instructor_task.api import generate_certificates_for_students from openedx.core.djangoapps.content.course_overviews.models import CourseOverview from student.models import CourseEnrollment, User @@ -81,7 +86,9 @@ def search_certificates(request): ] """ - user_filter = bleach.clean(urllib.unquote(urllib.quote_plus(request.GET.get("user", "")))) + # pylint: disable=too-many-function-args + unbleached_filter = six.moves.urllib.parse.unquote(six.moves.urllib.parse.quote_plus(request.GET.get("user", ""))) + user_filter = bleach.clean(unbleached_filter) if not user_filter: msg = _("user is not given.") return HttpResponseBadRequest(msg) @@ -93,12 +100,13 @@ def search_certificates(request): certificates = api.get_certificates_for_user(user.username) for cert in certificates: - cert["course_key"] = unicode(cert["course_key"]) + cert["course_key"] = six.text_type(cert["course_key"]) cert["created"] = cert["created"].isoformat() cert["modified"] = cert["modified"].isoformat() cert["regenerate"] = not cert['is_pdf_certificate'] - course_id = urllib.quote_plus(request.GET.get("course_id", ""), safe=':/') + # pylint: disable=redundant-keyword-arg + course_id = six.moves.urllib.parse.quote_plus(request.GET.get("course_id", ""), safe=':/') if course_id: try: course_key = CourseKey.from_string(course_id) diff --git a/lms/djangoapps/certificates/views/webview.py b/lms/djangoapps/certificates/views/webview.py index 25e0fe8e07..63df5bb9e3 100644 --- a/lms/djangoapps/certificates/views/webview.py +++ b/lms/djangoapps/certificates/views/webview.py @@ -2,24 +2,33 @@ """ Certificate HTML webview. """ +from __future__ import absolute_import + import logging -import urllib from datetime import datetime from uuid import uuid4 import pytz +import six +import six.moves.urllib.error # pylint: disable=import-error +import six.moves.urllib.parse # pylint: disable=import-error +import six.moves.urllib.request # pylint: disable=import-error from django.conf import settings from django.contrib.auth.models import User from django.http import Http404, HttpResponse from django.template import RequestContext -from django.utils.encoding import smart_str from django.utils import translation +from django.utils.encoding import smart_str from eventtracking import tracker from opaque_keys import InvalidKeyError from opaque_keys.edx.keys import CourseKey from badges.events.course_complete import get_completion_badge from badges.utils import badges_enabled +from courseware.access import has_access +from courseware.courses import get_course_by_id +from edxmako.shortcuts import render_to_response +from edxmako.template import Template from lms.djangoapps.certificates.api import ( emit_certificate_event, get_active_web_certificate, @@ -35,21 +44,16 @@ from lms.djangoapps.certificates.models import ( CertificateStatuses, GeneratedCertificate ) -from courseware.access import has_access -from courseware.courses import get_course_by_id -from edxmako.shortcuts import render_to_response -from edxmako.template import Template from openedx.core.djangoapps.catalog.utils import get_course_run_details +from openedx.core.djangoapps.certificates.api import certificates_viewable_for_course, display_date_for_certificate from openedx.core.djangoapps.lang_pref.api import get_closest_released_language from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers from openedx.core.lib.courses import course_image_url -from openedx.core.djangoapps.certificates.api import display_date_for_certificate, certificates_viewable_for_course from student.models import LinkedInAddToProfileConfiguration from util import organizations_helpers as organization_api from util.date_utils import strftime_localized from util.views import handle_500 - log = logging.getLogger(__name__) _ = translation.ugettext @@ -282,7 +286,7 @@ def _update_social_context(request, context, course, user, user_certificate, pla if context.get('twitter_share_enabled', False): twitter_url = 'https://twitter.com/intent/tweet?text={twitter_share_text}&url={share_url}'.format( twitter_share_text=smart_str(context['twitter_share_text']), - share_url=urllib.quote_plus(smart_str(share_url)) + share_url=six.moves.urllib.parse.quote_plus(smart_str(share_url)) ) context['twitter_url'] = twitter_url context['linked_in_url'] = None @@ -346,7 +350,7 @@ def _get_user_certificate(request, user, course_key, course, preview_mode=None): modified_date = datetime.now().date() user_certificate = GeneratedCertificate( mode=preview_mode, - verify_uuid=unicode(uuid4().hex), + verify_uuid=six.text_type(uuid4().hex), modified_date=modified_date ) elif certificates_viewable_for_course(course): @@ -388,7 +392,7 @@ def _track_certificate_events(request, context, course, user, user_certificate): 'badge_generator': badge.backend, 'issuing_component': badge.badge_class.issuing_component, 'user_id': user.id, - 'course_id': unicode(course_key), + 'course_id': six.text_type(course_key), 'enrollment_mode': badge.badge_class.mode, 'assertion_id': badge.id, 'assertion_image_url': badge.image_url, @@ -405,7 +409,7 @@ def _track_certificate_events(request, context, course, user, user_certificate): # track certificate evidence_visited event for analytics when certificate_user and accessing_user are different if request.user and request.user.id != user.id: - emit_certificate_event('evidence_visited', user, unicode(course.id), course, { + emit_certificate_event('evidence_visited', user, six.text_type(course.id), course, { 'certificate_id': user_certificate.verify_uuid, 'enrollment_mode': user_certificate.mode, 'social_network': CertificateSocialNetworks.linkedin @@ -473,7 +477,7 @@ def render_cert_by_uuid(request, certificate_uuid): verify_uuid=certificate_uuid, status=CertificateStatuses.downloadable ) - return render_html_view(request, certificate.user.id, unicode(certificate.course_id)) + return render_html_view(request, certificate.user.id, six.text_type(certificate.course_id)) except GeneratedCertificate.DoesNotExist: raise Http404 diff --git a/lms/djangoapps/certificates/views/xqueue.py b/lms/djangoapps/certificates/views/xqueue.py index 1bdb10a0c7..3ad0fe71c5 100644 --- a/lms/djangoapps/certificates/views/xqueue.py +++ b/lms/djangoapps/certificates/views/xqueue.py @@ -1,6 +1,8 @@ """ Views used by XQueue certificate generation. """ +from __future__ import absolute_import + import json import logging