summaryrefslogtreecommitdiff
path: root/Mailman/database
diff options
context:
space:
mode:
Diffstat (limited to 'Mailman/database')
-rw-r--r--Mailman/database/messagestore.py8
-rw-r--r--Mailman/database/model/requests.py22
2 files changed, 23 insertions, 7 deletions
diff --git a/Mailman/database/messagestore.py b/Mailman/database/messagestore.py
index eb29fcfb4..bbaa6976b 100644
--- a/Mailman/database/messagestore.py
+++ b/Mailman/database/messagestore.py
@@ -48,15 +48,11 @@ class MessageStore:
def add(self, message):
# Ensure that the message has the requisite headers.
message_ids = message.get_all('message-id', [])
- dates = message.get_all('date', [])
- if not (len(message_ids) == 1 and len(dates) == 1):
- raise ValueError(
- 'Exactly one Message-ID and one Date header required')
+ if len(message_ids) <> 1:
+ raise ValueError('Exactly one Message-ID header required')
# Calculate and insert the X-List-ID-Hash.
message_id = message_ids[0]
- date = dates[0]
shaobj = hashlib.sha1(message_id)
- shaobj.update(date)
hash32 = base64.b32encode(shaobj.digest())
del message['X-List-ID-Hash']
message['X-List-ID-Hash'] = hash32
diff --git a/Mailman/database/model/requests.py b/Mailman/database/model/requests.py
index 59013452b..b0aa0d8d0 100644
--- a/Mailman/database/model/requests.py
+++ b/Mailman/database/model/requests.py
@@ -52,11 +52,22 @@ class ListRequests:
results = _Request.select_by(mailing_list=self.mailing_list._data)
return len(results)
+ def count_of(self, request_type):
+ results = _Request.select_by(mailing_list=self.mailing_list._data,
+ type=request_type)
+ return len(results)
+
@property
def held_requests(self):
results = _Request.select_by(mailing_list=self.mailing_list._data)
for request in results:
- yield request.id, request.type
+ yield request
+
+ def of_type(self, request_type):
+ results = _Request.select_by(mailing_list=self.mailing_list._data,
+ type=request_type)
+ for request in results:
+ yield request
def hold_request(self, request_type, key, data=None):
if request_type not in RequestType:
@@ -72,6 +83,15 @@ class ListRequests:
pendable.update(data)
token = config.db.pendings.add(pendable, timedelta(days=5000))
data_hash = token
+ # XXX This would be a good other way to do it, but it causes the
+ # select_by()'s in .count and .held_requests() to fail, even with
+ # flush()'s.
+## result = _Request.table.insert().execute(
+## key=key, type=request_type,
+## mailing_list=self.mailing_list._data,
+## data_hash=data_hash)
+## row_id = result.last_inserted_ids()[0]
+## return row_id
result = _Request(key=key, type=request_type,
mailing_list=self.mailing_list._data,
data_hash=data_hash)