← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] ~cjwatson/launchpad:services-enumcol into launchpad:master

 

Colin Watson has proposed merging ~cjwatson/launchpad:services-enumcol into launchpad:master.

Commit message:
lp.services: Use DBEnum rather than EnumCol

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+merge/412090
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of ~cjwatson/launchpad:services-enumcol into launchpad:master.
diff --git a/lib/lp/services/identity/model/account.py b/lib/lp/services/identity/model/account.py
index 32bfddc..beb0921 100644
--- a/lib/lp/services/identity/model/account.py
+++ b/lib/lp/services/identity/model/account.py
@@ -16,7 +16,7 @@ from zope.interface import implementer
 
 from lp.services.database.constants import UTC_NOW
 from lp.services.database.datetimecol import UtcDateTimeCol
-from lp.services.database.enumcol import EnumCol
+from lp.services.database.enumcol import DBEnum
 from lp.services.database.interfaces import (
     IMasterStore,
     IStore,
@@ -33,13 +33,13 @@ from lp.services.identity.interfaces.account import (
 from lp.services.openid.model.openididentifier import OpenIdIdentifier
 
 
-class AccountStatusEnumCol(EnumCol):
+class AccountStatusDBEnum(DBEnum):
 
     def __set__(self, obj, value):
         if self.__get__(obj) == value:
             return
         IAccount['status'].bind(obj)._validate(value)
-        super(AccountStatusEnumCol, self).__set__(obj, value)
+        super().__set__(obj, value)
 
 
 @implementer(IAccount)
@@ -50,11 +50,11 @@ class Account(SQLBase):
 
     displayname = StringCol(dbName='displayname', notNull=True)
 
-    creation_rationale = EnumCol(
-        dbName='creation_rationale', schema=AccountCreationRationale,
-        notNull=True)
-    status = AccountStatusEnumCol(
-        enum=AccountStatus, default=AccountStatus.NOACCOUNT, notNull=True)
+    creation_rationale = DBEnum(
+        name='creation_rationale', enum=AccountCreationRationale,
+        allow_none=False)
+    status = AccountStatusDBEnum(
+        enum=AccountStatus, default=AccountStatus.NOACCOUNT, allow_none=False)
     date_status_set = UtcDateTimeCol(notNull=True, default=UTC_NOW)
     status_history = StringCol(dbName='status_comment', default=None)
 
diff --git a/lib/lp/services/identity/model/emailaddress.py b/lib/lp/services/identity/model/emailaddress.py
index 87afe14..887dce7 100644
--- a/lib/lp/services/identity/model/emailaddress.py
+++ b/lib/lp/services/identity/model/emailaddress.py
@@ -17,7 +17,7 @@ from storm.expr import Lower
 from zope.interface import implementer
 
 from lp.app.validators.email import valid_email
-from lp.services.database.enumcol import EnumCol
+from lp.services.database.enumcol import DBEnum
 from lp.services.database.interfaces import (
     IMasterStore,
     IStore,
@@ -56,7 +56,7 @@ class EmailAddress(SQLBase, HasOwnerMixin):
 
     email = StringCol(
             dbName='email', notNull=True, unique=True, alternateID=True)
-    status = EnumCol(dbName='status', schema=EmailAddressStatus, notNull=True)
+    status = DBEnum(name='status', enum=EmailAddressStatus, allow_none=False)
     person = ForeignKey(dbName='person', foreignKey='Person', notNull=False)
 
     def __repr__(self):
diff --git a/lib/lp/services/job/model/job.py b/lib/lp/services/job/model/job.py
index f35a858..c265248 100644
--- a/lib/lp/services/job/model/job.py
+++ b/lib/lp/services/job/model/job.py
@@ -33,7 +33,7 @@ from zope.interface import implementer
 from lp.services.database import bulk
 from lp.services.database.constants import UTC_NOW
 from lp.services.database.datetimecol import UtcDateTimeCol
-from lp.services.database.enumcol import EnumCol
+from lp.services.database.enumcol import DBEnum
 from lp.services.database.interfaces import IStore
 from lp.services.database.sqlbase import SQLBase
 from lp.services.database.sqlobject import StringCol
@@ -76,9 +76,9 @@ class Job(SQLBase):
 
     log = StringCol()
 
-    _status = EnumCol(
-        enum=JobStatus, notNull=True, default=JobStatus.WAITING,
-        dbName='status')
+    _status = DBEnum(
+        enum=JobStatus, allow_none=False, default=JobStatus.WAITING,
+        name='status')
 
     attempt_count = Int(default=0)
 
@@ -89,7 +89,7 @@ class Job(SQLBase):
 
     base_json_data = JSON(name='json_data')
 
-    base_job_type = EnumCol(enum=JobType, dbName='job_type')
+    base_job_type = DBEnum(enum=JobType, name='job_type')
 
     # Mapping of valid target states from a given state.
     _valid_transitions = {
diff --git a/lib/lp/services/verification/model/logintoken.py b/lib/lp/services/verification/model/logintoken.py
index 9243471..31ecb99 100644
--- a/lib/lp/services/verification/model/logintoken.py
+++ b/lib/lp/services/verification/model/logintoken.py
@@ -21,7 +21,7 @@ from lp.registry.interfaces.person import IPersonSet
 from lp.services.config import config
 from lp.services.database.constants import UTC_NOW
 from lp.services.database.datetimecol import UtcDateTimeCol
-from lp.services.database.enumcol import EnumCol
+from lp.services.database.enumcol import DBEnum
 from lp.services.database.interfaces import (
     IMasterStore,
     IStore,
@@ -66,7 +66,7 @@ class LoginToken(SQLBase):
     # The hex SHA-256 hash of the token.
     _token = StringCol(dbName='token', unique=True)
 
-    tokentype = EnumCol(dbName='tokentype', notNull=True, enum=LoginTokenType)
+    tokentype = DBEnum(name='tokentype', allow_none=False, enum=LoginTokenType)
     date_created = UtcDateTimeCol(dbName='created', notNull=True)
     fingerprint = StringCol(dbName='fingerprint', notNull=False, default=None)
     date_consumed = UtcDateTimeCol(default=None)
diff --git a/lib/lp/services/webhooks/model.py b/lib/lp/services/webhooks/model.py
index 82005ab..8be4cb0 100644
--- a/lib/lp/services/webhooks/model.py
+++ b/lib/lp/services/webhooks/model.py
@@ -51,7 +51,7 @@ from lp.services.config import config
 from lp.services.database.bulk import load_related
 from lp.services.database.constants import UTC_NOW
 from lp.services.database.decoratedresultset import DecoratedResultSet
-from lp.services.database.enumcol import EnumCol
+from lp.services.database.enumcol import DBEnum
 from lp.services.database.interfaces import (
     IMasterStore,
     IStore,
@@ -338,7 +338,7 @@ class WebhookJob(StormBase):
     webhook_id = Int(name='webhook', allow_none=False)
     webhook = Reference(webhook_id, 'Webhook.id')
 
-    job_type = EnumCol(enum=WebhookJobType, notNull=True)
+    job_type = DBEnum(enum=WebhookJobType, allow_none=False)
 
     json_data = JSON('json_data')
 
diff --git a/lib/lp/services/worlddata/model/language.py b/lib/lp/services/worlddata/model/language.py
index ba9cf55..d17d1ad 100644
--- a/lib/lp/services/worlddata/model/language.py
+++ b/lib/lp/services/worlddata/model/language.py
@@ -24,7 +24,7 @@ from lp.registry.model.karma import (
     KarmaCategory,
     )
 from lp.services.database.decoratedresultset import DecoratedResultSet
-from lp.services.database.enumcol import EnumCol
+from lp.services.database.enumcol import DBEnum
 from lp.services.database.interfaces import (
     ISlaveStore,
     IStore,
@@ -60,8 +60,8 @@ class Language(SQLBase):
     pluralforms = IntCol(dbName='pluralforms')
     pluralexpression = StringCol(dbName='pluralexpression')
     visible = BoolCol(dbName='visible', notNull=True)
-    direction = EnumCol(
-        dbName='direction', notNull=True, schema=TextDirection,
+    direction = DBEnum(
+        name='direction', allow_none=False, enum=TextDirection,
         default=TextDirection.LTR)
 
     translation_teams = SQLRelatedJoin(