Merge lp:~cjwatson/isitdeployable/django-1.11 into lp:isitdeployable

Proposed by Colin Watson
Status: Merged
Approved by: Colin Watson
Approved revision: 285
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: lp:~cjwatson/isitdeployable/django-1.11
Merge into: lp:isitdeployable
Diff against target: 351 lines (+77/-77)
11 files modified
Makefile.db (+0/-1)
Makefile.docker (+0/-1)
checklist/urls.py (+11/-9)
dependencies.txt (+0/-1)
django_project/settings_base.py (+14/-12)
django_project/urls.py (+13/-10)
requirements.txt (+7/-8)
revtracker/data.py (+2/-2)
revtracker/tests/test_views_logged_in.py (+6/-10)
revtracker/urls.py (+23/-21)
setup.py (+1/-2)
To merge this branch: bzr merge lp:~cjwatson/isitdeployable/django-1.11
Reviewer Review Type Date Requested Status
Ricardo Kirkner (community) Approve
Review via email: mp+336882@code.launchpad.net

Commit message

Upgrade to Django 1.11.

Description of the change

I seem to be on a roll, so let's keep going (but I think this is probably about it for now). This was straightforward enough that I decided to go all the way to the next Django LTS. I've done the usual manual testing of behaviour with both bzr and git projects, as well as ensuring that "make docker-test" passes.

Requires https://code.launchpad.net/~cjwatson/isitdeployable-dependencies/django-1.11/+merge/336881.

To post a comment you must log in.
Revision history for this message
Ricardo Kirkner (ricardokirkner) wrote :

LGTM

review: Approve
285. By Colin Watson

Merge trunk.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'Makefile.db'
2--- Makefile.db 2017-09-08 12:27:04 +0000
3+++ Makefile.db 2018-01-31 14:39:16 +0000
4@@ -35,7 +35,6 @@
5
6 start-db:
7 $(MAKE) setup-db
8- $(DJANGO_MANAGE) syncdb --noinput # TODO: Remove once south is dropped.
9 $(MAKE) migrate
10
11 stop-db:
12
13=== modified file 'Makefile.docker'
14--- Makefile.docker 2018-01-31 13:04:52 +0000
15+++ Makefile.docker 2018-01-31 14:39:16 +0000
16@@ -63,7 +63,6 @@
17 app-update-db: DB_USER=$(shell echo $(DATABASE_URL) | cut -d ':' -f 2 | cut -d '@' -f 1 | sed -e 's|//||')
18 app-update-db: export DATABASE_URL=$(ADMIN_DATABASE_URL)
19 app-update-db:
20- $(MAKE) manage ARGS='syncdb --noinput' PYTHON=python
21 $(MAKE) manage ARGS='migrate --noinput' PYTHON=python
22 $(MAKE) manage ARGS='grantuser $(DB_USER)' PYTHON=python
23
24
25=== modified file 'checklist/urls.py'
26--- checklist/urls.py 2014-03-27 20:10:52 +0000
27+++ checklist/urls.py 2018-01-31 14:39:16 +0000
28@@ -1,10 +1,12 @@
29-from django.conf.urls import patterns, include, url
30-
31-api_v1_urls = patterns('checklist.views',
32- url(r'^step/(?P<step_id>\d+)/\+set-description$', 'api_v1_step_set_description', name="api_v1_step_set_description"),
33-)
34-
35-
36-urlpatterns = patterns('checklist.views',
37+from django.conf.urls import include, url
38+
39+from checklist import views
40+
41+api_v1_urls = [
42+ url(r'^step/(?P<step_id>\d+)/\+set-description$', views.api_v1_step_set_description, name="api_v1_step_set_description"),
43+]
44+
45+
46+urlpatterns = [
47 url(r'^api/v1/', include(api_v1_urls)),
48-)
49+]
50
51=== modified file 'dependencies.txt'
52--- dependencies.txt 2018-01-30 15:33:52 +0000
53+++ dependencies.txt 2018-01-31 14:39:16 +0000
54@@ -32,7 +32,6 @@
55 python-paste
56 python-piston-mini-client
57 python-polib
58-python-psycopg2
59 python-pygooglechart
60 python-reportlab
61 python-restrictedpython
62
63=== modified file 'django_project/settings_base.py'
64--- django_project/settings_base.py 2018-01-29 15:34:06 +0000
65+++ django_project/settings_base.py 2018-01-31 14:39:16 +0000
66@@ -50,7 +50,6 @@
67 'django.contrib.messages',
68 'django.contrib.staticfiles',
69 'django.contrib.admin',
70- 'devserver',
71 'django_comments',
72 'django_openid_auth',
73 'djcelery',
74@@ -126,17 +125,20 @@
75 'django.contrib.staticfiles.finders.FileSystemFinder',
76 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
77 )
78-TEMPLATE_CONTEXT_PROCESSORS = (
79- "django.contrib.auth.context_processors.auth",
80- "django.core.context_processors.csrf",
81- "django.core.context_processors.static",
82- "django.core.context_processors.request",
83-)
84-TEMPLATE_LOADERS = (
85- 'django.template.loaders.filesystem.Loader',
86- 'django.template.loaders.app_directories.Loader',
87- 'django.template.loaders.eggs.Loader',
88-)
89+TEMPLATES = [
90+ {
91+ 'BACKEND': 'django.template.backends.django.DjangoTemplates',
92+ 'APP_DIRS': True,
93+ 'OPTIONS': {
94+ 'context_processors': [
95+ 'django.contrib.auth.context_processors.auth',
96+ 'django.template.context_processors.csrf',
97+ 'django.template.context_processors.static',
98+ 'django.template.context_processors.request',
99+ ],
100+ },
101+ },
102+]
103 TEST_RUNNER = 'django.test.runner.DiscoverRunner'
104 TIME_ZONE = 'UTC'
105 USE_I18N = True
106
107=== modified file 'django_project/urls.py'
108--- django_project/urls.py 2016-01-27 04:23:46 +0000
109+++ django_project/urls.py 2018-01-31 14:39:16 +0000
110@@ -1,28 +1,31 @@
111 from django.conf import settings
112 from django.contrib import admin
113-from django.conf.urls import patterns, include, url
114+from django.conf.urls import include, url
115 from django.contrib.staticfiles.urls import staticfiles_urlpatterns
116 from django.views.generic import RedirectView
117+from django.views.static import serve
118 import django_openid_auth.urls
119
120 import djcelery
121 djcelery.setup_loader()
122
123+from revtracker import views
124+
125 admin.autodiscover()
126
127-urlpatterns = patterns('',
128+urlpatterns = [
129 url(r'^', include('revtracker.urls')),
130 url(r'^admin/', include(admin.site.urls)),
131 url(r'^openid/', include(django_openid_auth.urls)),
132 url(r'^checklist/', include('checklist.urls')),
133- # combo view for serving css outside dev/ prefi
134- url(r'^combo/rev-\w+/$', 'revtracker.views.combo_view', name='dpa-combo-link'),
135- url(r'^combo/$', 'revtracker.views.combo_view', name='dpa-combo'),
136- (r'^favicon\.ico$', RedirectView.as_view(url='%s/favicon.ico' % settings.STATIC_URL)),
137-)
138+ # combo view for serving css outside dev/ prefix
139+ url(r'^combo/rev-\w+/$', views.combo_view, name='dpa-combo-link'),
140+ url(r'^combo/$', views.combo_view, name='dpa-combo'),
141+ url(r'^favicon\.ico$', RedirectView.as_view(url='%s/favicon.ico' % settings.STATIC_URL)),
142+]
143
144-urlpatterns += patterns('',
145- (r'^assets/(.*)', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}),
146-)
147+urlpatterns += [
148+ url(r'^assets/(.*)', serve, {'document_root': settings.STATIC_ROOT}),
149+]
150
151 urlpatterns += staticfiles_urlpatterns()
152
153=== modified file 'requirements.txt'
154--- requirements.txt 2018-01-30 15:33:52 +0000
155+++ requirements.txt 2018-01-31 14:39:16 +0000
156@@ -7,18 +7,17 @@
157 bson==0.3.3
158 celery==3.1.23
159 convoy==0.2.4
160-Django==1.8.18
161-django-celery==3.1.17
162+Django==1.11.9
163+django-celery==3.2.2
164 django-contrib-comments==1.8.0
165 django-debug-toolbar==1.9.1
166-django-devserver==0.7.0
167 django-getenv==1.3.1
168 django-kombu==0.9.4
169-django-openid-auth==0.9
170-django-ordered-model==1.1.0
171+django-openid-auth==0.14
172+django-ordered-model==1.4.3
173 django-picklefield==0.2.1
174-django-pgtools==0.2
175-django-waffle==0.10.1
176+django-pgtools==0.4.2
177+django-waffle==0.13.0
178 dj-database-url==0.4.2
179 gorun==1.7
180 gunicorn==19.3.0
181@@ -37,7 +36,7 @@
182 oops-dictconfig==0.0.2
183 oops-wsgi==0.0.11
184 Paste==1.7.5.1
185-psycopg2==2.4.5
186+psycopg2==2.7.3.2
187 pybars==0.0.4
188 pygit2==0.24.2
189 PyMeta==0.5.0
190
191=== modified file 'revtracker/data.py'
192--- revtracker/data.py 2018-01-29 15:34:06 +0000
193+++ revtracker/data.py 2018-01-31 14:39:16 +0000
194@@ -341,8 +341,8 @@
195 def deployment_requests(status=DeploymentRequest.STATUS_WAITING):
196 requests = DeploymentRequest.objects.filter(
197 status=status,
198- ).select_related('project__name', 'deploy_revision__revno',
199- 'requester__username', 'completer__username',
200+ ).select_related('project', 'deploy_revision',
201+ 'requester', 'completer',
202 )
203 if status == DeploymentRequest.STATUS_WAITING:
204 requests = requests.order_by('-date_created')
205
206=== modified file 'revtracker/tests/test_views_logged_in.py'
207--- revtracker/tests/test_views_logged_in.py 2018-01-29 14:57:56 +0000
208+++ revtracker/tests/test_views_logged_in.py 2018-01-31 14:39:16 +0000
209@@ -2,6 +2,7 @@
210 import soupmatchers
211
212 from django.core.urlresolvers import reverse
213+from django.test import override_settings
214
215 from revtracker.models import Project, Revision
216 from revtracker.tests import (
217@@ -19,10 +20,9 @@
218 )
219
220
221+@override_settings(ROOT_URLCONF='revtracker.urls')
222 class IndexViewTests(TestCase):
223
224- urls = 'revtracker.urls'
225-
226 def setUp(self):
227 super(IndexViewTests, self).setUp()
228 self.create_user_and_log_in()
229@@ -110,10 +110,9 @@
230 text=re.compile("0 revisions need QA")))))
231
232
233+@override_settings(ROOT_URLCONF='revtracker.urls')
234 class ProjectViewTests(TestCase):
235
236- urls = 'revtracker.urls'
237-
238 def setUp(self):
239 super(ProjectViewTests, self).setUp()
240 self.create_user_and_log_in()
241@@ -295,10 +294,9 @@
242 html_matches=ProjectUpdateDeployedRevisionForm(project)))
243
244
245+@override_settings(ROOT_URLCONF='revtracker.urls')
246 class ProjectUpdateRevisionTests(TestCase):
247
248- urls = 'revtracker.urls'
249-
250 def setUp(self):
251 super(ProjectUpdateRevisionTests, self).setUp()
252 self.create_user_and_log_in()
253@@ -335,10 +333,9 @@
254 self.assertEqual(revision, project.deployed_revision)
255
256
257+@override_settings(ROOT_URLCONF='revtracker.urls')
258 class ProjectChangeRevisionStatusTests(TestCase):
259
260- urls = 'revtracker.urls'
261-
262 def setUp(self):
263 super(ProjectChangeRevisionStatusTests, self).setUp()
264 self.create_user_and_log_in()
265@@ -374,10 +371,9 @@
266 self.assertEqual(400, response.status_code)
267
268
269+@override_settings(ROOT_URLCONF='revtracker.urls')
270 class PersonViewTests(TestCase):
271
272- urls = 'revtracker.urls'
273-
274 def setUp(self):
275 super(PersonViewTests, self).setUp()
276 self.create_user_and_log_in()
277
278=== modified file 'revtracker/urls.py'
279--- revtracker/urls.py 2018-01-29 15:34:06 +0000
280+++ revtracker/urls.py 2018-01-31 14:39:16 +0000
281@@ -1,26 +1,28 @@
282-from django.conf.urls import patterns, include, url
283+from django.conf.urls import include, url
284 from django_comments import urls as comments_urls
285
286-api_v1_urls = patterns('revtracker.views',
287- url(r'^project/(?P<project_name>[\w\-]+)$', 'api_v1_project'),
288- url(r'^project/(?P<project_name>[\w\-]+)/\+set-deployed$', 'api_v1_project_set_deployed'),
289- url(r'^project/(?P<project_name>[\w\-]+)/\+revision-by-pk/(?P<pk>[\d]+)/\+change-status$', 'api_v1_project_change_revision_status'),
290- url(r'^project/(?P<project_name>[\w\-]+)/\+set-description$', 'api_v1_project_set_description', name="api_v1_project_set_description"),
291- url(r'^person/(?P<person_name>[\w\.\-]+)$', 'api_v1_person'),
292-)
293-
294-urlpatterns = patterns('revtracker.views',
295- url(r'^$', 'index', name="index"),
296- url(r'^help$', 'help', name="help"),
297- url(r'^project/(?P<project_name>[\w\-]+)$', 'project', name="project_view"),
298- url(r'^project/(?P<project_name>[\w\-]+)/\+revision-by-pk/(?P<pk>[\d]+)/\+change-status$', 'project_change_revision_status', name="project_change_revision_status"),
299- url(r'^project/(?P<project_name>[\w\-]+)/\+revision-by-pk/(?P<pk>[\d]+)/\+set-rollback$', 'project_set_revision_rollback', name="project_set_revision_rollback"),
300- url(r'^project/(?P<project_name>[\w\-]+)/\+deployment-request/(?P<pk>[\d]+)$', 'deployment_request', name="deployment_request"),
301- url(r'^project/(?P<project_name>[\w\-]+)/deployment-checklist$', 'project_checklist', name="project_checklist"),
302- url(r'^person/(?P<person_name>[\w\.\-]+)$', 'person', name="person_view"),
303+from revtracker import views
304+
305+
306+api_v1_urls = [
307+ url(r'^project/(?P<project_name>[\w\-]+)$', views.api_v1_project),
308+ url(r'^project/(?P<project_name>[\w\-]+)/\+set-deployed$', views.api_v1_project_set_deployed),
309+ url(r'^project/(?P<project_name>[\w\-]+)/\+revision-by-pk/(?P<pk>[\d]+)/\+change-status$', views.api_v1_project_change_revision_status),
310+ url(r'^project/(?P<project_name>[\w\-]+)/\+set-description$', views.api_v1_project_set_description, name="api_v1_project_set_description"),
311+ url(r'^person/(?P<person_name>[\w\.\-]+)$', views.api_v1_person),
312+]
313+
314+urlpatterns = [
315+ url(r'^$', views.index, name="index"),
316+ url(r'^help$', views.help, name="help"),
317+ url(r'^project/(?P<project_name>[\w\-]+)$', views.project, name="project_view"),
318+ url(r'^project/(?P<project_name>[\w\-]+)/\+revision-by-pk/(?P<pk>[\d]+)/\+change-status$', views.project_change_revision_status, name="project_change_revision_status"),
319+ url(r'^project/(?P<project_name>[\w\-]+)/\+revision-by-pk/(?P<pk>[\d]+)/\+set-rollback$', views.project_set_revision_rollback, name="project_set_revision_rollback"),
320+ url(r'^project/(?P<project_name>[\w\-]+)/\+deployment-request/(?P<pk>[\d]+)$', views.deployment_request, name="deployment_request"),
321+ url(r'^project/(?P<project_name>[\w\-]+)/deployment-checklist$', views.project_checklist, name="project_checklist"),
322+ url(r'^person/(?P<person_name>[\w\.\-]+)$', views.person, name="person_view"),
323 url(r'^comments/', include(comments_urls)),
324- url(r'^deployment-requests/$', 'deployment_requests', name="deployment_requests"),
325+ url(r'^deployment-requests/$', views.deployment_requests, name="deployment_requests"),
326
327 url(r'^api/v1/', include(api_v1_urls)),
328-)
329-
330+]
331
332=== modified file 'setup.py'
333--- setup.py 2018-01-29 15:34:06 +0000
334+++ setup.py 2018-01-31 14:39:16 +0000
335@@ -7,7 +7,7 @@
336 author_email="canonical-consumer-applications@lists.launchpad.net",
337 license="AGPL3",
338 install_requires=[
339- 'Django>=1.8',
340+ 'Django==1.11.*',
341 'soupmatchers==0.2',
342 'testtools',
343 'django-contrib-comments',
344@@ -23,7 +23,6 @@
345 'Markdown',
346 'psycopg2',
347 'django-waffle',
348- 'django-devserver',
349 'django-ordered-model',
350 'django-pgtools',
351 'werkzeug',

Subscribers

People subscribed via source and target branches