diff options
Diffstat (limited to 'src/mailman/model/domain.py')
| -rw-r--r-- | src/mailman/model/domain.py | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/src/mailman/model/domain.py b/src/mailman/model/domain.py index 28e346022..8290cb755 100644 --- a/src/mailman/model/domain.py +++ b/src/mailman/model/domain.py @@ -26,8 +26,8 @@ __all__ = [ ] +from sqlalchemy import Column, Integer, Unicode from urlparse import urljoin, urlparse -from storm.locals import Int, Unicode from zope.event import notify from zope.interface import implementer @@ -44,12 +44,14 @@ from mailman.model.mailinglist import MailingList class Domain(Model): """Domains.""" - id = Int(primary=True) + __tablename__ = 'domain' - mail_host = Unicode() - base_url = Unicode() - description = Unicode() - contact_address = Unicode() + id = Column(Integer, primary_key=True) + + mail_host = Column(Unicode) # TODO: add index? + base_url = Column(Unicode) + description = Column(Unicode) + contact_address = Column(Unicode) def __init__(self, mail_host, description=None, @@ -92,9 +94,9 @@ class Domain(Model): @dbconnection def mailing_lists(self, store): """See `IDomain`.""" - mailing_lists = store.find( - MailingList, - MailingList.mail_host == self.mail_host) + mailing_lists = store.query(MailingList).filter( + MailingList.mail_host == self.mail_host + ).order_by(MailingList._list_id) for mlist in mailing_lists: yield mlist @@ -140,14 +142,14 @@ class DomainManager: def remove(self, store, mail_host): domain = self[mail_host] notify(DomainDeletingEvent(domain)) - store.remove(domain) + store.delete(domain) notify(DomainDeletedEvent(mail_host)) return domain @dbconnection def get(self, store, mail_host, default=None): """See `IDomainManager`.""" - domains = store.find(Domain, mail_host=mail_host) + domains = store.query(Domain).filter_by(mail_host=mail_host) if domains.count() < 1: return default assert domains.count() == 1, ( @@ -164,15 +166,15 @@ class DomainManager: @dbconnection def __len__(self, store): - return store.find(Domain).count() + return store.query(Domain).count() @dbconnection def __iter__(self, store): """See `IDomainManager`.""" - for domain in store.find(Domain): + for domain in store.query(Domain).order_by(Domain.mail_host).all(): yield domain @dbconnection def __contains__(self, store, mail_host): """See `IDomainManager`.""" - return store.find(Domain, mail_host=mail_host).count() > 0 + return store.query(Domain).filter_by(mail_host=mail_host).count() > 0 |
