INCR-258 Run python-modernize on lms/djangoapps/experiments (#20560)
* run python modernize * run isort * Fix quality
This commit is contained in:
@@ -1,3 +1,8 @@
|
||||
"""
|
||||
Experimentation admin config
|
||||
"""
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.contrib import admin
|
||||
|
||||
from .models import ExperimentData, ExperimentKeyValue
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
"""
|
||||
Experimentation factories
|
||||
"""
|
||||
from __future__ import absolute_import
|
||||
|
||||
import factory
|
||||
import factory.fuzzy
|
||||
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
"""
|
||||
Experimentation filters
|
||||
"""
|
||||
from __future__ import absolute_import
|
||||
|
||||
import django_filters
|
||||
|
||||
from experiments.models import ExperimentData, ExperimentKeyValue
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from __future__ import absolute_import
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
"""
|
||||
Experimentation routers
|
||||
"""
|
||||
from __future__ import absolute_import
|
||||
|
||||
from rest_framework import routers
|
||||
from rest_framework.routers import DynamicDetailRoute, DynamicListRoute, Route
|
||||
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
"""
|
||||
Experimentation serializers
|
||||
"""
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
from rest_framework import serializers
|
||||
|
||||
|
||||
@@ -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):
|
||||
"""
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
"""
|
||||
Experimentation URLs
|
||||
"""
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.conf.urls import include, url
|
||||
|
||||
from experiments import routers, views
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user