From d5ee03e81d06bfe067d51392d5827763992a3bba Mon Sep 17 00:00:00 2001 From: Stu Young Date: Tue, 21 May 2019 11:48:28 -0400 Subject: [PATCH] INCR-258 Run python-modernize on lms/djangoapps/experiments (#20560) * run python modernize * run isort * Fix quality --- lms/djangoapps/experiments/admin.py | 5 ++++ lms/djangoapps/experiments/factories.py | 5 ++++ lms/djangoapps/experiments/filters.py | 5 ++++ .../experiments/migrations/0001_initial.py | 1 + .../migrations/0002_auto_20170627_1402.py | 1 + .../migrations/0003_auto_20170713_1148.py | 1 + lms/djangoapps/experiments/models.py | 5 ++++ lms/djangoapps/experiments/permissions.py | 5 ++++ lms/djangoapps/experiments/routers.py | 5 ++++ lms/djangoapps/experiments/serializers.py | 5 ++++ .../experiments/tests/test_utils.py | 12 +++++++-- .../experiments/tests/test_views.py | 18 ++++++++----- lms/djangoapps/experiments/urls.py | 5 ++++ lms/djangoapps/experiments/utils.py | 26 +++++++++++-------- lms/djangoapps/experiments/views.py | 5 ++++ 15 files changed, 85 insertions(+), 19 deletions(-) diff --git a/lms/djangoapps/experiments/admin.py b/lms/djangoapps/experiments/admin.py index 43d1a076cc..2be829a0c1 100644 --- a/lms/djangoapps/experiments/admin.py +++ b/lms/djangoapps/experiments/admin.py @@ -1,3 +1,8 @@ +""" +Experimentation admin config +""" +from __future__ import absolute_import + from django.contrib import admin from .models import ExperimentData, ExperimentKeyValue diff --git a/lms/djangoapps/experiments/factories.py b/lms/djangoapps/experiments/factories.py index fe7ea054dc..e818deb558 100644 --- a/lms/djangoapps/experiments/factories.py +++ b/lms/djangoapps/experiments/factories.py @@ -1,3 +1,8 @@ +""" +Experimentation factories +""" +from __future__ import absolute_import + import factory import factory.fuzzy diff --git a/lms/djangoapps/experiments/filters.py b/lms/djangoapps/experiments/filters.py index db2b3f1e27..00919ed843 100644 --- a/lms/djangoapps/experiments/filters.py +++ b/lms/djangoapps/experiments/filters.py @@ -1,3 +1,8 @@ +""" +Experimentation filters +""" +from __future__ import absolute_import + import django_filters from experiments.models import ExperimentData, ExperimentKeyValue diff --git a/lms/djangoapps/experiments/migrations/0001_initial.py b/lms/djangoapps/experiments/migrations/0001_initial.py index ff7d94e399..5552fb963b 100644 --- a/lms/djangoapps/experiments/migrations/0001_initial.py +++ b/lms/djangoapps/experiments/migrations/0001_initial.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals +from __future__ import absolute_import from django.db import migrations, models from django.conf import settings import django.utils.timezone diff --git a/lms/djangoapps/experiments/migrations/0002_auto_20170627_1402.py b/lms/djangoapps/experiments/migrations/0002_auto_20170627_1402.py index a807968c44..06394ef3a0 100644 --- a/lms/djangoapps/experiments/migrations/0002_auto_20170627_1402.py +++ b/lms/djangoapps/experiments/migrations/0002_auto_20170627_1402.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals +from __future__ import absolute_import from django.db import migrations, models import django.utils.timezone import model_utils.fields diff --git a/lms/djangoapps/experiments/migrations/0003_auto_20170713_1148.py b/lms/djangoapps/experiments/migrations/0003_auto_20170713_1148.py index daaa3769d0..a367964fe6 100644 --- a/lms/djangoapps/experiments/migrations/0003_auto_20170713_1148.py +++ b/lms/djangoapps/experiments/migrations/0003_auto_20170713_1148.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals +from __future__ import absolute_import from django.db import migrations, models diff --git a/lms/djangoapps/experiments/models.py b/lms/djangoapps/experiments/models.py index a0523059f1..e619d15afa 100644 --- a/lms/djangoapps/experiments/models.py +++ b/lms/djangoapps/experiments/models.py @@ -1,3 +1,8 @@ +""" +Experimentation models +""" +from __future__ import absolute_import + from django.conf import settings from django.db import models from model_utils.models import TimeStampedModel diff --git a/lms/djangoapps/experiments/permissions.py b/lms/djangoapps/experiments/permissions.py index 567bc91350..48fe79a99a 100644 --- a/lms/djangoapps/experiments/permissions.py +++ b/lms/djangoapps/experiments/permissions.py @@ -1,3 +1,8 @@ +""" +Experimentation permissions +""" +from __future__ import absolute_import + from rest_framework.permissions import SAFE_METHODS, BasePermission from openedx.core.lib.api import permissions diff --git a/lms/djangoapps/experiments/routers.py b/lms/djangoapps/experiments/routers.py index d6161cfdf8..e11fb17ade 100644 --- a/lms/djangoapps/experiments/routers.py +++ b/lms/djangoapps/experiments/routers.py @@ -1,3 +1,8 @@ +""" +Experimentation routers +""" +from __future__ import absolute_import + from rest_framework import routers from rest_framework.routers import DynamicDetailRoute, DynamicListRoute, Route diff --git a/lms/djangoapps/experiments/serializers.py b/lms/djangoapps/experiments/serializers.py index a4f6e40659..8e516722da 100644 --- a/lms/djangoapps/experiments/serializers.py +++ b/lms/djangoapps/experiments/serializers.py @@ -1,3 +1,8 @@ +""" +Experimentation serializers +""" +from __future__ import absolute_import + from django.contrib.auth import get_user_model from rest_framework import serializers diff --git a/lms/djangoapps/experiments/tests/test_utils.py b/lms/djangoapps/experiments/tests/test_utils.py index 1406cf7132..13535a0177 100644 --- a/lms/djangoapps/experiments/tests/test_utils.py +++ b/lms/djangoapps/experiments/tests/test_utils.py @@ -1,12 +1,20 @@ """ Tests of experiment functionality """ +from __future__ import absolute_import + from decimal import Decimal from unittest import TestCase -from lms.djangoapps.experiments.utils import get_course_entitlement_price_and_sku, get_program_price_and_skus, \ - get_unenrolled_courses, is_enrolled_in_course_run + from opaque_keys.edx.keys import CourseKey +from lms.djangoapps.experiments.utils import ( + get_course_entitlement_price_and_sku, + get_program_price_and_skus, + get_unenrolled_courses, + is_enrolled_in_course_run +) + class ExperimentUtilsTests(TestCase): """ diff --git a/lms/djangoapps/experiments/tests/test_views.py b/lms/djangoapps/experiments/tests/test_views.py index 2296c966b7..caff5e5fc6 100644 --- a/lms/djangoapps/experiments/tests/test_views.py +++ b/lms/djangoapps/experiments/tests/test_views.py @@ -1,10 +1,17 @@ -import urllib +""" +Tests for experimentation views +""" +from __future__ import absolute_import + import unittest +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.core.handlers.wsgi import WSGIRequest -from django.urls import reverse from django.test.utils import override_settings +from django.urls import reverse from mock import patch from rest_framework.test import APITestCase @@ -13,7 +20,6 @@ from experiments.models import ExperimentData, ExperimentKeyValue from experiments.serializers import ExperimentDataSerializer from student.tests.factories import UserFactory - CROSS_DOMAIN_REFERER = 'https://ecommerce.edx.org' @@ -63,18 +69,18 @@ class ExperimentDataViewSetTests(APITestCase): ExperimentDataFactory(user=user) data = ExperimentDataFactory.create_batch(3, user=user, experiment_id=experiment_id) - qs = urllib.urlencode({'experiment_id': experiment_id}) + qs = six.moves.urllib.parse.urlencode({'experiment_id': experiment_id}) response = self.client.get('{url}?{qs}'.format(url=url, qs=qs)) self.assertEqual(response.status_code, 200) self.assertEqual(response.data['results'], ExperimentDataSerializer(data, many=True).data) datum = data[0] - qs = urllib.urlencode({'key': datum.key}) + qs = six.moves.urllib.parse.urlencode({'key': datum.key}) response = self.client.get('{url}?{qs}'.format(url=url, qs=qs)) self.assertEqual(response.status_code, 200) self.assertEqual(response.data['results'], ExperimentDataSerializer([datum], many=True).data) - qs = urllib.urlencode({'experiment_id': experiment_id, 'key': datum.key}) + qs = six.moves.urllib.parse.urlencode({'experiment_id': experiment_id, 'key': datum.key}) response = self.client.get('{url}?{qs}'.format(url=url, qs=qs)) self.assertEqual(response.status_code, 200) self.assertEqual(response.data['results'], ExperimentDataSerializer([datum], many=True).data) diff --git a/lms/djangoapps/experiments/urls.py b/lms/djangoapps/experiments/urls.py index 7327949692..0b1f8bacc1 100644 --- a/lms/djangoapps/experiments/urls.py +++ b/lms/djangoapps/experiments/urls.py @@ -1,3 +1,8 @@ +""" +Experimentation URLs +""" +from __future__ import absolute_import + from django.conf.urls import include, url from experiments import routers, views diff --git a/lms/djangoapps/experiments/utils.py b/lms/djangoapps/experiments/utils.py index bd7cdb8bc3..f1aeba1304 100644 --- a/lms/djangoapps/experiments/utils.py +++ b/lms/djangoapps/experiments/utils.py @@ -2,25 +2,29 @@ Utilities to facilitate experimentation """ +from __future__ import absolute_import + import hashlib -import re import logging +import re from decimal import Decimal -from student.models import CourseEnrollment + +import six from django.utils.timezone import now -from lms.djangoapps.commerce.utils import EcommerceService -from course_modes.models import get_cosmetic_verified_display_price, format_course_price +from opaque_keys import InvalidKeyError +from opaque_keys.edx.keys import CourseKey + +from course_modes.models import format_course_price, get_cosmetic_verified_display_price from courseware.access import has_staff_access_to_preview_mode from courseware.date_summary import verified_upgrade_deadline_link, verified_upgrade_link_is_valid -from xmodule.partitions.partitions_service import get_user_partition_groups, get_all_partitions_for_course -from opaque_keys.edx.keys import CourseKey -from opaque_keys import InvalidKeyError +from lms.djangoapps.commerce.utils import EcommerceService from openedx.core.djangoapps.catalog.utils import get_programs from openedx.core.djangoapps.django_comment_common.models import Role from openedx.core.djangoapps.waffle_utils import WaffleFlag, WaffleFlagNamespace from openedx.features.course_duration_limits.access import get_user_course_expiration_date from openedx.features.course_duration_limits.models import CourseDurationLimitConfig - +from student.models import CourseEnrollment +from xmodule.partitions.partitions_service import get_all_partitions_for_course, get_user_partition_groups logger = logging.getLogger(__name__) @@ -170,7 +174,7 @@ def get_program_price_and_skus(courses): skus = None else: program_price = format_course_price(program_price) - program_price = unicode(program_price) + program_price = six.text_type(program_price) return program_price, skus @@ -420,7 +424,7 @@ def get_deprecated_experiment_user_metadata_context(course, user): return { 'upgrade_link': upgrade_link, - 'upgrade_price': unicode(get_cosmetic_verified_display_price(course)), + 'upgrade_price': six.text_type(get_cosmetic_verified_display_price(course)), 'enrollment_mode': enrollment_mode, 'enrollment_time': enrollment_time, 'pacing_type': 'self_paced' if course.self_paced else 'instructor_paced', @@ -459,7 +463,7 @@ def get_base_experiment_metadata_context(course, user, enrollment, user_enrollme return { 'upgrade_link': upgrade_link, - 'upgrade_price': unicode(get_cosmetic_verified_display_price(course)), + 'upgrade_price': six.text_type(get_cosmetic_verified_display_price(course)), 'enrollment_mode': enrollment_mode, 'enrollment_time': enrollment_time, 'pacing_type': 'self_paced' if course.self_paced else 'instructor_paced', diff --git a/lms/djangoapps/experiments/views.py b/lms/djangoapps/experiments/views.py index aca1702ff7..f752451fd4 100644 --- a/lms/djangoapps/experiments/views.py +++ b/lms/djangoapps/experiments/views.py @@ -1,3 +1,8 @@ +""" +Experimentation views +""" +from __future__ import absolute_import + from django.contrib.auth import get_user_model from django.db import transaction from django_filters.rest_framework import DjangoFilterBackend