diff options
author | Ben Copeland <ben.copeland@linaro.org> | 2018-01-19 17:39:55 +0000 |
---|---|---|
committer | Benjamin Copeland <ben.copeland@linaro.org> | 2018-01-22 15:19:06 +0000 |
commit | 2646c3caad9f2fe25d78a9df17458c2bd92e6539 (patch) | |
tree | 8de60b75813ededdfa1b140592ea45481806b7de | |
parent | b4bb5c68814676963c08f73370b12c765d63d6ad (diff) |
LLP: Changes for Django 1.11
Code changes to get LLP to 1.11. A bunch of features had to be
re-written due to Django deprecating features. A re-write of the url
modules had to be done, where we now need to import the views. We no
longer need to define templates all over the place, just one central
point and the test_views needed to be updated due to the Location header
not having the server URL.
Change-Id: I58f11a230423c9e521a54df3e0e65c72840a73e4
Reviewed-on: https://review.linaro.org/23481
Reviewed-by: Benjamin Copeland <ben.copeland@linaro.org>
Reviewed-by: Kelley Spoon <kelley.spoon@linaro.org>
-rw-r--r-- | license_protected_downloads/tests/test_views.py | 14 | ||||
-rw-r--r-- | requirements.txt | 1 | ||||
-rw-r--r-- | settings.py | 37 | ||||
-rw-r--r-- | urls.py | 141 |
4 files changed, 122 insertions, 71 deletions
diff --git a/license_protected_downloads/tests/test_views.py b/license_protected_downloads/tests/test_views.py index d24519a..76e21bc 100644 --- a/license_protected_downloads/tests/test_views.py +++ b/license_protected_downloads/tests/test_views.py @@ -296,7 +296,7 @@ class ViewTests(BaseServeViewTest): self.assertEqual(response.status_code, 302) url = urlparse.urljoin("http://testserver/", target_file) listing_url = os.path.dirname(url) - self.assertEqual(response['Location'], + self.assertEqual(self.urlbase + response['Location'], listing_url + "?dl=/" + target_file) def test_redirect_to_decline_page_on_decline_license(self): @@ -322,9 +322,9 @@ class ViewTests(BaseServeViewTest): # We should get redirected back to the original file location. self.assertEqual(response.status_code, 302) - listing_url = os.path.dirname(url) + self.assertEqual(response['Location'], - listing_url + "?dl=/" + target_file) + "build-info?dl=/" + target_file) # We should have a license accept cookie. accept_cookie_name = "license_accepted_" + digest @@ -340,7 +340,7 @@ class ViewTests(BaseServeViewTest): # cookies from the current session, and re-introduce them. client = Client() client.cookies[accept_cookie_name] = accept_cookie_name - response = client.get(response['Location']) + response = client.get(self.urlbase + response['Location']) # If we have access to the file, we get a page with "refresh" directive self.assertEqual(response.status_code, 200) @@ -375,7 +375,7 @@ class ViewTests(BaseServeViewTest): url = 'http://testserver/~linaro-android' response = self.client.get(url) self.assertEqual(302, response.status_code) - self.assertEqual(url + '/', response['Location']) + self.assertEqual('/~linaro-android/', response['Location']) def test_parent_dir(self): '''Ensure the listing has the correct parent directory link''' @@ -416,7 +416,7 @@ class ViewTests(BaseServeViewTest): self.assertEqual(response.status_code, 302) url = urlparse.urljoin("http://testserver/", target_file) listing_url = os.path.dirname(url) - self.assertEqual( + self.assertEqual(self.urlbase + response['Location'], listing_url + "?dl=/" + target_file) client = Client() @@ -436,7 +436,7 @@ class ViewTests(BaseServeViewTest): self.assertEqual(response.status_code, 302) url = urlparse.urljoin("http://testserver/", target_file) listing_url = os.path.dirname(url) - self.assertEqual( + self.assertEqual(self.urlbase + response['Location'], listing_url + "?dl=/" + target_file) client = Client() diff --git a/requirements.txt b/requirements.txt index b4f2d5c..97f8bf1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14,5 +14,4 @@ mock testrepository psycopg2 textile -django-openid-auth whitenoise diff --git a/settings.py b/settings.py index 8068a89..8f71885 100644 --- a/settings.py +++ b/settings.py @@ -5,7 +5,6 @@ import os from version import VERSION DEBUG = True -TEMPLATE_DEBUG = DEBUG PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) ROOT_DIR = os.path.split(PROJECT_ROOT)[-1] @@ -89,13 +88,6 @@ STATICFILES_FINDERS = ( # 'django.contrib.staticfiles.finders.DefaultStorageFinder', ) -# List of callables that know how to import templates from various sources. -TEMPLATE_LOADERS = ( - 'django.template.loaders.filesystem.Loader', - 'django.template.loaders.app_directories.Loader', - # 'django.template.loaders.eggs.Loader', -) - MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', @@ -107,9 +99,26 @@ MIDDLEWARE_CLASSES = ( ROOT_URLCONF = 'urls' -TEMPLATE_DIRS = ( - os.path.join(PROJECT_ROOT, "templates"), -) +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [ + os.path.join(PROJECT_ROOT, "templates"), + ], + 'APP_DIRS': False, + 'OPTIONS': { + 'context_processors': [ + 'django.contrib.messages.context_processors.messages', + 'django.contrib.auth.context_processors.auth', + 'license_protected_downloads.context_processors.llp_common', + ], + 'loaders': [ + 'django.template.loaders.filesystem.Loader', + 'django.template.loaders.app_directories.Loader', + ] + }, + }, +] INSTALLED_APPS = ( 'django.contrib.auth', @@ -225,12 +234,6 @@ else: SERVED_PATHS = [os.path.join(PROJECT_ROOT, "sampleroot")] UPLOAD_PATH = os.path.join(PROJECT_ROOT, "sample_upload_root") -TEMPLATE_CONTEXT_PROCESSORS = ( - 'django.contrib.messages.context_processors.messages', - 'django.contrib.auth.context_processors.auth', - 'license_protected_downloads.context_processors.llp_common', -) - # Render TEXTILE files settings. LINUX_FILES = ('README.textile', 'INSTALL.textile', @@ -1,20 +1,71 @@ from django.conf import settings from django.views.generic import RedirectView -try: - from django.conf.urls.defaults import patterns, include, url -except: - # django >= 1.6 - from django.conf.urls import patterns, include, url +from django.conf.urls import include, url +from django.urls import reverse_lazy +from django.views.static import serve + +from django.contrib.auth import views as auth_views + +from license_protected_downloads.views import ( + show_license + as show_license_views, + redirect_to_root + as redirect_to_root_views, + accept_license + as accept_license_views, + get_textile_files + as get_textile_files_views, + reports + as reports_views, + reports_month_file_downloads + as reports_month_file_downloads_views, + reports_month_country + as reports_month_country_views, + reports_month_region + as reports_month_region_views, + reports_month_country_details + as reports_month_country_details_views, + reports_month_region_details + as reports_month_region_details_views, + file_server + as file_server_views, + error_view +) + +# V1 and V2 not used +# Lets import anyway and delete this at a later date +from license_protected_downloads.api.v1 import ( + list_files_api + as list_files_api_views, + get_license_api + as get_license_api_views +) + +from license_protected_downloads.api.v2 import ( + token + as token_v2_views, + publish + as publish_v2_views + ) +from license_protected_downloads.api.v2 import ( + link_latest as + link_v2_latest_views +) + +from license_protected_downloads.api.v3 import token as token_views +from license_protected_downloads.api.v3 import publish as publish_views +from license_protected_downloads.api.v3 import link_latest as link_latest_views + + # Uncomment the next two lines to enable the admin: from django.contrib import admin admin.autodiscover() -urlpatterns = patterns( - '', - url(r'^admin/', include(admin.site.urls)), +urlpatterns = [ + url(r'^admin/', admin.site.urls), # Use "linaro-openid" to allow peaceful coexistence of both # python-apache-openid and django-openid authentication on the @@ -22,83 +73,81 @@ urlpatterns = patterns( # we can go back to using just "openid" here. url(r'^linaro-openid/', include('django_openid_auth.urls')), url(r'^login/?$', - RedirectView.as_view(url='/linaro-openid/login/', permanent=True)), - url(r'^logout/?$', 'django.contrib.auth.views.logout'), + RedirectView.as_view(url='/linaro-openid/login/', permanent=True), + name='login'), + url(r'^logout/?$', + auth_views.logout, + name='logout'), # Handle JS libs and CSS. - url(r'^js/(?P<path>.*)$', 'django.views.static.serve', - {'document_root': settings.JS_PATH}), - url(r'^css/(?P<path>.*)$', 'django.views.static.serve', - {'document_root': settings.CSS_PATH}), + url(r'^js/(?P<path>.*)$', serve, + {'document_root': settings.JS_PATH}), + url(r'^css/(?P<path>.*)$', serve, + {'document_root': settings.CSS_PATH}), # The license page... url(r'^license$', - 'license_protected_downloads.views.show_license', + show_license_views, name='show_license'), # Exceptions redirected to root... url(r'^license', - 'license_protected_downloads.views.redirect_to_root', + redirect_to_root_views, name='redirect_to_root'), # Accept the license url(r'^accept-license', - 'license_protected_downloads.views.accept_license', + accept_license_views, name='accept_license'), # Recursively get files for rendering (async calls accepted only). url(r'^get-textile-files', - 'license_protected_downloads.views.get_textile_files', + get_textile_files_views, name='get_textile_files'), + # V1 and V2 API's not used url(r'^api/ls/(?P<path>.*)$', - 'license_protected_downloads.api.v1.list_files_api'), - + list_files_api_views), url(r'^api/license/(?P<path>.*)$', - 'license_protected_downloads.api.v1.get_license_api'), - + get_license_api_views), url(r'^api/v2/token/(?P<token>.*)$', - 'license_protected_downloads.api.v2.token'), - + token_v2_views), url(r'^api/v2/publish/(?P<path>.*)$', - 'license_protected_downloads.api.v2.publish'), - + publish_v2_views), url(r'^api/v2/link_latest/(?P<path>.*)$', - 'license_protected_downloads.api.v2.link_latest'), + link_v2_latest_views), url(r'^api/v3/token/(?P<token>.*)$', - 'license_protected_downloads.api.v3.token'), + token_views), url(r'^api/v3/publish/(?P<path>.*)$', - 'license_protected_downloads.api.v3.publish'), + publish_views), url(r'^api/v3/link_latest/(?P<path>.*)$', - 'license_protected_downloads.api.v3.link_latest'), -) + link_latest_views), +] if settings.TRACK_DOWNLOAD_STATS: - urlpatterns += patterns( - '', + urlpatterns += [ url(r'^reports/$', - 'license_protected_downloads.views.reports'), + reports_views), url(r'^reports/(?P<year_month>\d{4}\.\d{2})/downloads/$', - 'license_protected_downloads.views.reports_month_downloads'), + reports_month_downloads_views), url(r'^reports/(?P<year_month>\d{4}\.\d{2})/downloads(?P<name>/.*)', - 'license_protected_downloads.views.reports_month_file_downloads'), + reports_month_file_downloads_views), url(r'^reports/(?P<year_month>\d{4}\.\d{2})/country/$', - 'license_protected_downloads.views.reports_month_country'), + reports_month_country_views), url(r'^reports/(?P<year_month>\d{4}\.\d{2})/region/$', - 'license_protected_downloads.views.reports_month_region'), + reports_month_region_views), url(r'^reports/(?P<year_month>\d{4}\.\d{2})/country/(?P<country>.*)/', - 'license_protected_downloads.views.reports_month_country_details'), + reports_month_country_details_views), url(r'^reports/(?P<year_month>\d{4}\.\d{2})/region/(?P<region>.*)/', - 'license_protected_downloads.views.reports_month_region_details'), - ) + reports_month_region_details_views), + ] -urlpatterns += patterns( - '', +urlpatterns += [ # Catch-all. We always return a file (or try to) if it exists. # This handler does that. - url(r'(?P<path>.*)', 'license_protected_downloads.views.file_server'), -) + url(r'(?P<path>.*)', file_server_views), +] -handler500 = 'license_protected_downloads.views.error_view' +handler500 = error_view |