Merge pull request #20161 from jolyonb/incr-199

INCR-199 migrate openedx/core/djangoapps/schedules
This commit is contained in:
Michael Youngstrom
2019-04-08 10:28:56 -04:00
committed by GitHub
21 changed files with 95 additions and 62 deletions

View File

@@ -1,15 +1,19 @@
from __future__ import absolute_import
import functools
from django.contrib import admin
import six
from django import forms
from django.contrib import admin
from django.db.models import F
from django.urls import reverse
from django.utils.translation import ugettext_lazy as _
from opaque_keys.edx.keys import CourseKey
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
from openedx.core.djangolib.markup import HTML
from . import models
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
from opaque_keys.edx.keys import CourseKey
class ScheduleExperienceAdminInline(admin.StackedInline):
@@ -92,7 +96,7 @@ class CourseIdFilter(admin.SimpleListFilter):
def lookups(self, request, model_admin):
return (
(overview.id, unicode(overview.id)) for overview in CourseOverview.objects.all().order_by('id')
(overview.id, six.text_type(overview.id)) for overview in CourseOverview.objects.all().order_by('id')
)
def queryset(self, request, queryset):
@@ -111,7 +115,7 @@ class CourseIdFilter(admin.SimpleListFilter):
for lookup, title in self.lookup_choices:
yield {
'selected': self.value() == lookup,
'value': unicode(lookup),
'value': six.text_type(lookup),
'display': title,
}

View File

@@ -1,5 +1,8 @@
from __future__ import absolute_import
from django.apps import AppConfig
from django.utils.translation import ugettext_lazy as _
from openedx.core.djangoapps.plugins.constants import PluginSignals, ProjectType

View File

@@ -1,8 +1,9 @@
"""
Contains configuration for schedules app
"""
from openedx.core.djangoapps.waffle_utils import WaffleFlagNamespace, CourseWaffleFlag, WaffleFlag
from __future__ import absolute_import
from openedx.core.djangoapps.waffle_utils import CourseWaffleFlag, WaffleFlag, WaffleFlagNamespace
WAFFLE_FLAG_NAMESPACE = WaffleFlagNamespace(name=u'schedules')

View File

@@ -2,14 +2,15 @@
Contains methods for accessing weekly course highlights. Weekly highlights is a
schedule experience built on the Schedules app.
"""
from __future__ import absolute_import
import logging
from courseware.module_render import get_module_for_descriptor
from courseware.model_data import FieldDataCache
from courseware.module_render import get_module_for_descriptor
from openedx.core.djangoapps.schedules.config import COURSE_UPDATE_WAFFLE_FLAG
from openedx.core.djangoapps.schedules.exceptions import CourseUpdateDoesNotExist
from openedx.core.lib.request_utils import get_request_or_stub
from xmodule.modulestore.django import modulestore
log = logging.getLogger(__name__)

View File

@@ -2,6 +2,7 @@
Base management command for sending emails
"""
from __future__ import absolute_import
import datetime
import pytz

View File

@@ -2,9 +2,11 @@
Management command to send Schedule course updates
"""
from __future__ import absolute_import
from six.moves import range
from openedx.core.djangoapps.schedules.management.commands import SendEmailBaseCommand
from openedx.core.djangoapps.schedules.tasks import ScheduleCourseUpdate
from six.moves import range
class Command(SendEmailBaseCommand):

View File

@@ -2,6 +2,7 @@
Management command to send recurring Schedule nudges
"""
from __future__ import absolute_import
from openedx.core.djangoapps.schedules.management.commands import SendEmailBaseCommand
from openedx.core.djangoapps.schedules.tasks import ScheduleRecurringNudge

View File

@@ -2,6 +2,7 @@
A management command to send Schedule upgrade reminders
"""
from __future__ import absolute_import
from openedx.core.djangoapps.schedules.management.commands import SendEmailBaseCommand
from openedx.core.djangoapps.schedules.tasks import ScheduleUpgradeReminder

View File

@@ -3,19 +3,23 @@ A managment command that can be used to set up Schedules with various configurat
"""
from __future__ import absolute_import
import datetime
import pytz
import factory
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 openedx.core.djangoapps.content.course_overviews.models import CourseOverview
from openedx.core.djangoapps.schedules.models import ScheduleExperience
from openedx.core.djangoapps.schedules.tests.factories import (
ScheduleFactory, ScheduleConfigFactory, ScheduleExperienceFactory
ScheduleConfigFactory,
ScheduleExperienceFactory,
ScheduleFactory
)
from xmodule.modulestore.tests.factories import CourseFactory, XMODULE_FACTORY_LOCK
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
from xmodule.modulestore.django import modulestore
from xmodule.modulestore.tests.factories import XMODULE_FACTORY_LOCK, CourseFactory
class ThreeDayNudgeSchedule(ScheduleFactory):

View File

@@ -2,6 +2,7 @@
Base file for testing email sending functionality
"""
from __future__ import absolute_import
import datetime
import logging
from collections import namedtuple
@@ -17,6 +18,7 @@ from edx_ace.utils.date import serialize
from freezegun import freeze_time
from mock import Mock, patch
from opaque_keys.edx.keys import CourseKey
from six.moves import range
from course_modes.models import CourseMode
from course_modes.tests.factories import CourseModeFactory
@@ -31,7 +33,6 @@ from openedx.core.djangoapps.waffle_utils.testutils import WAFFLE_TABLES
from openedx.core.djangolib.testing.utils import FilteredQueryCountMixin
from student.models import CourseEnrollment
from student.tests.factories import UserFactory
from six.moves import range
SITE_QUERY = 1 # django_site
SITE_CONFIG_QUERY = 1 # site_configuration_siteconfiguration

View File

@@ -2,28 +2,29 @@
Tests for send_course_update management command.
"""
from __future__ import absolute_import
import ddt
from mock import patch, _is_started
from unittest import skipUnless
import ddt
from django.conf import settings
from edx_ace.utils.date import serialize
from mock import _is_started, patch
from six.moves import range
from openedx.core.djangoapps.schedules import resolvers, tasks
from openedx.core.djangoapps.schedules.config import COURSE_UPDATE_WAFFLE_FLAG
from openedx.core.djangoapps.schedules.management.commands import send_course_update as nudge
from openedx.core.djangoapps.schedules.management.commands.tests.send_email_base import (
ScheduleSendEmailTestMixin,
ExperienceTest
ExperienceTest,
ScheduleSendEmailTestMixin
)
from openedx.core.djangoapps.schedules.management.commands.tests.upsell_base import ScheduleUpsellTestMixin
from openedx.core.djangoapps.schedules.models import ScheduleExperience
from openedx.core.djangolib.testing.utils import skip_unless_lms
from openedx.core.djangoapps.waffle_utils.testutils import override_waffle_flag
from openedx.core.djangolib.testing.utils import skip_unless_lms
from student.tests.factories import CourseEnrollmentFactory
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory
from six.moves import range
@ddt.ddt

View File

@@ -2,16 +2,17 @@
Tests for send_email_base_command
"""
from __future__ import absolute_import
import datetime
from unittest import skipUnless
import ddt
import pytz
from django.conf import settings
from mock import patch, DEFAULT, Mock
from mock import DEFAULT, Mock, patch
from openedx.core.djangoapps.schedules.management.commands import SendEmailBaseCommand
from openedx.core.djangoapps.site_configuration.tests.factories import SiteFactory, SiteConfigurationFactory
from openedx.core.djangoapps.site_configuration.tests.factories import SiteConfigurationFactory, SiteFactory
from openedx.core.djangolib.testing.utils import CacheIsolationTestCase, skip_unless_lms

View File

@@ -2,6 +2,7 @@
Tests for send_recurring_nudge management command.
"""
from __future__ import absolute_import
from unittest import skipUnless
import ddt
@@ -10,12 +11,12 @@ from django.conf import settings
from openedx.core.djangoapps.schedules import resolvers, tasks
from openedx.core.djangoapps.schedules.management.commands import send_recurring_nudge as nudge
from openedx.core.djangoapps.schedules.management.commands.tests.send_email_base import (
ScheduleSendEmailTestMixin,
ExperienceTest,
ScheduleSendEmailTestMixin
)
from openedx.core.djangoapps.schedules.management.commands.tests.upsell_base import ScheduleUpsellTestMixin
from openedx.core.djangoapps.schedules.models import ScheduleExperience
from openedx.core.djangolib.testing.utils import skip_unless_lms, CacheIsolationTestCase
from openedx.core.djangolib.testing.utils import CacheIsolationTestCase, skip_unless_lms
@ddt.ddt

View File

@@ -2,6 +2,7 @@
Tests for send_upgrade_reminder management command.
"""
from __future__ import absolute_import
import logging
from unittest import skipUnless
@@ -11,19 +12,18 @@ from edx_ace import Message
from edx_ace.utils.date import serialize
from mock import patch
from opaque_keys.edx.locator import CourseLocator
from six.moves import range
from course_modes.models import CourseMode
from openedx.core.djangoapps.schedules import resolvers, tasks
from openedx.core.djangoapps.schedules.management.commands import send_upgrade_reminder as reminder
from openedx.core.djangoapps.schedules.management.commands.tests.send_email_base import (
ScheduleSendEmailTestMixin,
ExperienceTest,
ScheduleSendEmailTestMixin
)
from openedx.core.djangoapps.schedules.models import ScheduleExperience
from openedx.core.djangolib.testing.utils import skip_unless_lms, CacheIsolationTestCase
from openedx.core.djangolib.testing.utils import CacheIsolationTestCase, skip_unless_lms
from student.tests.factories import UserFactory
from six.moves import range
LOG = logging.getLogger(__name__)

View File

@@ -2,15 +2,16 @@
Base file for testing schedules with upsell
"""
from __future__ import absolute_import
from collections import namedtuple
import datetime
import ddt
from freezegun import freeze_time
from mock import patch, PropertyMock
import itertools
from edx_ace.utils.date import serialize
import datetime
import itertools
from collections import namedtuple
import ddt
from edx_ace.message import Message
from edx_ace.utils.date import serialize
from freezegun import freeze_time
from mock import PropertyMock, patch
from courseware.models import DynamicUpgradeDeadlineConfiguration

View File

@@ -1,3 +1,5 @@
from __future__ import absolute_import
import logging
from openedx.core.djangoapps.ace_common.message import BaseMessageType

View File

@@ -1,10 +1,11 @@
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.contrib.sites.models import Site
from model_utils import Choices
from model_utils.models import TimeStampedModel
from __future__ import absolute_import
from config_models.models import ConfigurationModel
from django.contrib.sites.models import Site
from django.db import models
from django.utils.translation import ugettext_lazy as _
from model_utils import Choices
from model_utils.models import TimeStampedModel
class Schedule(TimeStampedModel):

View File

@@ -1,23 +1,25 @@
from __future__ import absolute_import
import datetime
from itertools import groupby
import logging
from itertools import groupby
import attr
from django.conf import settings
from django.contrib.auth.models import User
from django.contrib.staticfiles.templatetags.staticfiles import static
from django.urls import reverse
from django.db.models import F, Q
from edx_ace.recipient_resolver import RecipientResolver
from django.urls import reverse
from edx_ace.recipient import Recipient
from edx_ace.recipient_resolver import RecipientResolver
from edx_django_utils.monitoring import function_trace, set_custom_metric
from courseware.date_summary import verified_upgrade_deadline_link, verified_upgrade_link_is_valid
from openedx.core.djangoapps.ace_common.template_context import get_base_template_context
from openedx.core.djangoapps.schedules.content_highlights import get_week_highlights
from openedx.core.djangoapps.schedules.exceptions import CourseUpdateDoesNotExist
from openedx.core.djangoapps.schedules.models import Schedule, ScheduleExperience
from openedx.core.djangoapps.schedules.utils import PrefixedDebugLoggerMixin
from openedx.core.djangoapps.ace_common.template_context import get_base_template_context
from openedx.core.djangoapps.site_configuration.models import SiteConfiguration
from openedx.core.djangolib.translation_utils import translate_date
from openedx.features.course_experience import course_home_url_name

View File

@@ -1,9 +1,13 @@
from __future__ import absolute_import
import datetime
import logging
import random
import six
from django.db.models.signals import post_save
from django.dispatch import receiver
from edx_ace.utils import date
from course_modes.models import CourseMode
from courseware.models import (
@@ -11,17 +15,16 @@ from courseware.models import (
DynamicUpgradeDeadlineConfiguration,
OrgDynamicUpgradeDeadlineConfiguration
)
from edx_ace.utils import date
from openedx.core.djangoapps.schedules.models import ScheduleExperience
from openedx.core.djangoapps.schedules.content_highlights import course_has_highlights
from openedx.core.djangoapps.schedules.models import ScheduleExperience
from openedx.core.djangoapps.theming.helpers import get_current_site
from student.models import CourseEnrollment
from track import segment
from .config import CREATE_SCHEDULE_WAFFLE_FLAG
from .models import Schedule, ScheduleConfig
from .tasks import update_course_schedules
log = logging.getLogger(__name__)
@@ -64,7 +67,7 @@ def update_schedules_on_course_start_changed(sender, updated_course_overview, pr
)
update_course_schedules.apply_async(
kwargs=dict(
course_id=unicode(updated_course_overview.id),
course_id=six.text_type(updated_course_overview.id),
new_start_date_str=date.serialize(updated_course_overview.start),
new_upgrade_deadline_str=date.serialize(upgrade_deadline),
),
@@ -140,7 +143,7 @@ def _should_randomly_suppress_schedule_creation(
user_id=enrollment.user.id,
event_name='edx.bi.schedule.suppressed',
properties={
'course_id': unicode(enrollment.course_id),
'course_id': six.text_type(enrollment.course_id),
'experience_type': experience_type,
'upgrade_deadline': upgrade_deadline_str,
'content_availability_date': content_availability_date.isoformat(),

View File

@@ -1,16 +1,18 @@
from __future__ import absolute_import
import datetime
import logging
import six
from six.moves import range
from celery import task
from celery_utils.logged_task import LoggedTask
from celery_utils.persist_on_failure import LoggedPersistOnFailureTask
from django.conf import settings
from django.contrib.auth.models import User
from django.contrib.sites.models import Site
from django.core.exceptions import ValidationError
from django.db.utils import DatabaseError
from celery_utils.logged_task import LoggedTask
from celery_utils.persist_on_failure import LoggedPersistOnFailureTask
from edx_ace import ace
from edx_ace.message import Message
from edx_ace.utils.date import deserialize, serialize
@@ -18,13 +20,11 @@ from edx_django_utils.monitoring import set_custom_metric
from eventtracking import tracker
from opaque_keys.edx.keys import CourseKey
from openedx.core.djangoapps.schedules import message_types
from openedx.core.djangoapps.schedules import message_types, resolvers
from openedx.core.djangoapps.schedules.models import Schedule, ScheduleConfig
from openedx.core.djangoapps.schedules import resolvers
from openedx.core.lib.celery.task_utils import emulate_http_request
from track import segment
LOG = logging.getLogger(__name__)
@@ -216,8 +216,8 @@ def _track_message_sent(site, user, msg):
'app_label': msg.app_label,
'name': msg.name,
'language': msg.language,
'uuid': unicode(msg.uuid),
'send_uuid': unicode(msg.send_uuid),
'uuid': six.text_type(msg.uuid),
'send_uuid': six.text_type(msg.send_uuid),
'nonInteraction': 1,
}
course_ids = msg.context.get('course_ids', [])

View File

@@ -1,3 +1,5 @@
from __future__ import absolute_import
import logging
LOG = logging.getLogger(__name__)