Merge ~cjwatson/launchpad:soyuz-dbenum into launchpad: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)
Reviewer Review Type Date Requested Status
Jürgen Gmach Approve
Review via email: mp+412042@code.launchpad.net

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.
Revision history for this message
Jürgen Gmach (jugmac00) wrote :

LGTM

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/lib/lp/soyuz/model/archive.py b/lib/lp/soyuz/model/archive.py
2index 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)
30diff --git a/lib/lp/soyuz/model/archivejob.py b/lib/lp/soyuz/model/archivejob.py
31index 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
52diff --git a/lib/lp/soyuz/model/binarypackagerelease.py b/lib/lp/soyuz/model/binarypackagerelease.py
53index 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')
83diff --git a/lib/lp/soyuz/model/distributionjob.py b/lib/lp/soyuz/model/distributionjob.py
84index 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
105diff --git a/lib/lp/soyuz/model/distroarchseries.py b/lib/lp/soyuz/model/distroarchseries.py
106index 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)
137diff --git a/lib/lp/soyuz/model/files.py b/lib/lp/soyuz/model/files.py
138index 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)
166diff --git a/lib/lp/soyuz/model/packagecopyjob.py b/lib/lp/soyuz/model/packagecopyjob.py
167index 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
191diff --git a/lib/lp/soyuz/model/packagediff.py b/lib/lp/soyuz/model/packagediff.py
192index 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
215diff --git a/lib/lp/soyuz/model/publishing.py b/lib/lp/soyuz/model/publishing.py
216index 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)
270diff --git a/lib/lp/soyuz/model/queue.py b/lib/lp/soyuz/model/queue.py
271index 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)
323diff --git a/lib/lp/soyuz/model/reporting.py b/lib/lp/soyuz/model/reporting.py
324index 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')
345diff --git a/lib/lp/soyuz/model/sourcepackagerelease.py b/lib/lp/soyuz/model/sourcepackagerelease.py
346index 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(

Subscribers

People subscribed via source and target branches

to status/vote changes: