Merge lp:~cjwatson/isitdeployable/py3-syntax-and-imports into lp:isitdeployable
- py3-syntax-and-imports
- Merge into trunk
Proposed by
Colin Watson
Status: | Merged |
---|---|
Approved by: | Colin Watson |
Approved revision: | 271 |
Merge reported by: | Otto Co-Pilot |
Merged at revision: | not available |
Proposed branch: | lp:~cjwatson/isitdeployable/py3-syntax-and-imports |
Merge into: | lp:isitdeployable |
Diff against target: |
326 lines (+37/-43) 11 files modified
requirements.txt (+1/-0) revtracker/data.py (+10/-10) revtracker/models.py (+2/-2) revtracker/tasks.py (+7/-7) revtracker/tests/__init__.py (+0/-5) revtracker/tests/test_data.py (+1/-3) revtracker/tests/test_tasks.py (+2/-2) revtracker/tests/test_views.py (+1/-1) revtracker/tests/test_views_logged_in.py (+2/-2) revtracker/views.py (+10/-11) setup.py (+1/-0) |
To merge this branch: | bzr merge lp:~cjwatson/isitdeployable/py3-syntax-and-imports |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ricardo Kirkner (community) | Approve | ||
Review via email: mp+336769@code.launchpad.net |
Commit message
Make various bits of syntax and standard library imports compatible with Python 3.
Description of the change
To post a comment you must log in.
Revision history for this message
Otto Co-Pilot (otto-copilot) wrote : | # |
Running landing tests failed
https:/
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'requirements.txt' | |||
2 | --- requirements.txt 2017-10-03 15:08:45 +0000 | |||
3 | +++ requirements.txt 2018-01-29 11:51:32 +0000 | |||
4 | @@ -42,6 +42,7 @@ | |||
5 | 42 | pybars==0.0.4 | 42 | pybars==0.0.4 |
6 | 43 | PyMeta==0.5.0 | 43 | PyMeta==0.5.0 |
7 | 44 | pyinotify==0.9.3 | 44 | pyinotify==0.9.3 |
8 | 45 | six==1.10.0 | ||
9 | 45 | soupmatchers==0.2 | 46 | soupmatchers==0.2 |
10 | 46 | testresources==0.2.5 | 47 | testresources==0.2.5 |
11 | 47 | testtools==0.9.16 | 48 | testtools==0.9.16 |
12 | 48 | 49 | ||
13 | === modified file 'revtracker/data.py' | |||
14 | --- revtracker/data.py 2016-09-27 14:31:46 +0000 | |||
15 | +++ revtracker/data.py 2018-01-29 11:51:32 +0000 | |||
16 | @@ -149,9 +149,9 @@ | |||
17 | 149 | child_revisions_needing_qa = Revision.objects.filter( | 149 | child_revisions_needing_qa = Revision.objects.filter( |
18 | 150 | status__exact=Revision.STATUS_UNKNOWN, parent__in=undeployed_revisions) | 150 | status__exact=Revision.STATUS_UNKNOWN, parent__in=undeployed_revisions) |
19 | 151 | revisions = list(child_revisions_needing_qa) | 151 | revisions = list(child_revisions_needing_qa) |
23 | 152 | def is_unknown(rev): | 152 | revisions += [ |
24 | 153 | return rev.status == rev.STATUS_UNKNOWN | 153 | rev for rev in undeployed_revisions |
25 | 154 | revisions += filter(is_unknown, undeployed_revisions) | 154 | if rev.status == rev.STATUS_UNKNOWN] |
26 | 155 | return revisions | 155 | return revisions |
27 | 156 | 156 | ||
28 | 157 | 157 | ||
29 | @@ -172,7 +172,7 @@ | |||
30 | 172 | pk is not in the dict for one of the input revisions, | 172 | pk is not in the dict for one of the input revisions, |
31 | 173 | it indicates that the project isn't deployed. | 173 | it indicates that the project isn't deployed. |
32 | 174 | """ | 174 | """ |
34 | 175 | projects = map(operator.attrgetter('project'), revisions) | 175 | projects = [rev.project for rev in revisions] |
35 | 176 | revnos = dict(Revision.objects.filter(project__in=projects, | 176 | revnos = dict(Revision.objects.filter(project__in=projects, |
36 | 177 | pk=F('project__deployed_revision')).values_list('project', 'revno')) | 177 | pk=F('project__deployed_revision')).values_list('project', 'revno')) |
37 | 178 | return revnos | 178 | return revnos |
38 | @@ -221,9 +221,9 @@ | |||
39 | 221 | if children: | 221 | if children: |
40 | 222 | if revision.status in (revision.STATUS_BAD, revision.STATUS_UNKNOWN): | 222 | if revision.status in (revision.STATUS_BAD, revision.STATUS_UNKNOWN): |
41 | 223 | status = revision.status | 223 | status = revision.status |
43 | 224 | elif filter(lambda c: c.status==revision.STATUS_BAD, children): | 224 | elif any(c.status == revision.STATUS_BAD for c in children): |
44 | 225 | status = revision.STATUS_BAD | 225 | status = revision.STATUS_BAD |
46 | 226 | elif filter(lambda c: c.status==revision.STATUS_UNKNOWN, children): | 226 | elif any(c.status == revision.STATUS_UNKNOWN for c in children): |
47 | 227 | status = revision.STATUS_UNKNOWN | 227 | status = revision.STATUS_UNKNOWN |
48 | 228 | else: | 228 | else: |
49 | 229 | status = revision.status | 229 | status = revision.status |
50 | @@ -279,7 +279,7 @@ | |||
51 | 279 | then it will not be in the dict. | 279 | then it will not be in the dict. |
52 | 280 | """ | 280 | """ |
53 | 281 | query = Revision.objects.filter( | 281 | query = Revision.objects.filter( |
55 | 282 | parent__pk__in=map(operator.attrgetter('pk'), parents), | 282 | parent__pk__in=[rev.pk for rev in parents], |
56 | 283 | ).extra(order_by=['branch', 'revno']).select_related('committer') | 283 | ).extra(order_by=['branch', 'revno']).select_related('committer') |
57 | 284 | child_map = {} | 284 | child_map = {} |
58 | 285 | for child in query: | 285 | for child in query: |
59 | @@ -298,7 +298,7 @@ | |||
60 | 298 | be in the dict. | 298 | be in the dict. |
61 | 299 | """ | 299 | """ |
62 | 300 | parent_map = dict(Revision.objects.filter( | 300 | parent_map = dict(Revision.objects.filter( |
64 | 301 | pk__in=map(operator.attrgetter('pk'), revisions)).exclude( | 301 | pk__in=[rev.pk for rev in revisions]).exclude( |
65 | 302 | parent__exact=None, | 302 | parent__exact=None, |
66 | 303 | ).values_list('pk', 'parent__revno')) | 303 | ).values_list('pk', 'parent__revno')) |
67 | 304 | return parent_map | 304 | return parent_map |
68 | @@ -318,7 +318,7 @@ | |||
69 | 318 | return dict() | 318 | return dict() |
70 | 319 | content_type_id = ContentType.objects.get_for_model(revisions[0]).pk | 319 | content_type_id = ContentType.objects.get_for_model(revisions[0]).pk |
71 | 320 | comments = Comment.objects.filter(content_type__exact=content_type_id, | 320 | comments = Comment.objects.filter(content_type__exact=content_type_id, |
73 | 321 | object_pk__in=map(operator.attrgetter('pk'), revisions)).select_related('user') | 321 | object_pk__in=[rev.pk for rev in revisions]).select_related('user') |
74 | 322 | comment_map = dict() | 322 | comment_map = dict() |
75 | 323 | for comment in comments: | 323 | for comment in comments: |
76 | 324 | object_pk = int(comment.object_pk) | 324 | object_pk = int(comment.object_pk) |
77 | @@ -351,4 +351,4 @@ | |||
78 | 351 | else: | 351 | else: |
79 | 352 | requests = requests.order_by('-date_completed') | 352 | requests = requests.order_by('-date_completed') |
80 | 353 | requests = requests[:100] | 353 | requests = requests[:100] |
82 | 354 | return map(deployment_request_summary, requests) | 354 | return [deployment_request_summary(request) for request in requests] |
83 | 355 | 355 | ||
84 | === modified file 'revtracker/models.py' | |||
85 | --- revtracker/models.py 2016-11-11 20:15:39 +0000 | |||
86 | +++ revtracker/models.py 2018-01-29 11:51:32 +0000 | |||
87 | @@ -46,7 +46,7 @@ | |||
88 | 46 | 46 | ||
89 | 47 | class Revision(models.Model): | 47 | class Revision(models.Model): |
90 | 48 | 48 | ||
92 | 49 | (STATUS_UNKNOWN, STATUS_OK, STATUS_BAD, STATUS_UNTESTABLE) = range(4) | 49 | (STATUS_UNKNOWN, STATUS_OK, STATUS_BAD, STATUS_UNTESTABLE) = list(range(4)) |
93 | 50 | 50 | ||
94 | 51 | STATUS_CHOICES = ( | 51 | STATUS_CHOICES = ( |
95 | 52 | (STATUS_UNKNOWN, 'Unknown'), | 52 | (STATUS_UNKNOWN, 'Unknown'), |
96 | @@ -124,7 +124,7 @@ | |||
97 | 124 | 124 | ||
98 | 125 | class DeploymentRequest(models.Model): | 125 | class DeploymentRequest(models.Model): |
99 | 126 | 126 | ||
101 | 127 | (STATUS_WAITING, STATUS_COMPLETE) = range(2) | 127 | (STATUS_WAITING, STATUS_COMPLETE) = list(range(2)) |
102 | 128 | 128 | ||
103 | 129 | STATUS_CHOICES = ( | 129 | STATUS_CHOICES = ( |
104 | 130 | (STATUS_WAITING, 'Waiting'), | 130 | (STATUS_WAITING, 'Waiting'), |
105 | 131 | 131 | ||
106 | === modified file 'revtracker/tasks.py' | |||
107 | --- revtracker/tasks.py 2017-10-03 16:36:16 +0000 | |||
108 | +++ revtracker/tasks.py 2018-01-29 11:51:32 +0000 | |||
109 | @@ -1,15 +1,10 @@ | |||
110 | 1 | from __future__ import print_function | 1 | from __future__ import print_function |
111 | 2 | 2 | ||
113 | 3 | from email.Utils import parseaddr | 3 | from email.utils import parseaddr |
114 | 4 | import os | 4 | import os |
115 | 5 | import re | 5 | import re |
116 | 6 | import shutil | 6 | import shutil |
117 | 7 | import tempfile | 7 | import tempfile |
118 | 8 | from urlparse import ( | ||
119 | 9 | unquote, | ||
120 | 10 | urlsplit, | ||
121 | 11 | urlunsplit, | ||
122 | 12 | ) | ||
123 | 13 | 8 | ||
124 | 14 | from bzrlib import ( | 9 | from bzrlib import ( |
125 | 15 | errors as bzr_errors, | 10 | errors as bzr_errors, |
126 | @@ -24,6 +19,11 @@ | |||
127 | 24 | from django.contrib.auth.models import User | 19 | from django.contrib.auth.models import User |
128 | 25 | from django.db.models import Max | 20 | from django.db.models import Max |
129 | 26 | import pygit2 | 21 | import pygit2 |
130 | 22 | from six.moves.urllib.parse import ( | ||
131 | 23 | unquote, | ||
132 | 24 | urlsplit, | ||
133 | 25 | urlunsplit, | ||
134 | 26 | ) | ||
135 | 27 | 27 | ||
136 | 28 | from revtracker.launchpad import get_launchpad | 28 | from revtracker.launchpad import get_launchpad |
137 | 29 | from revtracker.models import ( | 29 | from revtracker.models import ( |
138 | @@ -47,7 +47,7 @@ | |||
139 | 47 | 47 | ||
140 | 48 | class VCS(object): | 48 | class VCS(object): |
141 | 49 | 49 | ||
143 | 50 | (VCS_BAZAAR, VCS_GIT) = range(2) | 50 | (VCS_BAZAAR, VCS_GIT) = list(range(2)) |
144 | 51 | 51 | ||
145 | 52 | 52 | ||
146 | 53 | class LocalRevision(object): | 53 | class LocalRevision(object): |
147 | 54 | 54 | ||
148 | === modified file 'revtracker/tests/__init__.py' | |||
149 | --- revtracker/tests/__init__.py 2016-11-03 15:34:55 +0000 | |||
150 | +++ revtracker/tests/__init__.py 2018-01-29 11:51:32 +0000 | |||
151 | @@ -10,11 +10,6 @@ | |||
152 | 10 | 10 | ||
153 | 11 | import soupmatchers | 11 | import soupmatchers |
154 | 12 | 12 | ||
155 | 13 | from test_api_helpers import * | ||
156 | 14 | from test_data import * | ||
157 | 15 | from test_templates import * | ||
158 | 16 | from test_views import * | ||
159 | 17 | |||
160 | 18 | 13 | ||
161 | 19 | class TestClient(Client): | 14 | class TestClient(Client): |
162 | 20 | 15 | ||
163 | 21 | 16 | ||
164 | === modified file 'revtracker/tests/test_data.py' | |||
165 | --- revtracker/tests/test_data.py 2016-11-10 17:25:49 +0000 | |||
166 | +++ revtracker/tests/test_data.py 2018-01-29 11:51:32 +0000 | |||
167 | @@ -738,9 +738,7 @@ | |||
168 | 738 | revision = self.factory.make_one(Revision) | 738 | revision = self.factory.make_one(Revision) |
169 | 739 | children = self.factory.make(2, Revision, parent=revision, | 739 | children = self.factory.make(2, Revision, parent=revision, |
170 | 740 | branch="lp:foo", revno=1) | 740 | branch="lp:foo", revno=1) |
174 | 741 | def load_rev(rev): | 741 | from_db = [Revision.objects.get(pk=rev.pk) for rev in children] |
172 | 742 | return Revision.objects.get(pk=rev.pk) | ||
173 | 743 | from_db = map(load_rev, children) | ||
175 | 744 | self.assertNumQueries(1, data.get_parent_revnos, from_db) | 742 | self.assertNumQueries(1, data.get_parent_revnos, from_db) |
176 | 745 | 743 | ||
177 | 746 | 744 | ||
178 | 747 | 745 | ||
179 | === modified file 'revtracker/tests/test_tasks.py' | |||
180 | --- revtracker/tests/test_tasks.py 2017-10-03 16:36:16 +0000 | |||
181 | +++ revtracker/tests/test_tasks.py 2018-01-29 11:51:32 +0000 | |||
182 | @@ -1,15 +1,15 @@ | |||
184 | 1 | from email.Utils import parseaddr | 1 | from email.utils import parseaddr |
185 | 2 | import os.path | 2 | import os.path |
186 | 3 | import shutil | 3 | import shutil |
187 | 4 | import tempfile | 4 | import tempfile |
188 | 5 | from test.test_support import captured_stdout | 5 | from test.test_support import captured_stdout |
189 | 6 | from urllib import pathname2url | ||
190 | 7 | 6 | ||
191 | 8 | from bzrlib.controldir import ControlDir | 7 | from bzrlib.controldir import ControlDir |
192 | 9 | from bzrlib.tests import TestCaseWithTransport | 8 | from bzrlib.tests import TestCaseWithTransport |
193 | 10 | from django.test.utils import override_settings | 9 | from django.test.utils import override_settings |
194 | 11 | from django_factory import TestCase | 10 | from django_factory import TestCase |
195 | 12 | import pygit2 | 11 | import pygit2 |
196 | 12 | from six.moves.urllib.request import pathname2url | ||
197 | 13 | from testscenarios import WithScenarios | 13 | from testscenarios import WithScenarios |
198 | 14 | from testtools.matchers import ( | 14 | from testtools.matchers import ( |
199 | 15 | MatchesSetwise, | 15 | MatchesSetwise, |
200 | 16 | 16 | ||
201 | === modified file 'revtracker/tests/test_views.py' | |||
202 | --- revtracker/tests/test_views.py 2016-09-22 12:39:14 +0000 | |||
203 | +++ revtracker/tests/test_views.py 2018-01-29 11:51:32 +0000 | |||
204 | @@ -165,7 +165,7 @@ | |||
205 | 165 | so_far = len(connection.queries) | 165 | so_far = len(connection.queries) |
206 | 166 | try: | 166 | try: |
207 | 167 | super(GetProjectInfoTests, self).assertNumQueries(*args, **kwargs) | 167 | super(GetProjectInfoTests, self).assertNumQueries(*args, **kwargs) |
209 | 168 | except AssertionError, e: | 168 | except AssertionError as e: |
210 | 169 | e.mismatch.annotation += ", Queries were:\n%s" % "\n".join( | 169 | e.mismatch.annotation += ", Queries were:\n%s" % "\n".join( |
211 | 170 | map(itemgetter('sql'), connection.queries[so_far:])) | 170 | map(itemgetter('sql'), connection.queries[so_far:])) |
212 | 171 | raise e | 171 | raise e |
213 | 172 | 172 | ||
214 | === modified file 'revtracker/tests/test_views_logged_in.py' | |||
215 | --- revtracker/tests/test_views_logged_in.py 2016-11-03 15:38:36 +0000 | |||
216 | +++ revtracker/tests/test_views_logged_in.py 2018-01-29 11:51:32 +0000 | |||
217 | @@ -6,7 +6,7 @@ | |||
218 | 6 | 6 | ||
219 | 7 | from ..models import Project, Revision | 7 | from ..models import Project, Revision |
220 | 8 | 8 | ||
222 | 9 | from . import( | 9 | from . import ( |
223 | 10 | IndexProject, | 10 | IndexProject, |
224 | 11 | IndexProjectsList, | 11 | IndexProjectsList, |
225 | 12 | RevTrackerTestCase, | 12 | RevTrackerTestCase, |
226 | @@ -20,7 +20,7 @@ | |||
227 | 20 | ProjectRevisionSetRollbackForm | 20 | ProjectRevisionSetRollbackForm |
228 | 21 | ) | 21 | ) |
229 | 22 | 22 | ||
231 | 23 | from test_api_helpers import User | 23 | from .test_api_helpers import User |
232 | 24 | 24 | ||
233 | 25 | 25 | ||
234 | 26 | class IndexViewTests(RevTrackerTestCase): | 26 | class IndexViewTests(RevTrackerTestCase): |
235 | 27 | 27 | ||
236 | === modified file 'revtracker/views.py' | |||
237 | --- revtracker/views.py 2016-11-03 21:24:00 +0000 | |||
238 | +++ revtracker/views.py 2018-01-29 11:51:32 +0000 | |||
239 | @@ -162,7 +162,7 @@ | |||
240 | 162 | comment_form = CommentForm(revision) | 162 | comment_form = CommentForm(revision) |
241 | 163 | info['comment_form'] = comment_form.generate_security_data() | 163 | info['comment_form'] = comment_form.generate_security_data() |
242 | 164 | info['comment_form']['url'] = reverse('comments-post-comment') | 164 | info['comment_form']['url'] = reverse('comments-post-comment') |
244 | 165 | info['comments'] = map(comment_to_info, comments) | 165 | info['comments'] = [comment_to_info(comment) for comment in comments] |
245 | 166 | return info | 166 | return info |
246 | 167 | 167 | ||
247 | 168 | 168 | ||
248 | @@ -180,14 +180,14 @@ | |||
249 | 180 | def child_info(rev): | 180 | def child_info(rev): |
250 | 181 | comments = comment_map.get(rev.pk, []) | 181 | comments = comment_map.get(rev.pk, []) |
251 | 182 | return project_revision_to_info(project, rev, [], comments, show_deployability=True) | 182 | return project_revision_to_info(project, rev, [], comments, show_deployability=True) |
253 | 183 | info['child_revisions'] = map(child_info, child_revisions) | 183 | info['child_revisions'] = [child_info(rev) for rev in child_revisions] |
254 | 184 | return info | 184 | return info |
255 | 185 | 185 | ||
256 | 186 | 186 | ||
257 | 187 | def index_data(): | 187 | def index_data(): |
258 | 188 | projects = Project.objects.all().select_related('revision_set') | 188 | projects = Project.objects.all().select_related('revision_set') |
259 | 189 | info = dict() | 189 | info = dict() |
261 | 190 | info['projects'] = map(index_project_to_info, projects) | 190 | info['projects'] = [index_project_to_info(project) for project in projects] |
262 | 191 | return info | 191 | return info |
263 | 192 | 192 | ||
264 | 193 | 193 | ||
265 | @@ -218,7 +218,7 @@ | |||
266 | 218 | def make_rev_info(rev): | 218 | def make_rev_info(rev): |
267 | 219 | rev_children = child_revisions.get(rev.pk, []) | 219 | rev_children = child_revisions.get(rev.pk, []) |
268 | 220 | return project_revision_to_info_with_children(project, rev, rev_children, comment_map) | 220 | return project_revision_to_info_with_children(project, rev, rev_children, comment_map) |
270 | 221 | info['undeployed_revisions'] = map(make_rev_info, undeployed_revisions) | 221 | info['undeployed_revisions'] = [make_rev_info(rev) for rev in undeployed_revisions] |
271 | 222 | return info | 222 | return info |
272 | 223 | 223 | ||
273 | 224 | 224 | ||
274 | @@ -341,11 +341,11 @@ | |||
275 | 341 | def make_rev_info(rev): | 341 | def make_rev_info(rev): |
276 | 342 | rev_children = child_revisions.get(rev.pk, []) | 342 | rev_children = child_revisions.get(rev.pk, []) |
277 | 343 | return project_revision_to_info_with_children(dr.project, rev, rev_children, comment_map) | 343 | return project_revision_to_info_with_children(dr.project, rev, rev_children, comment_map) |
279 | 344 | info['deploy_revisions'] = map(make_rev_info, deploy_revisions) | 344 | info['deploy_revisions'] = [make_rev_info(rev) for rev in deploy_revisions] |
280 | 345 | def check_deployability(rev): | 345 | def check_deployability(rev): |
281 | 346 | rev_children = child_revisions.get(rev.pk, []) | 346 | rev_children = child_revisions.get(rev.pk, []) |
282 | 347 | return data.revision_is_deployable(rev, rev_children) | 347 | return data.revision_is_deployable(rev, rev_children) |
284 | 348 | bad_revisions = filter(lambda x: not x, map(check_deployability, deploy_revisions)) | 348 | bad_revisions = [rev for rev in deploy_revisions if not check_deployability(rev)] |
285 | 349 | if bad_revisions: | 349 | if bad_revisions: |
286 | 350 | info['not_ok_revisions_count'] = len(bad_revisions) | 350 | info['not_ok_revisions_count'] = len(bad_revisions) |
287 | 351 | info['not_deployable'] = bool(bad_revisions) | 351 | info['not_deployable'] = bool(bad_revisions) |
288 | @@ -452,12 +452,12 @@ | |||
289 | 452 | if parent_revno <= deployed_revnos[rev.project.pk]: | 452 | if parent_revno <= deployed_revnos[rev.project.pk]: |
290 | 453 | return False | 453 | return False |
291 | 454 | return True | 454 | return True |
293 | 455 | revisions = filter(is_undeployed, revisions) | 455 | revisions = [rev for rev in revisions if is_undeployed(rev)] |
294 | 456 | def make_rev_info(rev): | 456 | def make_rev_info(rev): |
295 | 457 | return project_revision_to_info(rev.project, rev, | 457 | return project_revision_to_info(rev.project, rev, |
296 | 458 | child_revisions.get(rev.pk, []), comment_map.get(rev.pk, []), | 458 | child_revisions.get(rev.pk, []), comment_map.get(rev.pk, []), |
297 | 459 | show_deployability=True) | 459 | show_deployability=True) |
299 | 460 | info['revisions_needing_qa'] = map(make_rev_info, revisions) | 460 | info['revisions_needing_qa'] = [make_rev_info(rev) for rev in revisions] |
300 | 461 | return info | 461 | return info |
301 | 462 | 462 | ||
302 | 463 | 463 | ||
303 | @@ -527,9 +527,8 @@ | |||
304 | 527 | project = get_project(project_name) | 527 | project = get_project(project_name) |
305 | 528 | info = checklist_data.checklist_info(project.deployment_checklist) | 528 | info = checklist_data.checklist_info(project.deployment_checklist) |
306 | 529 | sub_links = project_sub_links(project) | 529 | sub_links = project_sub_links(project) |
310 | 530 | def markdownize_description(step): | 530 | info['steps'] = [ |
311 | 531 | return markdownize_for_editor(step, 'description') | 531 | markdownize_for_editor(step, 'description') for step in info['steps']] |
309 | 532 | info['steps'] = map(markdownize_description, info['steps']) | ||
312 | 533 | content = render_template('revtracker/checklist.html', info, | 532 | content = render_template('revtracker/checklist.html', info, |
313 | 534 | get_partials(), get_helpers(request)) | 533 | get_partials(), get_helpers(request)) |
314 | 535 | return HttpResponse(render_page('Deploying %s' % str(project.name), | 534 | return HttpResponse(render_page('Deploying %s' % str(project.name), |
315 | 536 | 535 | ||
316 | === modified file 'setup.py' | |||
317 | --- setup.py 2016-09-27 14:31:46 +0000 | |||
318 | +++ setup.py 2018-01-29 11:51:32 +0000 | |||
319 | @@ -33,6 +33,7 @@ | |||
320 | 33 | 'oops_celery', | 33 | 'oops_celery', |
321 | 34 | 'oops-wsgi', | 34 | 'oops-wsgi', |
322 | 35 | 'pygit2>=0.23.2', | 35 | 'pygit2>=0.23.2', |
323 | 36 | 'six', | ||
324 | 36 | ], | 37 | ], |
325 | 37 | zip_safe=False, | 38 | zip_safe=False, |
326 | 38 | packages=find_packages(), | 39 | packages=find_packages(), |
LGTM