From 9099f0dc23b2842b00a35473de99e086b0d8599d Mon Sep 17 00:00:00 2001 From: bmedx Date: Wed, 1 Nov 2017 15:48:44 -0400 Subject: [PATCH] CMS urls cleanup for Django 1.11 - Remove usage of django.urls.patterns - Change urls tuples to lists - Make all string view names callables --- cms/djangoapps/contentstore/api/urls.py | 18 +- cms/djangoapps/contentstore/utils.py | 2 +- .../contentstore/views/certificates.py | 6 +- cms/djangoapps/contentstore/views/course.py | 4 +- .../views/tests/test_certificates.py | 10 +- .../contentstore/views/tests/test_item.py | 12 +- cms/djangoapps/maintenance/urls.py | 7 +- cms/djangoapps/pipeline_js/urls.py | 13 +- cms/templates/edit-tabs.html | 2 +- cms/templates/manage_users.html | 2 +- cms/templates/manage_users_lib.html | 2 +- cms/templates/widgets/header.html | 36 +-- cms/urls.py | 273 +++++++++--------- .../external_auth/tests/test_ssl.py | 4 +- 14 files changed, 196 insertions(+), 195 deletions(-) diff --git a/cms/djangoapps/contentstore/api/urls.py b/cms/djangoapps/contentstore/api/urls.py index 39dcc8319d..d758aa5ed3 100644 --- a/cms/djangoapps/contentstore/api/urls.py +++ b/cms/djangoapps/contentstore/api/urls.py @@ -1,18 +1,10 @@ """ Course Import API URLs. """ from django.conf import settings -from django.conf.urls import ( - patterns, - url, -) +from django.conf.urls import url from cms.djangoapps.contentstore.api import views -urlpatterns = patterns( - '', - url( - r'^v0/import/{course_id}/$'.format( - course_id=settings.COURSE_ID_PATTERN, - ), - views.CourseImportView.as_view(), name='course_import' - ), -) +urlpatterns = [ + url(r'^v0/import/{course_id}/$'.format(course_id=settings.COURSE_ID_PATTERN,), + views.CourseImportView.as_view(), name='course_import'), +] diff --git a/cms/djangoapps/contentstore/utils.py b/cms/djangoapps/contentstore/utils.py index 69aca392d6..72a17b051e 100644 --- a/cms/djangoapps/contentstore/utils.py +++ b/cms/djangoapps/contentstore/utils.py @@ -274,7 +274,7 @@ def reverse_url(handler_name, key_name=None, key_value=None, kwargs=None): kwargs_for_reverse = {key_name: unicode(key_value)} if key_name else None if kwargs: kwargs_for_reverse.update(kwargs) - return reverse('contentstore.views.' + handler_name, kwargs=kwargs_for_reverse) + return reverse(handler_name, kwargs=kwargs_for_reverse) def reverse_course_url(handler_name, course_key, kwargs=None): diff --git a/cms/djangoapps/contentstore/views/certificates.py b/cms/djangoapps/contentstore/views/certificates.py index 0350d4dc7e..f3354ac18b 100644 --- a/cms/djangoapps/contentstore/views/certificates.py +++ b/cms/djangoapps/contentstore/views/certificates.py @@ -368,11 +368,11 @@ def certificates_list_handler(request, course_key_string): return JsonResponse({"error": msg}, status=403) if 'text/html' in request.META.get('HTTP_ACCEPT', 'text/html'): - certificate_url = reverse_course_url('certificates.certificates_list_handler', course_key) + certificate_url = reverse_course_url('certificates_list_handler', course_key) course_outline_url = reverse_course_url('course_handler', course_key) upload_asset_url = reverse_course_url('assets_handler', course_key) activation_handler_url = reverse_course_url( - handler_name='certificates.certificate_activation_handler', + handler_name='certificate_activation_handler', course_key=course_key ) course_modes = [ @@ -429,7 +429,7 @@ def certificates_list_handler(request, course_key_string): course.certificates['certificates'].append(new_certificate.certificate_data) response = JsonResponse(CertificateManager.serialize_certificate(new_certificate), status=201) response["Location"] = reverse_course_url( - 'certificates.certificates_detail_handler', + 'certificates_detail_handler', course.id, kwargs={'certificate_id': new_certificate.id} ) diff --git a/cms/djangoapps/contentstore/views/course.py b/cms/djangoapps/contentstore/views/course.py index 7de3e008de..3ce0f84543 100644 --- a/cms/djangoapps/contentstore/views/course.py +++ b/cms/djangoapps/contentstore/views/course.py @@ -264,7 +264,7 @@ def course_handler(request, course_key_string=None): return HttpResponseBadRequest() elif request.method == 'GET': # assume html if course_key_string is None: - return redirect(reverse("home")) + return redirect(reverse('home')) else: return course_index(request, CourseKey.from_string(course_key_string)) else: @@ -572,7 +572,7 @@ def course_listing(request): u'libraries': [format_library_for_view(lib) for lib in libraries], u'show_new_library_button': get_library_creator_status(user), u'user': user, - u'request_course_creator_url': reverse(u'contentstore.views.request_course_creator'), + u'request_course_creator_url': reverse('request_course_creator'), u'course_creator_status': _get_course_creator_status(user), u'rerun_creator_status': GlobalStaff().has_user(user), u'allow_unicode_course_id': settings.FEATURES.get(u'ALLOW_UNICODE_COURSE_ID', False), diff --git a/cms/djangoapps/contentstore/views/tests/test_certificates.py b/cms/djangoapps/contentstore/views/tests/test_certificates.py index 26bbc9be18..ecc5e067d9 100644 --- a/cms/djangoapps/contentstore/views/tests/test_certificates.py +++ b/cms/djangoapps/contentstore/views/tests/test_certificates.py @@ -210,7 +210,7 @@ class CertificatesListHandlerTestCase( """ Return url for the handler. """ - return reverse_course_url('certificates.certificates_list_handler', self.course.id) + return reverse_course_url('certificates_list_handler', self.course.id) def test_can_create_certificate(self): """ @@ -441,7 +441,7 @@ class CertificatesDetailHandlerTestCase( """ cid = cid if cid > 0 else self._id return reverse_course_url( - 'certificates.certificates_detail_handler', + 'certificates_detail_handler', self.course.id, kwargs={'certificate_id': cid}, ) @@ -764,7 +764,7 @@ class CertificatesDetailHandlerTestCase( """ Activate and Deactivate the course certificate """ - test_url = reverse_course_url('certificates.certificate_activation_handler', self.course.id) + test_url = reverse_course_url('certificate_activation_handler', self.course.id) self._add_course_certificates(count=1, signatory_count=2, asset_path_format=signatory_path) is_active = True @@ -795,7 +795,7 @@ class CertificatesDetailHandlerTestCase( Tests certificate Activate and Deactivate should not be allowed if user does not have write permissions on course. """ - test_url = reverse_course_url('certificates.certificate_activation_handler', self.course.id) + test_url = reverse_course_url('certificate_activation_handler', self.course.id) self._add_course_certificates(count=1, signatory_count=2, asset_path_format=signatory_path) user = UserFactory() self.client.login(username=user.username, password='test') @@ -814,7 +814,7 @@ class CertificatesDetailHandlerTestCase( Certificate activation should fail when user has not read access to course then permission denied exception should raised. """ - test_url = reverse_course_url('certificates.certificate_activation_handler', self.course.id) + test_url = reverse_course_url('certificate_activation_handler', self.course.id) test_user_client, test_user = self.create_non_staff_authed_user_client() CourseEnrollment.enroll(test_user, self.course.id) self._add_course_certificates(count=1, signatory_count=2, asset_path_format=signatory_path) diff --git a/cms/djangoapps/contentstore/views/tests/test_item.py b/cms/djangoapps/contentstore/views/tests/test_item.py index 683c08c554..c36e44ae75 100644 --- a/cms/djangoapps/contentstore/views/tests/test_item.py +++ b/cms/djangoapps/contentstore/views/tests/test_item.py @@ -112,7 +112,7 @@ class ItemTest(CourseTestCase): data['display_name'] = display_name if boilerplate is not None: data['boilerplate'] = boilerplate - return self.client.ajax_post(reverse('contentstore.views.xblock_handler'), json.dumps(data)) + return self.client.ajax_post(reverse('xblock_handler'), json.dumps(data)) def _create_vertical(self, parent_usage_key=None): """ @@ -653,7 +653,7 @@ class DuplicateHelper(object): if display_name is not None: data['display_name'] = display_name - resp = self.client.ajax_post(reverse('contentstore.views.xblock_handler'), json.dumps(data)) + resp = self.client.ajax_post(reverse('xblock_handler'), json.dumps(data)) return self.response_usage_key(resp) @@ -864,7 +864,7 @@ class TestMoveItem(ItemTest): data['target_index'] = target_index return self.client.patch( - reverse('contentstore.views.xblock_handler'), + reverse('xblock_handler'), json.dumps(data), content_type='application/json' ) @@ -1147,7 +1147,7 @@ class TestMoveItem(ItemTest): data = {'move_source_locator': unicode(self.html_usage_key)} with self.assertRaises(InvalidKeyError): self.client.patch( - reverse('contentstore.views.xblock_handler'), + reverse('xblock_handler'), json.dumps(data), content_type='application/json' ) @@ -1157,7 +1157,7 @@ class TestMoveItem(ItemTest): Test patch request without providing a move source locator. """ response = self.client.patch( - reverse('contentstore.views.xblock_handler') + reverse('xblock_handler') ) self.assertEqual(response.status_code, 400) response = json.loads(response.content) @@ -1308,7 +1308,7 @@ class TestMoveItem(ItemTest): } with self.assertRaises(ItemNotFoundError): self.client.patch( - reverse('contentstore.views.xblock_handler'), + reverse('xblock_handler'), json.dumps(data), content_type='application/json' ) diff --git a/cms/djangoapps/maintenance/urls.py b/cms/djangoapps/maintenance/urls.py index 5b780b29ec..b28b49f05e 100644 --- a/cms/djangoapps/maintenance/urls.py +++ b/cms/djangoapps/maintenance/urls.py @@ -1,12 +1,11 @@ """ URLs for the maintenance app. """ -from django.conf.urls import patterns, url +from django.conf.urls import url from .views import ForcePublishCourseView, MaintenanceIndexView -urlpatterns = patterns( - '', +urlpatterns = [ url(r'^$', MaintenanceIndexView.as_view(), name='maintenance_index'), url(r'^force_publish_course/?$', ForcePublishCourseView.as_view(), name='force_publish_course'), -) +] diff --git a/cms/djangoapps/pipeline_js/urls.py b/cms/djangoapps/pipeline_js/urls.py index 2f1e791300..303573cfdb 100644 --- a/cms/djangoapps/pipeline_js/urls.py +++ b/cms/djangoapps/pipeline_js/urls.py @@ -1,11 +1,10 @@ """ URL patterns for Javascript files used to load all of the XModule JS in one wad. """ -from django.conf.urls import patterns, url +from django.conf.urls import url +from pipeline_js.views import xmodule_js_files, requirejs_xmodule -urlpatterns = patterns( - 'pipeline_js.views', - - url(r'^files\.json$', 'xmodule_js_files', name='xmodule_js_files'), - url(r'^xmodule\.js$', 'requirejs_xmodule', name='requirejs_xmodule'), -) +urlpatterns = [ + url(r'^files\.json$', xmodule_js_files, name='xmodule_js_files'), + url(r'^xmodule\.js$', requirejs_xmodule, name='requirejs_xmodule'), +] diff --git a/cms/templates/edit-tabs.html b/cms/templates/edit-tabs.html index c4d1e39394..9541f07c35 100644 --- a/cms/templates/edit-tabs.html +++ b/cms/templates/edit-tabs.html @@ -21,7 +21,7 @@ <%block name="requirejs"> require(["js/factories/edit_tabs"], function (EditTabsFactory) { - EditTabsFactory("${context_course.location | n, js_escaped_string}", "${reverse('contentstore.views.tabs_handler', kwargs={'course_key_string': context_course.id})}"); + EditTabsFactory("${context_course.location | n, js_escaped_string}", "${reverse('tabs_handler', kwargs={'course_key_string': context_course.id})}"); }); diff --git a/cms/templates/manage_users.html b/cms/templates/manage_users.html index 3f853a8e13..858e66f33e 100644 --- a/cms/templates/manage_users.html +++ b/cms/templates/manage_users.html @@ -119,7 +119,7 @@ from openedx.core.djangolib.js_utils import ( ManageCourseUsersFactory( "${context_course.display_name_with_default | h}", ${users | n, dump_js_escaped_json}, - "${reverse('contentstore.views.course_team_handler', kwargs={'course_key_string': unicode(context_course.id), 'email': '@@EMAIL@@'}) | n, js_escaped_string}", + "${reverse('course_team_handler', kwargs={'course_key_string': unicode(context_course.id), 'email': '@@EMAIL@@'}) | n, js_escaped_string}", ${request.user.id | n, dump_js_escaped_json}, ${allow_actions | n, dump_js_escaped_json} ); diff --git a/cms/templates/manage_users_lib.html b/cms/templates/manage_users_lib.html index e458022eb9..db5fb303dc 100644 --- a/cms/templates/manage_users_lib.html +++ b/cms/templates/manage_users_lib.html @@ -112,7 +112,7 @@ from openedx.core.djangolib.js_utils import ( ManageLibraryUsersFactory( "${context_library.display_name_with_default | h}", ${users | n, dump_js_escaped_json}, - "${reverse('contentstore.views.course_team_handler', kwargs={'course_key_string': library_key, 'email': '@@EMAIL@@'}) | n, js_escaped_string}", + "${reverse('course_team_handler', kwargs={'course_key_string': library_key, 'email': '@@EMAIL@@'}) | n, js_escaped_string}", ${request.user.id | n, dump_js_escaped_json}, ${allow_actions | n, dump_js_escaped_json} ); diff --git a/cms/templates/widgets/header.html b/cms/templates/widgets/header.html index 7e4439f617..ecdabc0658 100644 --- a/cms/templates/widgets/header.html +++ b/cms/templates/widgets/header.html @@ -19,21 +19,21 @@ % if context_course: <% course_key = context_course.id - index_url = reverse('contentstore.views.course_handler', kwargs={'course_key_string': unicode(course_key)}) - course_team_url = reverse('contentstore.views.course_team_handler', kwargs={'course_key_string': unicode(course_key)}) - assets_url = reverse('contentstore.views.assets_handler', kwargs={'course_key_string': unicode(course_key)}) - textbooks_url = reverse('contentstore.views.textbooks_list_handler', kwargs={'course_key_string': unicode(course_key)}) - videos_url = reverse('contentstore.views.videos_handler', kwargs={'course_key_string': unicode(course_key)}) - import_url = reverse('contentstore.views.import_handler', kwargs={'course_key_string': unicode(course_key)}) - course_info_url = reverse('contentstore.views.course_info_handler', kwargs={'course_key_string': unicode(course_key)}) - export_url = reverse('contentstore.views.export_handler', kwargs={'course_key_string': unicode(course_key)}) - settings_url = reverse('contentstore.views.settings_handler', kwargs={'course_key_string': unicode(course_key)}) - grading_url = reverse('contentstore.views.grading_handler', kwargs={'course_key_string': unicode(course_key)}) - advanced_settings_url = reverse('contentstore.views.advanced_settings_handler', kwargs={'course_key_string': unicode(course_key)}) - tabs_url = reverse('contentstore.views.tabs_handler', kwargs={'course_key_string': unicode(course_key)}) + index_url = reverse('course_handler', kwargs={'course_key_string': unicode(course_key)}) + course_team_url = reverse('course_team_handler', kwargs={'course_key_string': unicode(course_key)}) + assets_url = reverse('assets_handler', kwargs={'course_key_string': unicode(course_key)}) + textbooks_url = reverse('textbooks_list_handler', kwargs={'course_key_string': unicode(course_key)}) + videos_url = reverse('videos_handler', kwargs={'course_key_string': unicode(course_key)}) + import_url = reverse('import_handler', kwargs={'course_key_string': unicode(course_key)}) + course_info_url = reverse('course_info_handler', kwargs={'course_key_string': unicode(course_key)}) + export_url = reverse('export_handler', kwargs={'course_key_string': unicode(course_key)}) + settings_url = reverse('settings_handler', kwargs={'course_key_string': unicode(course_key)}) + grading_url = reverse('grading_handler', kwargs={'course_key_string': unicode(course_key)}) + advanced_settings_url = reverse('advanced_settings_handler', kwargs={'course_key_string': unicode(course_key)}) + tabs_url = reverse('tabs_handler', kwargs={'course_key_string': unicode(course_key)}) certificates_url = '' if settings.FEATURES.get("CERTIFICATES_HTML_VIEW") and context_course.cert_html_view_enabled: - certificates_url = reverse('contentstore.views.certificates.certificates_list_handler', kwargs={'course_key_string': unicode(course_key)}) + certificates_url = reverse('certificates_list_handler', kwargs={'course_key_string': unicode(course_key)}) %>

${_("Current Course:")} @@ -93,7 +93,7 @@ ${_("Course Team")}