Merge ~cjwatson/launchpad:soyuz-dbenum into launchpad:master
- Git
- lp:~cjwatson/launchpad
- soyuz-dbenum
- Merge into master
Proposed by
Colin Watson
Status: | Merged |
---|---|
Approved by: | Colin Watson |
Approved revision: | 44bd842b1515e8a016fd6a57d4a3e631e55f1a22 |
Merge reported by: | Otto Co-Pilot |
Merged at revision: | not available |
Proposed branch: | ~cjwatson/launchpad:soyuz-dbenum |
Merge into: | launchpad:master |
Diff against target: |
381 lines (+56/-60) 12 files modified
lib/lp/soyuz/model/archive.py (+5/-5) lib/lp/soyuz/model/archivejob.py (+2/-2) lib/lp/soyuz/model/binarypackagerelease.py (+5/-5) lib/lp/soyuz/model/distributionjob.py (+2/-2) lib/lp/soyuz/model/distroarchseries.py (+7/-7) lib/lp/soyuz/model/files.py (+3/-4) lib/lp/soyuz/model/packagecopyjob.py (+3/-3) lib/lp/soyuz/model/packagediff.py (+3/-3) lib/lp/soyuz/model/publishing.py (+8/-8) lib/lp/soyuz/model/queue.py (+9/-14) lib/lp/soyuz/model/reporting.py (+2/-2) lib/lp/soyuz/model/sourcepackagerelease.py (+7/-5) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Jürgen Gmach | Approve | ||
Review via email:
|
Commit message
lp.soyuz: Use DBEnum rather than EnumCol
Description of the change
I dropped `unique=False` since it did nothing in Storm's SQLObject emulation anyway; in Launchpad we define constraints (unique or otherwise) in the SQL schema, not in Storm models.
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | diff --git a/lib/lp/soyuz/model/archive.py b/lib/lp/soyuz/model/archive.py |
2 | index 6da89d1..fc5b9b0 100644 |
3 | --- a/lib/lp/soyuz/model/archive.py |
4 | +++ b/lib/lp/soyuz/model/archive.py |
5 | @@ -103,7 +103,7 @@ from lp.services.database.bulk import ( |
6 | from lp.services.database.constants import UTC_NOW |
7 | from lp.services.database.datetimecol import UtcDateTimeCol |
8 | from lp.services.database.decoratedresultset import DecoratedResultSet |
9 | -from lp.services.database.enumcol import EnumCol |
10 | +from lp.services.database.enumcol import DBEnum |
11 | from lp.services.database.interfaces import ( |
12 | ISlaveStore, |
13 | IStore, |
14 | @@ -298,11 +298,11 @@ class Archive(SQLBase): |
15 | distribution = ForeignKey( |
16 | foreignKey='Distribution', dbName='distribution', notNull=False) |
17 | |
18 | - purpose = EnumCol( |
19 | - dbName='purpose', unique=False, notNull=True, schema=ArchivePurpose) |
20 | + purpose = DBEnum( |
21 | + name='purpose', allow_none=False, enum=ArchivePurpose) |
22 | |
23 | - status = EnumCol( |
24 | - dbName="status", unique=False, notNull=True, schema=ArchiveStatus, |
25 | + status = DBEnum( |
26 | + name="status", allow_none=False, enum=ArchiveStatus, |
27 | default=ArchiveStatus.ACTIVE) |
28 | |
29 | _enabled = BoolCol(dbName='enabled', notNull=True, default=True) |
30 | diff --git a/lib/lp/soyuz/model/archivejob.py b/lib/lp/soyuz/model/archivejob.py |
31 | index 6aac1e6..3dcaff2 100644 |
32 | --- a/lib/lp/soyuz/model/archivejob.py |
33 | +++ b/lib/lp/soyuz/model/archivejob.py |
34 | @@ -18,7 +18,7 @@ from zope.interface import ( |
35 | ) |
36 | |
37 | from lp.services.config import config |
38 | -from lp.services.database.enumcol import EnumCol |
39 | +from lp.services.database.enumcol import DBEnum |
40 | from lp.services.database.interfaces import IMasterStore |
41 | from lp.services.database.stormbase import StormBase |
42 | from lp.services.job.model.job import ( |
43 | @@ -54,7 +54,7 @@ class ArchiveJob(StormBase): |
44 | archive_id = Int(name='archive') |
45 | archive = Reference(archive_id, Archive.id) |
46 | |
47 | - job_type = EnumCol(enum=ArchiveJobType, notNull=True) |
48 | + job_type = DBEnum(enum=ArchiveJobType, allow_none=False) |
49 | |
50 | metadata = JSON('json_data') |
51 | |
52 | diff --git a/lib/lp/soyuz/model/binarypackagerelease.py b/lib/lp/soyuz/model/binarypackagerelease.py |
53 | index 0ba1681..0421e81 100644 |
54 | --- a/lib/lp/soyuz/model/binarypackagerelease.py |
55 | +++ b/lib/lp/soyuz/model/binarypackagerelease.py |
56 | @@ -21,7 +21,7 @@ from zope.interface import implementer |
57 | |
58 | from lp.services.database.constants import UTC_NOW |
59 | from lp.services.database.datetimecol import UtcDateTimeCol |
60 | -from lp.services.database.enumcol import EnumCol |
61 | +from lp.services.database.enumcol import DBEnum |
62 | from lp.services.database.sqlbase import SQLBase |
63 | from lp.services.database.sqlobject import ( |
64 | BoolCol, |
65 | @@ -59,13 +59,13 @@ class BinaryPackageRelease(SQLBase): |
66 | description = StringCol(dbName='description', notNull=True) |
67 | build = ForeignKey( |
68 | dbName='build', foreignKey='BinaryPackageBuild', notNull=True) |
69 | - binpackageformat = EnumCol(dbName='binpackageformat', notNull=True, |
70 | - schema=BinaryPackageFormat) |
71 | + binpackageformat = DBEnum(name='binpackageformat', allow_none=False, |
72 | + enum=BinaryPackageFormat) |
73 | component = ForeignKey(dbName='component', foreignKey='Component', |
74 | notNull=True) |
75 | section = ForeignKey(dbName='section', foreignKey='Section', notNull=True) |
76 | - priority = EnumCol(dbName='priority', notNull=True, |
77 | - schema=PackagePublishingPriority) |
78 | + priority = DBEnum(name='priority', allow_none=False, |
79 | + enum=PackagePublishingPriority) |
80 | shlibdeps = StringCol(dbName='shlibdeps') |
81 | depends = StringCol(dbName='depends') |
82 | recommends = StringCol(dbName='recommends') |
83 | diff --git a/lib/lp/soyuz/model/distributionjob.py b/lib/lp/soyuz/model/distributionjob.py |
84 | index 91c4571..2fb9da3 100644 |
85 | --- a/lib/lp/soyuz/model/distributionjob.py |
86 | +++ b/lib/lp/soyuz/model/distributionjob.py |
87 | @@ -18,7 +18,7 @@ from zope.interface import implementer |
88 | from lp.app.errors import NotFoundError |
89 | from lp.registry.model.distribution import Distribution |
90 | from lp.registry.model.distroseries import DistroSeries |
91 | -from lp.services.database.enumcol import EnumCol |
92 | +from lp.services.database.enumcol import DBEnum |
93 | from lp.services.database.interfaces import IStore |
94 | from lp.services.database.stormbase import StormBase |
95 | from lp.services.job.model.job import ( |
96 | @@ -49,7 +49,7 @@ class DistributionJob(StormBase): |
97 | distroseries_id = Int(name='distroseries') |
98 | distroseries = Reference(distroseries_id, DistroSeries.id) |
99 | |
100 | - job_type = EnumCol(enum=DistributionJobType, notNull=True) |
101 | + job_type = DBEnum(enum=DistributionJobType, allow_none=False) |
102 | |
103 | metadata = JSON('json_data') |
104 | |
105 | diff --git a/lib/lp/soyuz/model/distroarchseries.py b/lib/lp/soyuz/model/distroarchseries.py |
106 | index e8eef7a..32e6525 100644 |
107 | --- a/lib/lp/soyuz/model/distroarchseries.py |
108 | +++ b/lib/lp/soyuz/model/distroarchseries.py |
109 | @@ -25,7 +25,7 @@ from lp.registry.interfaces.person import validate_public_person |
110 | from lp.registry.interfaces.pocket import PackagePublishingPocket |
111 | from lp.services.database.constants import DEFAULT |
112 | from lp.services.database.decoratedresultset import DecoratedResultSet |
113 | -from lp.services.database.enumcol import EnumCol |
114 | +from lp.services.database.enumcol import DBEnum |
115 | from lp.services.database.interfaces import IStore |
116 | from lp.services.database.sqlbase import SQLBase |
117 | from lp.services.database.sqlobject import ( |
118 | @@ -380,12 +380,12 @@ class PocketChroot(SQLBase): |
119 | distroarchseries = ForeignKey( |
120 | dbName='distroarchseries', foreignKey='DistroArchSeries', notNull=True) |
121 | |
122 | - pocket = EnumCol( |
123 | - schema=PackagePublishingPocket, |
124 | - default=PackagePublishingPocket.RELEASE, notNull=True) |
125 | + pocket = DBEnum( |
126 | + enum=PackagePublishingPocket, |
127 | + default=PackagePublishingPocket.RELEASE, allow_none=False) |
128 | |
129 | chroot = ForeignKey(dbName='chroot', foreignKey='LibraryFileAlias') |
130 | |
131 | - image_type = EnumCol( |
132 | - schema=BuildBaseImageType, default=BuildBaseImageType.CHROOT, |
133 | - notNull=True) |
134 | + image_type = DBEnum( |
135 | + enum=BuildBaseImageType, default=BuildBaseImageType.CHROOT, |
136 | + allow_none=False) |
137 | diff --git a/lib/lp/soyuz/model/files.py b/lib/lp/soyuz/model/files.py |
138 | index c14b7cc..3c77c36 100644 |
139 | --- a/lib/lp/soyuz/model/files.py |
140 | +++ b/lib/lp/soyuz/model/files.py |
141 | @@ -10,7 +10,7 @@ __all__ = [ |
142 | from zope.interface import implementer |
143 | |
144 | from lp.registry.interfaces.sourcepackage import SourcePackageFileType |
145 | -from lp.services.database.enumcol import EnumCol |
146 | +from lp.services.database.enumcol import DBEnum |
147 | from lp.services.database.sqlbase import SQLBase |
148 | from lp.services.database.sqlobject import ForeignKey |
149 | from lp.soyuz.enums import BinaryPackageFileType |
150 | @@ -30,8 +30,7 @@ class BinaryPackageFile(SQLBase): |
151 | notNull=True) |
152 | libraryfile = ForeignKey(dbName='libraryfile', |
153 | foreignKey='LibraryFileAlias', notNull=True) |
154 | - filetype = EnumCol(dbName='filetype', |
155 | - schema=BinaryPackageFileType) |
156 | + filetype = DBEnum(name='filetype', enum=BinaryPackageFileType) |
157 | |
158 | |
159 | class SourceFileMixin: |
160 | @@ -55,4 +54,4 @@ class SourcePackageReleaseFile(SourceFileMixin, SQLBase): |
161 | dbName='sourcepackagerelease') |
162 | libraryfile = ForeignKey(foreignKey='LibraryFileAlias', |
163 | dbName='libraryfile') |
164 | - filetype = EnumCol(schema=SourcePackageFileType) |
165 | + filetype = DBEnum(enum=SourcePackageFileType) |
166 | diff --git a/lib/lp/soyuz/model/packagecopyjob.py b/lib/lp/soyuz/model/packagecopyjob.py |
167 | index f9bea8b..f3a91a8 100644 |
168 | --- a/lib/lp/soyuz/model/packagecopyjob.py |
169 | +++ b/lib/lp/soyuz/model/packagecopyjob.py |
170 | @@ -45,7 +45,7 @@ from lp.registry.model.distroseries import DistroSeries |
171 | from lp.services.config import config |
172 | from lp.services.database import bulk |
173 | from lp.services.database.decoratedresultset import DecoratedResultSet |
174 | -from lp.services.database.enumcol import EnumCol |
175 | +from lp.services.database.enumcol import DBEnum |
176 | from lp.services.database.interfaces import ( |
177 | IMasterStore, |
178 | IStore, |
179 | @@ -108,9 +108,9 @@ class PackageCopyJob(StormBase): |
180 | target_distroseries = Reference(target_distroseries_id, DistroSeries.id) |
181 | |
182 | package_name = Unicode('package_name') |
183 | - copy_policy = EnumCol(enum=PackageCopyPolicy) |
184 | + copy_policy = DBEnum(enum=PackageCopyPolicy) |
185 | |
186 | - job_type = EnumCol(enum=PackageCopyJobType, notNull=True) |
187 | + job_type = DBEnum(enum=PackageCopyJobType, allow_none=False) |
188 | |
189 | metadata = JSON('json_data') |
190 | |
191 | diff --git a/lib/lp/soyuz/model/packagediff.py b/lib/lp/soyuz/model/packagediff.py |
192 | index 5b16c29..c9ad7a3 100644 |
193 | --- a/lib/lp/soyuz/model/packagediff.py |
194 | +++ b/lib/lp/soyuz/model/packagediff.py |
195 | @@ -26,7 +26,7 @@ from lp.services.database.bulk import load |
196 | from lp.services.database.constants import UTC_NOW |
197 | from lp.services.database.datetimecol import UtcDateTimeCol |
198 | from lp.services.database.decoratedresultset import DecoratedResultSet |
199 | -from lp.services.database.enumcol import EnumCol |
200 | +from lp.services.database.enumcol import DBEnum |
201 | from lp.services.database.interfaces import IStore |
202 | from lp.services.database.sqlbase import ( |
203 | SQLBase, |
204 | @@ -141,8 +141,8 @@ class PackageDiff(SQLBase): |
205 | dbName="diff_content", foreignKey='LibraryFileAlias', |
206 | notNull=False, default=None) |
207 | |
208 | - status = EnumCol( |
209 | - dbName='status', notNull=True, schema=PackageDiffStatus, |
210 | + status = DBEnum( |
211 | + name='status', allow_none=False, enum=PackageDiffStatus, |
212 | default=PackageDiffStatus.PENDING) |
213 | |
214 | @property |
215 | diff --git a/lib/lp/soyuz/model/publishing.py b/lib/lp/soyuz/model/publishing.py |
216 | index ff4d2bb..442ca59 100644 |
217 | --- a/lib/lp/soyuz/model/publishing.py |
218 | +++ b/lib/lp/soyuz/model/publishing.py |
219 | @@ -50,7 +50,7 @@ from lp.services.database import bulk |
220 | from lp.services.database.constants import UTC_NOW |
221 | from lp.services.database.datetimecol import UtcDateTimeCol |
222 | from lp.services.database.decoratedresultset import DecoratedResultSet |
223 | -from lp.services.database.enumcol import EnumCol |
224 | +from lp.services.database.enumcol import DBEnum |
225 | from lp.services.database.interfaces import ( |
226 | IMasterStore, |
227 | IStore, |
228 | @@ -245,7 +245,7 @@ class SourcePackagePublishingHistory(SQLBase, ArchivePublisherBase): |
229 | distroseries = ForeignKey(foreignKey='DistroSeries', dbName='distroseries') |
230 | component = ForeignKey(foreignKey='Component', dbName='component') |
231 | section = ForeignKey(foreignKey='Section', dbName='section') |
232 | - status = EnumCol(schema=PackagePublishingStatus) |
233 | + status = DBEnum(enum=PackagePublishingStatus) |
234 | scheduleddeletiondate = UtcDateTimeCol(default=None) |
235 | datepublished = UtcDateTimeCol(default=None) |
236 | datecreated = UtcDateTimeCol(default=UTC_NOW) |
237 | @@ -254,9 +254,9 @@ class SourcePackagePublishingHistory(SQLBase, ArchivePublisherBase): |
238 | dbName='supersededby', default=None) |
239 | datemadepending = UtcDateTimeCol(default=None) |
240 | dateremoved = UtcDateTimeCol(default=None) |
241 | - pocket = EnumCol(dbName='pocket', schema=PackagePublishingPocket, |
242 | - default=PackagePublishingPocket.RELEASE, |
243 | - notNull=True) |
244 | + pocket = DBEnum(name='pocket', enum=PackagePublishingPocket, |
245 | + default=PackagePublishingPocket.RELEASE, |
246 | + allow_none=False) |
247 | archive = ForeignKey(dbName="archive", foreignKey="Archive", notNull=True) |
248 | copied_from_archive = ForeignKey( |
249 | dbName="copied_from_archive", foreignKey="Archive", notNull=False) |
250 | @@ -643,8 +643,8 @@ class BinaryPackagePublishingHistory(SQLBase, ArchivePublisherBase): |
251 | foreignKey='DistroArchSeries', dbName='distroarchseries') |
252 | component = ForeignKey(foreignKey='Component', dbName='component') |
253 | section = ForeignKey(foreignKey='Section', dbName='section') |
254 | - priority = EnumCol(dbName='priority', schema=PackagePublishingPriority) |
255 | - status = EnumCol(dbName='status', schema=PackagePublishingStatus) |
256 | + priority = DBEnum(name='priority', enum=PackagePublishingPriority) |
257 | + status = DBEnum(name='status', enum=PackagePublishingStatus) |
258 | phased_update_percentage = IntCol( |
259 | dbName='phased_update_percentage', notNull=False, default=None) |
260 | scheduleddeletiondate = UtcDateTimeCol(default=None) |
261 | @@ -658,7 +658,7 @@ class BinaryPackagePublishingHistory(SQLBase, ArchivePublisherBase): |
262 | foreignKey='BinaryPackageBuild', dbName='supersededby', default=None) |
263 | datemadepending = UtcDateTimeCol(default=None) |
264 | dateremoved = UtcDateTimeCol(default=None) |
265 | - pocket = EnumCol(dbName='pocket', schema=PackagePublishingPocket) |
266 | + pocket = DBEnum(name='pocket', enum=PackagePublishingPocket) |
267 | archive = ForeignKey(dbName="archive", foreignKey="Archive", notNull=True) |
268 | copied_from_archive = ForeignKey( |
269 | dbName="copied_from_archive", foreignKey="Archive", notNull=False) |
270 | diff --git a/lib/lp/soyuz/model/queue.py b/lib/lp/soyuz/model/queue.py |
271 | index c5ff4f0..314dc74 100644 |
272 | --- a/lib/lp/soyuz/model/queue.py |
273 | +++ b/lib/lp/soyuz/model/queue.py |
274 | @@ -52,10 +52,7 @@ from lp.services.database.constants import ( |
275 | ) |
276 | from lp.services.database.datetimecol import UtcDateTimeCol |
277 | from lp.services.database.decoratedresultset import DecoratedResultSet |
278 | -from lp.services.database.enumcol import ( |
279 | - DBEnum, |
280 | - EnumCol, |
281 | - ) |
282 | +from lp.services.database.enumcol import DBEnum |
283 | from lp.services.database.interfaces import ( |
284 | IMasterStore, |
285 | IStore, |
286 | @@ -169,18 +166,17 @@ class PackageUpload(SQLBase): |
287 | |
288 | _defaultOrder = ['id'] |
289 | |
290 | - status = EnumCol( |
291 | - dbName='status', unique=False, notNull=True, |
292 | - default=PackageUploadStatus.NEW, schema=PackageUploadStatus, |
293 | - storm_validator=validate_status) |
294 | + status = DBEnum( |
295 | + name='status', allow_none=False, |
296 | + default=PackageUploadStatus.NEW, enum=PackageUploadStatus, |
297 | + validator=validate_status) |
298 | |
299 | date_created = UtcDateTimeCol(notNull=False, default=UTC_NOW) |
300 | |
301 | distroseries = ForeignKey(dbName="distroseries", foreignKey='DistroSeries') |
302 | |
303 | - pocket = EnumCol( |
304 | - dbName='pocket', unique=False, notNull=True, |
305 | - schema=PackagePublishingPocket) |
306 | + pocket = DBEnum( |
307 | + name='pocket', allow_none=False, enum=PackagePublishingPocket) |
308 | |
309 | changes_file_id = Int(name='changesfile') |
310 | changesfile = Reference(changes_file_id, 'LibraryFileAlias.id') |
311 | @@ -1421,9 +1417,8 @@ class PackageUploadCustom(SQLBase): |
312 | packageupload = ForeignKey( |
313 | dbName='packageupload', foreignKey='PackageUpload') |
314 | |
315 | - customformat = EnumCol( |
316 | - dbName='customformat', unique=False, notNull=True, |
317 | - schema=PackageUploadCustomFormat) |
318 | + customformat = DBEnum( |
319 | + name='customformat', allow_none=False, enum=PackageUploadCustomFormat) |
320 | |
321 | libraryfilealias = ForeignKey( |
322 | dbName='libraryfilealias', foreignKey="LibraryFileAlias", notNull=True) |
323 | diff --git a/lib/lp/soyuz/model/reporting.py b/lib/lp/soyuz/model/reporting.py |
324 | index f72b5b4..64211b3 100644 |
325 | --- a/lib/lp/soyuz/model/reporting.py |
326 | +++ b/lib/lp/soyuz/model/reporting.py |
327 | @@ -14,7 +14,7 @@ from storm.locals import ( |
328 | from storm.properties import DateTime |
329 | from zope.interface import implementer |
330 | |
331 | -from lp.services.database.enumcol import EnumCol |
332 | +from lp.services.database.enumcol import DBEnum |
333 | from lp.soyuz.enums import ArchivePurpose |
334 | from lp.soyuz.interfaces.reporting import ( |
335 | ILatestPersonSourcePackageReleaseCache, |
336 | @@ -38,7 +38,7 @@ class LatestPersonSourcePackageReleaseCache(Storm): |
337 | maintainer_id = Int(name='maintainer') |
338 | upload_archive_id = Int(name='upload_archive') |
339 | upload_archive = Reference(upload_archive_id, 'Archive.id') |
340 | - archive_purpose = EnumCol(schema=ArchivePurpose) |
341 | + archive_purpose = DBEnum(enum=ArchivePurpose) |
342 | upload_distroseries_id = Int(name='upload_distroseries') |
343 | upload_distroseries = Reference(upload_distroseries_id, 'DistroSeries.id') |
344 | sourcepackagename_id = Int(name='sourcepackagename') |
345 | diff --git a/lib/lp/soyuz/model/sourcepackagerelease.py b/lib/lp/soyuz/model/sourcepackagerelease.py |
346 | index 2615be9..65c3479 100644 |
347 | --- a/lib/lp/soyuz/model/sourcepackagerelease.py |
348 | +++ b/lib/lp/soyuz/model/sourcepackagerelease.py |
349 | @@ -42,7 +42,7 @@ from lp.registry.interfaces.sourcepackage import ( |
350 | from lp.services.database.constants import UTC_NOW |
351 | from lp.services.database.datetimecol import UtcDateTimeCol |
352 | from lp.services.database.decoratedresultset import DecoratedResultSet |
353 | -from lp.services.database.enumcol import EnumCol |
354 | +from lp.services.database.enumcol import DBEnum |
355 | from lp.services.database.sqlbase import ( |
356 | cursor, |
357 | SQLBase, |
358 | @@ -92,8 +92,9 @@ class SourcePackageRelease(SQLBase): |
359 | signing_key_owner_id = Int(name="signing_key_owner") |
360 | signing_key_owner = Reference(signing_key_owner_id, 'Person.id') |
361 | signing_key_fingerprint = Unicode() |
362 | - urgency = EnumCol(dbName='urgency', schema=SourcePackageUrgency, |
363 | - default=SourcePackageUrgency.LOW, notNull=True) |
364 | + urgency = DBEnum( |
365 | + name='urgency', enum=SourcePackageUrgency, |
366 | + default=SourcePackageUrgency.LOW, allow_none=False) |
367 | dateuploaded = UtcDateTimeCol(dbName='dateuploaded', notNull=True, |
368 | default=UTC_NOW) |
369 | dsc = StringCol(dbName='dsc') |
370 | @@ -107,8 +108,9 @@ class SourcePackageRelease(SQLBase): |
371 | build_conflicts_indep = StringCol(dbName='build_conflicts_indep') |
372 | architecturehintlist = StringCol(dbName='architecturehintlist') |
373 | homepage = StringCol(dbName='homepage') |
374 | - format = EnumCol(dbName='format', schema=SourcePackageType, |
375 | - default=SourcePackageType.DPKG, notNull=True) |
376 | + format = DBEnum( |
377 | + name='format', enum=SourcePackageType, |
378 | + default=SourcePackageType.DPKG, allow_none=False) |
379 | upload_distroseries = ForeignKey(foreignKey='DistroSeries', |
380 | dbName='upload_distroseries') |
381 | upload_archive = ForeignKey( |
LGTM