From 92e8615669917b63b393da1e6ecc35d4b0ddbc5c Mon Sep 17 00:00:00 2001 From: Bill Tucker Date: Tue, 7 May 2019 08:47:10 -0400 Subject: [PATCH] INCR-224: run python-modernize and isort for openedx/features/course_duration/ (#20429) --- .../cdl_setup_models_to_send_test_emails.py | 17 ++++---- .../commands/send_access_expiry_reminder.py | 3 ++ .../migrations/0001_initial.py | 4 +- .../migrations/0002_auto_20181119_0959.py | 2 +- .../migrations/0003_auto_20181128_1407.py | 2 +- .../migrations/0004_auto_20181128_1521.py | 2 +- .../migrations/0005_auto_20190306_1546.py | 2 +- .../migrations/0006_auto_20190308_1447.py | 2 +- .../migrations/0007_auto_20190311_1919.py | 4 +- .../migrations/0008_auto_20190313_1634.py | 3 +- .../tests/test_access.py | 13 +++--- .../tests/test_course_expiration.py | 43 ++++++++++--------- .../tests/test_models.py | 14 +++--- 13 files changed, 62 insertions(+), 49 deletions(-) diff --git a/openedx/features/course_duration_limits/management/commands/cdl_setup_models_to_send_test_emails.py b/openedx/features/course_duration_limits/management/commands/cdl_setup_models_to_send_test_emails.py index d1fa37e882..554c0187c5 100644 --- a/openedx/features/course_duration_limits/management/commands/cdl_setup_models_to_send_test_emails.py +++ b/openedx/features/course_duration_limits/management/commands/cdl_setup_models_to_send_test_emails.py @@ -2,20 +2,21 @@ A managment command that can be used to set up Schedules with various configurations for testing. """ -import datetime -import pytz -import factory +from __future__ import absolute_import -from django.core.management.base import BaseCommand +import datetime + +import factory +import pytz from django.contrib.sites.models import Site +from django.core.management.base import BaseCommand + from course_modes.models import CourseMode from course_modes.tests.factories import CourseModeFactory from openedx.core.djangoapps.content.course_overviews.models import CourseOverview -from openedx.core.djangoapps.schedules.tests.factories import ( - ScheduleFactory, ScheduleConfigFactory, -) -from xmodule.modulestore.tests.factories import CourseFactory, XMODULE_FACTORY_LOCK +from openedx.core.djangoapps.schedules.tests.factories import ScheduleConfigFactory, ScheduleFactory from xmodule.modulestore.django import modulestore +from xmodule.modulestore.tests.factories import XMODULE_FACTORY_LOCK, CourseFactory class CourseDurationLimitExpirySchedule(ScheduleFactory): diff --git a/openedx/features/course_duration_limits/management/commands/send_access_expiry_reminder.py b/openedx/features/course_duration_limits/management/commands/send_access_expiry_reminder.py index 43ee616b55..ff7014be51 100644 --- a/openedx/features/course_duration_limits/management/commands/send_access_expiry_reminder.py +++ b/openedx/features/course_duration_limits/management/commands/send_access_expiry_reminder.py @@ -4,8 +4,11 @@ Send out reminder emails for any students who will lose access to course content in 7 days. """ +from __future__ import absolute_import + from openedx.core.djangoapps.schedules.management.commands import SendEmailBaseCommand from openedx.features.course_duration_limits.tasks import CourseDurationLimitExpiryReminder + from ... import resolvers diff --git a/openedx/features/course_duration_limits/migrations/0001_initial.py b/openedx/features/course_duration_limits/migrations/0001_initial.py index 85bfedf590..5fa37061c3 100644 --- a/openedx/features/course_duration_limits/migrations/0001_initial.py +++ b/openedx/features/course_duration_limits/migrations/0001_initial.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2018-11-08 19:43 -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/openedx/features/course_duration_limits/migrations/0002_auto_20181119_0959.py b/openedx/features/course_duration_limits/migrations/0002_auto_20181119_0959.py index 32468ce598..29facef49a 100644 --- a/openedx/features/course_duration_limits/migrations/0002_auto_20181119_0959.py +++ b/openedx/features/course_duration_limits/migrations/0002_auto_20181119_0959.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2018-11-19 14:59 -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from django.db import migrations, models diff --git a/openedx/features/course_duration_limits/migrations/0003_auto_20181128_1407.py b/openedx/features/course_duration_limits/migrations/0003_auto_20181128_1407.py index 644cb2ec27..d8d2603e88 100644 --- a/openedx/features/course_duration_limits/migrations/0003_auto_20181128_1407.py +++ b/openedx/features/course_duration_limits/migrations/0003_auto_20181128_1407.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2018-11-28 19:07 -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from django.db import migrations, models diff --git a/openedx/features/course_duration_limits/migrations/0004_auto_20181128_1521.py b/openedx/features/course_duration_limits/migrations/0004_auto_20181128_1521.py index cb75c6a189..1975017ca4 100644 --- a/openedx/features/course_duration_limits/migrations/0004_auto_20181128_1521.py +++ b/openedx/features/course_duration_limits/migrations/0004_auto_20181128_1521.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # Generated by Django 1.11.16 on 2018-11-28 20:21 -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from django.db import migrations, models diff --git a/openedx/features/course_duration_limits/migrations/0005_auto_20190306_1546.py b/openedx/features/course_duration_limits/migrations/0005_auto_20190306_1546.py index 044b4f5f74..e873901f06 100644 --- a/openedx/features/course_duration_limits/migrations/0005_auto_20190306_1546.py +++ b/openedx/features/course_duration_limits/migrations/0005_auto_20190306_1546.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-03-06 15:46 -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from django.db import migrations, models diff --git a/openedx/features/course_duration_limits/migrations/0006_auto_20190308_1447.py b/openedx/features/course_duration_limits/migrations/0006_auto_20190308_1447.py index f2ae47015f..c890bd1eb8 100644 --- a/openedx/features/course_duration_limits/migrations/0006_auto_20190308_1447.py +++ b/openedx/features/course_duration_limits/migrations/0006_auto_20190308_1447.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-03-08 14:47 -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from django.db import migrations, models diff --git a/openedx/features/course_duration_limits/migrations/0007_auto_20190311_1919.py b/openedx/features/course_duration_limits/migrations/0007_auto_20190311_1919.py index 22b045d18c..d810dbac0e 100644 --- a/openedx/features/course_duration_limits/migrations/0007_auto_20190311_1919.py +++ b/openedx/features/course_duration_limits/migrations/0007_auto_20190311_1919.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-03-11 19:19 -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/openedx/features/course_duration_limits/migrations/0008_auto_20190313_1634.py b/openedx/features/course_duration_limits/migrations/0008_auto_20190313_1634.py index 8b1c685b67..2b58fedfa7 100644 --- a/openedx/features/course_duration_limits/migrations/0008_auto_20190313_1634.py +++ b/openedx/features/course_duration_limits/migrations/0008_auto_20190313_1634.py @@ -1,8 +1,9 @@ # -*- coding: utf-8 -*- # Generated by Django 1.11.20 on 2019-03-13 16:34 -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from django.db import migrations, models + import openedx.core.djangoapps.config_model_utils.models diff --git a/openedx/features/course_duration_limits/tests/test_access.py b/openedx/features/course_duration_limits/tests/test_access.py index 3b5679586b..c882fae6a1 100644 --- a/openedx/features/course_duration_limits/tests/test_access.py +++ b/openedx/features/course_duration_limits/tests/test_access.py @@ -1,23 +1,26 @@ """Tests of openedx.features.course_duration_limits.access""" -from datetime import datetime, timedelta +from __future__ import absolute_import + import itertools +from datetime import datetime, timedelta + +import ddt +from django.utils import timezone +from pytz import UTC from course_modes.models import CourseMode from course_modes.tests.factories import CourseModeFactory -from django.utils import timezone from courseware.models import DynamicUpgradeDeadlineConfiguration from openedx.core.djangoapps.schedules.tests.factories import ScheduleFactory from openedx.core.djangolib.testing.utils import CacheIsolationTestCase from openedx.features.course_duration_limits.access import ( generate_course_expired_message, - get_user_course_expiration_date, + get_user_course_expiration_date ) from openedx.features.course_duration_limits.models import CourseDurationLimitConfig -from pytz import UTC from student.tests.factories import CourseEnrollmentFactory from util.date_utils import strftime_localized -import ddt @ddt.ddt diff --git a/openedx/features/course_duration_limits/tests/test_course_expiration.py b/openedx/features/course_duration_limits/tests/test_course_expiration.py index 1a2cdc0df9..07c06c23f7 100644 --- a/openedx/features/course_duration_limits/tests/test_course_expiration.py +++ b/openedx/features/course_duration_limits/tests/test_course_expiration.py @@ -1,45 +1,48 @@ """ Contains tests to verify correctness of course expiration functionality """ +from __future__ import absolute_import + import json from datetime import timedelta +import ddt +import mock +import six from django.conf import settings from django.urls import reverse from django.utils.timezone import now -import ddt -import mock from course_modes.models import CourseMode -from lms.djangoapps.discussion.django_comment_client.tests.factories import RoleFactory from experiments.models import ExperimentData from lms.djangoapps.courseware.tests.factories import ( - InstructorFactory, - StaffFactory, BetaTesterFactory, - OrgStaffFactory, - OrgInstructorFactory, GlobalStaffFactory, + InstructorFactory, + OrgInstructorFactory, + OrgStaffFactory, + StaffFactory ) +from lms.djangoapps.discussion.django_comment_client.tests.factories import RoleFactory from openedx.core.djangoapps.content.course_overviews.models import CourseOverview from openedx.core.djangoapps.django_comment_common.models import ( FORUM_ROLE_ADMINISTRATOR, - FORUM_ROLE_MODERATOR, + FORUM_ROLE_COMMUNITY_TA, FORUM_ROLE_GROUP_MODERATOR, - FORUM_ROLE_COMMUNITY_TA + FORUM_ROLE_MODERATOR ) from openedx.core.djangoapps.schedules.tests.factories import ScheduleFactory from openedx.features.content_type_gating.helpers import CONTENT_GATING_PARTITION_ID, CONTENT_TYPE_GATE_GROUP_IDS -from openedx.features.course_duration_limits.access import get_user_course_expiration_date, MIN_DURATION, MAX_DURATION -from openedx.features.course_duration_limits.config import EXPERIMENT_ID, EXPERIMENT_DATA_HOLDBACK_KEY -from openedx.features.course_experience.tests.views.helpers import add_course_mode +from openedx.features.course_duration_limits.access import MAX_DURATION, MIN_DURATION, get_user_course_expiration_date +from openedx.features.course_duration_limits.config import EXPERIMENT_DATA_HOLDBACK_KEY, EXPERIMENT_ID from openedx.features.course_duration_limits.models import CourseDurationLimitConfig +from openedx.features.course_experience.tests.views.helpers import add_course_mode from student.models import CourseEnrollment from student.roles import CourseInstructorRole -from student.tests.factories import UserFactory, CourseEnrollmentFactory, TEST_PASSWORD -from xmodule.partitions.partitions import ENROLLMENT_TRACK_PARTITION_ID +from student.tests.factories import TEST_PASSWORD, CourseEnrollmentFactory, UserFactory from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase from xmodule.modulestore.tests.factories import CourseFactory +from xmodule.partitions.partitions import ENROLLMENT_TRACK_PARTITION_ID @ddt.ddt @@ -210,7 +213,7 @@ class CourseExpirationTestCase(ModuleStoreTestCase): self.update_masquerade(**masquerade_config) - course_home_url = reverse('openedx.course_experience.course_home', args=[unicode(self.course.id)]) + course_home_url = reverse('openedx.course_experience.course_home', args=[six.text_type(self.course.id)]) response = self.client.get(course_home_url, follow=True) self.assertEqual(response.status_code, 200) self.assertItemsEqual(response.redirect_chain, []) @@ -227,7 +230,7 @@ class CourseExpirationTestCase(ModuleStoreTestCase): masquerade_url = reverse( 'masquerade_update', kwargs={ - 'course_key_string': unicode(self.course.id), + 'course_key_string': six.text_type(self.course.id), } ) response = self.client.post( @@ -275,7 +278,7 @@ class CourseExpirationTestCase(ModuleStoreTestCase): self.update_masquerade(username='audit') - course_home_url = reverse('openedx.course_experience.course_home', args=[unicode(self.course.id)]) + course_home_url = reverse('openedx.course_experience.course_home', args=[six.text_type(self.course.id)]) response = self.client.get(course_home_url, follow=True) self.assertEqual(response.status_code, 200) self.assertItemsEqual(response.redirect_chain, []) @@ -311,7 +314,7 @@ class CourseExpirationTestCase(ModuleStoreTestCase): self.update_masquerade(username='audit') - course_home_url = reverse('openedx.course_experience.course_home', args=[unicode(self.course.id)]) + course_home_url = reverse('openedx.course_experience.course_home', args=[six.text_type(self.course.id)]) response = self.client.get(course_home_url, follow=True) self.assertEqual(response.status_code, 200) self.assertItemsEqual(response.redirect_chain, []) @@ -362,7 +365,7 @@ class CourseExpirationTestCase(ModuleStoreTestCase): self.update_masquerade(username=expired_staff.username) - course_home_url = reverse('openedx.course_experience.course_home', args=[unicode(self.course.id)]) + course_home_url = reverse('openedx.course_experience.course_home', args=[six.text_type(self.course.id)]) response = self.client.get(course_home_url, follow=True) self.assertEqual(response.status_code, 200) self.assertItemsEqual(response.redirect_chain, []) @@ -411,7 +414,7 @@ class CourseExpirationTestCase(ModuleStoreTestCase): self.update_masquerade(username=expired_staff.username) - course_home_url = reverse('openedx.course_experience.course_home', args=[unicode(self.course.id)]) + course_home_url = reverse('openedx.course_experience.course_home', args=[six.text_type(self.course.id)]) response = self.client.get(course_home_url, follow=True) self.assertEqual(response.status_code, 200) self.assertItemsEqual(response.redirect_chain, []) diff --git a/openedx/features/course_duration_limits/tests/test_models.py b/openedx/features/course_duration_limits/tests/test_models.py index 27bbce4bb9..fcc48d6348 100644 --- a/openedx/features/course_duration_limits/tests/test_models.py +++ b/openedx/features/course_duration_limits/tests/test_models.py @@ -2,20 +2,22 @@ Tests of CourseDurationLimitConfig. """ -from datetime import timedelta, datetime +from __future__ import absolute_import + import itertools +from datetime import datetime, timedelta import ddt -from django.utils import timezone -from mock import Mock import pytz - +from django.utils import timezone from edx_django_utils.cache import RequestCache -from course_modes.tests.factories import CourseModeFactory +from mock import Mock from opaque_keys.edx.locator import CourseLocator + +from course_modes.tests.factories import CourseModeFactory from openedx.core.djangoapps.config_model_utils.models import Provenance -from openedx.core.djangoapps.site_configuration.tests.factories import SiteConfigurationFactory from openedx.core.djangoapps.content.course_overviews.tests.factories import CourseOverviewFactory +from openedx.core.djangoapps.site_configuration.tests.factories import SiteConfigurationFactory from openedx.core.djangoapps.waffle_utils.testutils import override_waffle_flag from openedx.core.djangolib.testing.utils import CacheIsolationTestCase from openedx.features.course_duration_limits.models import CourseDurationLimitConfig