Related to #19, implement domain specific field and database type

This commit is contained in:
Pierre Jaury
2016-08-11 13:33:04 +02:00
parent e471a252c8
commit 5f36e6f4f2
4 changed files with 49 additions and 11 deletions

View File

@@ -18,6 +18,24 @@ managers = db.Table('manager',
)
class CommaSeparatedList(db.TypeDecorator):
""" Stores a list as a comma-separated string, compatible with Postfix.
"""
impl = db.String
def process_bind_param(self, value, dialect):
if type(value) is not list:
raise TypeError("Shoud be a list")
for item in value:
if "," in item:
raise ValueError("No item should contain a comma")
return ",".join(value)
def process_result_value(self, value, dialect):
return value.split(",")
class Base(db.Model):
""" Base class for all models
"""
@@ -169,7 +187,7 @@ class Alias(Email):
""" An alias is an email address that redirects to some destination.
"""
domain = db.relationship(Domain, backref='aliases')
destination = db.Column(db.String(), nullable=False)
destination = db.Column(CommaSeparatedList, nullable=False)
class Fetch(Base):