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

Proposed by Colin Watson
Status: Merged
Approved by: Colin Watson
Approved revision: 274
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: lp:~cjwatson/isitdeployable/django-1.8
Merge into: lp:isitdeployable
Prerequisite: lp:~cjwatson/isitdeployable/drop-django-factory
Diff against target: 171 lines (+15/-22)
8 files modified
django_project/settings_base.py (+1/-7)
requirements.txt (+4/-4)
revtracker/data.py (+1/-3)
revtracker/tests/factory.py (+1/-1)
revtracker/tests/test_views.py (+2/-2)
revtracker/urls.py (+1/-1)
revtracker/views.py (+3/-3)
setup.py (+2/-1)
To merge this branch: bzr merge lp:~cjwatson/isitdeployable/django-1.8
Reviewer Review Type Date Requested Status
Ricardo Kirkner (community) Approve
Daniel Manrique (community) Approve
Review via email: mp+336784@code.launchpad.net

Commit message

Upgrade to Django 1.8.

To post a comment you must log in.
274. By Colin Watson

Upgrade to Django 1.8.

Revision history for this message
Daniel Manrique (roadmr) wrote :

Wow was this really all that was needed? (other than the prereq branches you've already taken care of) How about lingering deprecation warnings? Did it behave properly while manual-testing? (I know the deployable test suite is not super thorough).

LGTM, I do recall the main sticking point was the django_comments thing but that seems to be solved here.

Also, I don't see updates to https://code.launchpad.net/~ubuntuone-hackers/isitdeployable-dependencies/trunk, I don't recall the situation here because we're now building a docker image and I don't remember if we still use that dependencies branch with wheels. Just curious; the need for updating that branch will be apparent if the docker image fails to build :)

In any case, +1, since this looks good in general, I have a couple of comments but they shouldn't be blocking.

review: Approve
Revision history for this message
Ricardo Kirkner (ricardokirkner) :
Revision history for this message
Colin Watson (cjwatson) wrote :

There are some deprecation warnings for 1.9 now, but those can be handled in a later step. I've done some manual experimentation and the site seems to be behaving itself: I was able to create a project in the admin view, wait for the worker to scan it, see my pending QA, mark revisions as good/bad, create deployment requests, and mark deployment requests as deployed.

Oops, sorry about forgetting dependencies - I only had them locally. I've pushed an MP for that now (https://code.launchpad.net/~cjwatson/isitdeployable-dependencies/django-1.8/+merge/336790).

Revision history for this message
Ricardo Kirkner (ricardokirkner) wrote :

LGTM

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'django_project/settings_base.py'
2--- django_project/settings_base.py 2017-08-25 18:25:11 +0000
3+++ django_project/settings_base.py 2018-01-29 15:34:29 +0000
4@@ -49,9 +49,9 @@
5 'django.contrib.sites',
6 'django.contrib.messages',
7 'django.contrib.staticfiles',
8- 'django.contrib.comments',
9 'django.contrib.admin',
10 'devserver',
11+ 'django_comments',
12 'django_openid_auth',
13 'djcelery',
14 'revtracker',
15@@ -142,12 +142,6 @@
16 USE_I18N = True
17 USE_L10N = True
18
19-# debug-toolbar settings
20-
21-DEBUG_TOOLBAR_CONFIG = {
22- 'INTERCEPT_REDIRECTS': False,
23-}
24-
25 # celery settings
26
27 CELERY_BROKER_URL = os.getenv('CELERY_BROKER_URL', 'amqp://')
28
29=== modified file 'requirements.txt'
30--- requirements.txt 2018-01-29 15:34:29 +0000
31+++ requirements.txt 2018-01-29 15:34:29 +0000
32@@ -7,15 +7,15 @@
33 bson==0.3.3
34 celery==3.1.23
35 convoy==0.2.4
36-Django==1.7.11
37+Django==1.8.18
38 django-celery==3.1.17
39-django-debug-toolbar==0.10.0
40+django-contrib-comments==1.8.0
41+django-debug-toolbar==1.9.1
42 django-devserver==0.7.0
43 django-getenv==1.3.1
44 django-kombu==0.9.4
45 django-openid-auth==0.9
46-# A checkout of https://github.com/bfirsh/django-ordered-model at 2998740eeda348473d8a8965b40b2292c31efd85
47-django-ordered-model==0.3.0.jw1
48+django-ordered-model==1.1.0
49 django-picklefield==0.2.1
50 django-pgtools==0.2
51 django-waffle==0.10.1
52
53=== modified file 'revtracker/data.py'
54--- revtracker/data.py 2018-01-29 15:34:29 +0000
55+++ revtracker/data.py 2018-01-29 15:34:29 +0000
56@@ -9,12 +9,10 @@
57 #
58 # What's the best interface to get that info in the fewest queries?
59
60-import operator
61-
62 from django.core.urlresolvers import reverse
63-from django.contrib.comments.models import Comment
64 from django.contrib.contenttypes.models import ContentType
65 from django.db.models import F
66+from django_comments.models import Comment
67
68 from .models import (
69 DeploymentRequest,
70
71=== modified file 'revtracker/tests/factory.py'
72--- revtracker/tests/factory.py 2018-01-29 15:34:29 +0000
73+++ revtracker/tests/factory.py 2018-01-29 15:34:29 +0000
74@@ -6,9 +6,9 @@
75
76 from django.contrib.auth import get_user_model
77 from django.contrib.auth.models import Group
78-from django.contrib.comments.models import Comment
79 from django.contrib.contenttypes.models import ContentType
80 from django.contrib.sites.models import Site
81+from django_comments.models import Comment
82
83 from revtracker.models import (
84 DeploymentRequest,
85
86=== modified file 'revtracker/tests/test_views.py'
87--- revtracker/tests/test_views.py 2018-01-29 15:34:29 +0000
88+++ revtracker/tests/test_views.py 2018-01-29 15:34:29 +0000
89@@ -48,7 +48,7 @@
90 def test_query_count(self):
91 project = self.factory.make_project()
92 self.factory.make_revision(project=project, status=Revision.STATUS_OK)
93- self.assertNumQueries(4, views.index_data)
94+ self.assertNumQueries(5, views.index_data)
95
96 def test_query_count_multiple(self):
97 project = self.factory.make_project()
98@@ -56,7 +56,7 @@
99 project = self.factory.make_project()
100 self.factory.make_revision(project=project, status=Revision.STATUS_OK)
101 # FIXME: O(projects)
102- self.assertNumQueries(7, views.index_data)
103+ self.assertNumQueries(8, views.index_data)
104
105
106 class GetProjectInfoTests(TestCase):
107
108=== modified file 'revtracker/urls.py'
109--- revtracker/urls.py 2014-03-27 18:22:19 +0000
110+++ revtracker/urls.py 2018-01-29 15:34:29 +0000
111@@ -1,5 +1,5 @@
112 from django.conf.urls import patterns, include, url
113-from django.contrib.comments import urls as comments_urls
114+from django_comments import urls as comments_urls
115
116 api_v1_urls = patterns('revtracker.views',
117 url(r'^project/(?P<project_name>[\w\-]+)$', 'api_v1_project'),
118
119=== modified file 'revtracker/views.py'
120--- revtracker/views.py 2018-01-29 15:34:29 +0000
121+++ revtracker/views.py 2018-01-29 15:34:29 +0000
122@@ -5,7 +5,6 @@
123 from checklist import data as checklist_data
124 from django.conf import settings
125 from django.contrib.auth.models import User
126-from django.contrib.comments.forms import CommentForm
127 from django.core.urlresolvers import reverse
128 from django.http import (
129 Http404,
130@@ -20,6 +19,7 @@
131 require_GET,
132 require_POST,
133 )
134+from django_comments.forms import CommentForm
135 import waffle
136 from waffle.decorators import waffle_flag
137
138@@ -185,7 +185,7 @@
139
140
141 def index_data():
142- projects = Project.objects.all().select_related('revision_set')
143+ projects = Project.objects.all().prefetch_related('revision_set')
144 info = dict()
145 info['projects'] = [index_project_to_info(project) for project in projects]
146 return info
147@@ -224,7 +224,7 @@
148
149 def get_project(name):
150 try:
151- return Project.objects.filter(name__exact=name).select_related('revision_set', 'deployed_revision').get()
152+ return Project.objects.filter(name__exact=name).select_related('deployed_revision').prefetch_related('revision_set').get()
153 except Project.DoesNotExist:
154 raise Http404('No such project: %s' % str(name))
155
156
157=== modified file 'setup.py'
158--- setup.py 2018-01-29 15:34:29 +0000
159+++ setup.py 2018-01-29 15:34:29 +0000
160@@ -7,9 +7,10 @@
161 author_email="canonical-consumer-applications@lists.launchpad.net",
162 license="AGPL3",
163 install_requires=[
164- 'Django==1.5.1',
165+ 'Django>=1.8',
166 'soupmatchers==0.2',
167 'testtools',
168+ 'django-contrib-comments',
169 'django_openid_auth',
170 'celery',
171 'django-celery',

Subscribers

People subscribed via source and target branches