summaryrefslogtreecommitdiff
path: root/src/mailman/model/autorespond.py
diff options
context:
space:
mode:
authorBarry Warsaw2014-11-02 14:55:10 -0500
committerBarry Warsaw2014-11-02 14:55:10 -0500
commitdfc451f81ccc8b0947fb3fa42e94c55026984cf8 (patch)
treec9834271a2dc7fd7d998e5dd211a0ef047f8085e /src/mailman/model/autorespond.py
parent0b1ee6fc8d224291c68c964a1af6b481921a13b3 (diff)
parent1d9f6970b9a26ee576838b53f485b96365e3a6c2 (diff)
downloadmailman-dfc451f81ccc8b0947fb3fa42e94c55026984cf8.tar.gz
mailman-dfc451f81ccc8b0947fb3fa42e94c55026984cf8.tar.zst
mailman-dfc451f81ccc8b0947fb3fa42e94c55026984cf8.zip
Diffstat (limited to 'src/mailman/model/autorespond.py')
-rw-r--r--src/mailman/model/autorespond.py41
1 files changed, 21 insertions, 20 deletions
diff --git a/src/mailman/model/autorespond.py b/src/mailman/model/autorespond.py
index c5e736613..cfb9e017d 100644
--- a/src/mailman/model/autorespond.py
+++ b/src/mailman/model/autorespond.py
@@ -26,7 +26,8 @@ __all__ = [
]
-from storm.locals import And, Date, Desc, Int, Reference
+from sqlalchemy import Column, Date, ForeignKey, Integer, desc
+from sqlalchemy.orm import relationship
from zope.interface import implementer
from mailman.database.model import Model
@@ -42,16 +43,18 @@ from mailman.utilities.datetime import today
class AutoResponseRecord(Model):
"""See `IAutoResponseRecord`."""
- id = Int(primary=True)
+ __tablename__ = 'autoresponserecord'
- address_id = Int()
- address = Reference(address_id, 'Address.id')
+ id = Column(Integer, primary_key=True)
- mailing_list_id = Int()
- mailing_list = Reference(mailing_list_id, 'MailingList.id')
+ address_id = Column(Integer, ForeignKey('address.id'), index=True)
+ address = relationship('Address')
- response_type = Enum(Response)
- date_sent = Date()
+ mailing_list_id = Column(Integer, ForeignKey('mailinglist.id'), index=True)
+ mailing_list = relationship('MailingList')
+
+ response_type = Column(Enum(Response))
+ date_sent = Column(Date)
def __init__(self, mailing_list, address, response_type):
self.mailing_list = mailing_list
@@ -71,12 +74,11 @@ class AutoResponseSet:
@dbconnection
def todays_count(self, store, address, response_type):
"""See `IAutoResponseSet`."""
- return store.find(
- AutoResponseRecord,
- And(AutoResponseRecord.address == address,
- AutoResponseRecord.mailing_list == self._mailing_list,
- AutoResponseRecord.response_type == response_type,
- AutoResponseRecord.date_sent == today())).count()
+ return store.query(AutoResponseRecord).filter_by(
+ address=address,
+ mailing_list=self._mailing_list,
+ response_type=response_type,
+ date_sent=today()).count()
@dbconnection
def response_sent(self, store, address, response_type):
@@ -88,10 +90,9 @@ class AutoResponseSet:
@dbconnection
def last_response(self, store, address, response_type):
"""See `IAutoResponseSet`."""
- results = store.find(
- AutoResponseRecord,
- And(AutoResponseRecord.address == address,
- AutoResponseRecord.mailing_list == self._mailing_list,
- AutoResponseRecord.response_type == response_type)
- ).order_by(Desc(AutoResponseRecord.date_sent))
+ results = store.query(AutoResponseRecord).filter_by(
+ address=address,
+ mailing_list=self._mailing_list,
+ response_type=response_type
+ ).order_by(desc(AutoResponseRecord.date_sent))
return (None if results.count() == 0 else results.first())