From 202edb872b2d8c09a39f4a91d033c181c7f3deb0 Mon Sep 17 00:00:00 2001 From: Jolyon Bloomfield Date: Fri, 29 Mar 2019 12:59:31 -0700 Subject: [PATCH] INCR-179 Migrating openedx/features/journals --- openedx/features/journals/api.py | 9 +++++---- openedx/features/journals/apps.py | 5 ++++- .../journals/tests/test_journal_xblock.py | 13 ++++++------- .../journals/tests/test_learner_dashboard.py | 5 +++-- .../journals/tests/test_marketing_views.py | 18 +++++++++++------- openedx/features/journals/tests/utils.py | 3 +++ openedx/features/journals/urls.py | 4 +++- .../features/journals/views/journal_xblock.py | 4 +++- .../journals/views/learner_dashboard.py | 10 ++++------ openedx/features/journals/views/marketing.py | 4 +++- 10 files changed, 45 insertions(+), 30 deletions(-) diff --git a/openedx/features/journals/api.py b/openedx/features/journals/api.py index 7f62e01cc0..a300355ec6 100644 --- a/openedx/features/journals/api.py +++ b/openedx/features/journals/api.py @@ -1,22 +1,23 @@ """ APIs providing support for Journals functionality. """ -from urlparse import urljoin, urlsplit, urlunsplit -import logging +from __future__ import absolute_import import hashlib +import logging import six +from six.moves.urllib.parse import urljoin, urlsplit, urlunsplit # pylint: disable=import-error from django.conf import settings from django.contrib.auth import get_user_model from django.core.cache import cache from django.core.exceptions import ObjectDoesNotExist from edx_rest_api_client.client import EdxRestApiClient +from slumber.exceptions import HttpClientError, HttpServerError + from openedx.core.djangoapps.catalog.models import CatalogIntegration from openedx.core.djangoapps.oauth_dispatch.jwt import create_jwt_for_user from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers from openedx.core.djangoapps.waffle_utils import WaffleSwitchNamespace -from slumber.exceptions import HttpClientError, HttpServerError - LOGGER = logging.getLogger("edx.journals") JOURNALS_CACHE_TIMEOUT = 3600 # Value is in seconds diff --git a/openedx/features/journals/apps.py b/openedx/features/journals/apps.py index 34010042af..894c5927c0 100644 --- a/openedx/features/journals/apps.py +++ b/openedx/features/journals/apps.py @@ -1,8 +1,11 @@ """ Journals Application Configuration """ +from __future__ import absolute_import + from django.apps import AppConfig -from openedx.core.djangoapps.plugins.constants import ProjectType, SettingsType, PluginURLs, PluginSettings + +from openedx.core.djangoapps.plugins.constants import PluginSettings, PluginURLs, ProjectType, SettingsType class JournalsConfig(AppConfig): diff --git a/openedx/features/journals/tests/test_journal_xblock.py b/openedx/features/journals/tests/test_journal_xblock.py index 4a4d819dac..b87a9a5287 100644 --- a/openedx/features/journals/tests/test_journal_xblock.py +++ b/openedx/features/journals/tests/test_journal_xblock.py @@ -2,21 +2,20 @@ Test cases for journal page views. """ -import uuid -import mock +from __future__ import absolute_import +import uuid + +import mock from django.conf import settings from django.core.urlresolvers import reverse from django.http import HttpResponse from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase -from openedx.core.djangolib.testing.utils import CacheIsolationTestCase from openedx.core.djangoapps.site_configuration.tests.mixins import SiteMixin -from openedx.features.journals.tests.utils import ( - get_mocked_journal_access, - override_switch -) +from openedx.core.djangolib.testing.utils import CacheIsolationTestCase from openedx.features.journals.api import JOURNAL_INTEGRATION +from openedx.features.journals.tests.utils import get_mocked_journal_access, override_switch @mock.patch.dict(settings.FEATURES, {"JOURNALS_ENABLED": True}) diff --git a/openedx/features/journals/tests/test_learner_dashboard.py b/openedx/features/journals/tests/test_learner_dashboard.py index 1eb44be2da..0c53dc4117 100644 --- a/openedx/features/journals/tests/test_learner_dashboard.py +++ b/openedx/features/journals/tests/test_learner_dashboard.py @@ -1,13 +1,14 @@ """ Tests for journals learner dashboard views. """ -import mock +from __future__ import absolute_import +import mock from django.conf import settings from django.core.urlresolvers import reverse from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase -from openedx.features.journals.tests.utils import get_mocked_journal_access, override_switch from openedx.features.journals.api import JOURNAL_INTEGRATION +from openedx.features.journals.tests.utils import get_mocked_journal_access, override_switch @mock.patch.dict(settings.FEATURES, {"JOURNALS_ENABLED": True}) diff --git a/openedx/features/journals/tests/test_marketing_views.py b/openedx/features/journals/tests/test_marketing_views.py index 7257b278fe..d47a5221d7 100644 --- a/openedx/features/journals/tests/test_marketing_views.py +++ b/openedx/features/journals/tests/test_marketing_views.py @@ -1,18 +1,22 @@ """ Tests for journals marketing views. """ -import uuid -import mock +from __future__ import absolute_import +import uuid + +import mock from django.conf import settings from django.core.urlresolvers import reverse -from openedx.core.djangolib.testing.utils import CacheIsolationTestCase from openedx.core.djangoapps.site_configuration.tests.mixins import SiteMixin -from openedx.features.journals.tests.utils import (get_mocked_journals, - get_mocked_journal_bundles, - get_mocked_pricing_data, - override_switch) +from openedx.core.djangolib.testing.utils import CacheIsolationTestCase from openedx.features.journals.api import JOURNAL_INTEGRATION +from openedx.features.journals.tests.utils import ( + get_mocked_journal_bundles, + get_mocked_journals, + get_mocked_pricing_data, + override_switch +) from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase diff --git a/openedx/features/journals/tests/utils.py b/openedx/features/journals/tests/utils.py index 2533df73af..79bb31839d 100644 --- a/openedx/features/journals/tests/utils.py +++ b/openedx/features/journals/tests/utils.py @@ -1,6 +1,9 @@ """ Returns the dummy data for journals endpoint of discovery.""" +from __future__ import absolute_import + import uuid from functools import wraps + from openedx.features.journals.api import WAFFLE_SWITCHES diff --git a/openedx/features/journals/urls.py b/openedx/features/journals/urls.py index abf4749779..55c04f2bce 100644 --- a/openedx/features/journals/urls.py +++ b/openedx/features/journals/urls.py @@ -2,12 +2,14 @@ Defines URLs for course bookmarks. """ +from __future__ import absolute_import + from django.conf import settings from django.conf.urls import url -from openedx.features.journals.views.marketing import bundle_about from openedx.features.journals.views import learner_dashboard from openedx.features.journals.views.journal_xblock import render_xblock_by_journal_access +from openedx.features.journals.views.marketing import bundle_about urlpatterns = [ url(r'^bundles/{}/about'.format(r'(?P[0-9a-f-]+)',), diff --git a/openedx/features/journals/views/journal_xblock.py b/openedx/features/journals/views/journal_xblock.py index 98abb78cfc..ff4ad190b7 100644 --- a/openedx/features/journals/views/journal_xblock.py +++ b/openedx/features/journals/views/journal_xblock.py @@ -1,13 +1,15 @@ """ View for journal page """ +from __future__ import absolute_import + import datetime from django.core.cache import cache from django.core.exceptions import PermissionDenied +from opaque_keys.edx.keys import UsageKey from lms.djangoapps.courseware.views.views import render_xblock -from opaque_keys.edx.keys import UsageKey from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers from openedx.features.journals.api import fetch_journal_access diff --git a/openedx/features/journals/views/learner_dashboard.py b/openedx/features/journals/views/learner_dashboard.py index b0240e9138..9cd57a806b 100644 --- a/openedx/features/journals/views/learner_dashboard.py +++ b/openedx/features/journals/views/learner_dashboard.py @@ -1,16 +1,14 @@ """ Journal Tab of Learner Dashboard views """ -from datetime import datetime, time +from __future__ import absolute_import + import logging +from datetime import datetime, time from django.http import Http404 from edxmako.shortcuts import render_to_response from openedx.core.djangoapps.programs.models import ProgramsApiConfig -from openedx.features.journals.api import ( - fetch_journal_access, - journals_enabled, -) - +from openedx.features.journals.api import fetch_journal_access, journals_enabled logger = logging.getLogger(__name__) diff --git a/openedx/features/journals/views/marketing.py b/openedx/features/journals/views/marketing.py index 005034c6b4..7c328ac5ab 100644 --- a/openedx/features/journals/views/marketing.py +++ b/openedx/features/journals/views/marketing.py @@ -1,13 +1,15 @@ """ Journal bundle about page's view """ +from __future__ import absolute_import + from django.conf import settings from django.contrib.auth.models import User from django.http import Http404 from edxmako.shortcuts import render_to_response +from lms.djangoapps.commerce.utils import EcommerceService from openedx.core.djangoapps.catalog.models import CatalogIntegration from openedx.core.djangoapps.commerce.utils import ecommerce_api_client from openedx.features.journals.api import get_journal_bundles, get_journals_root_url -from lms.djangoapps.commerce.utils import EcommerceService def bundle_about(request, bundle_uuid):