summaryrefslogtreecommitdiffstats
path: root/kittystore
diff options
context:
space:
mode:
authorAurélien Bompard <aurelien@bompard.org>2012-12-12 14:19:00 +0100
committerAurélien Bompard <aurelien@bompard.org>2012-12-12 14:19:00 +0100
commit876b6c36f289f7523f2d4d157e1e70a282c6bcf8 (patch)
treecacfa293a9633c0136be1e9c578539a03b7fe77d /kittystore
parent65c6b94b26d1688e490384325cd23a30554f5fe1 (diff)
downloadkittystore-876b6c36f289f7523f2d4d157e1e70a282c6bcf8.tar.gz
kittystore-876b6c36f289f7523f2d4d157e1e70a282c6bcf8.tar.xz
kittystore-876b6c36f289f7523f2d4d157e1e70a282c6bcf8.zip
Update the list's display name when changed in Mailman
Diffstat (limited to 'kittystore')
-rw-r--r--kittystore/storm/store.py7
-rw-r--r--kittystore/test/test_storm_store.py18
2 files changed, 20 insertions, 5 deletions
diff --git a/kittystore/storm/store.py b/kittystore/storm/store.py
index 3cb3db0..4e444cd 100644
--- a/kittystore/storm/store.py
+++ b/kittystore/storm/store.py
@@ -84,12 +84,11 @@ class StormStore(object):
"""
list_name = unicode(mlist.fqdn_listname)
# Create the list if it does not exist
- list_is_in_db = self.db.find(List,
- List.name == list_name).count()
- if not list_is_in_db:
+ l = self.db.find(List, List.name == list_name).one()
+ if l is None:
l = List(list_name)
- l.display_name = mlist.display_name
self.db.add(l)
+ l.display_name = mlist.display_name
if not message.has_key("Message-Id"):
raise ValueError("No 'Message-Id' header in email", message)
msg_id = unicode(unquote(message['Message-Id']))
diff --git a/kittystore/test/test_storm_store.py b/kittystore/test/test_storm_store.py
index fb7d847..a4ed61b 100644
--- a/kittystore/test/test_storm_store.py
+++ b/kittystore/test/test_storm_store.py
@@ -11,7 +11,7 @@ from storm.exceptions import IntegrityError
from mailman.email.message import Message
from kittystore.storm import get_storm_store
-from kittystore.storm.model import Email, Attachment
+from kittystore.storm.model import Email, Attachment, List
from kittystore.test import get_test_file, FakeList
@@ -73,6 +73,22 @@ class TestStormStore(unittest.TestCase):
self.assertEqual(self.store.db.find(Email).count(), 1)
self.assertEqual(self.store.db.find(Attachment).count(), 1)
+ def test_update_list(self):
+ """List records must be updated when changed in Mailman"""
+ msg = Message()
+ msg["From"] = "dummy@example.com"
+ msg["Message-ID"] = "<dummy>"
+ msg.set_payload("Dummy message")
+ ml = FakeList("example-list")
+ ml.display_name = u"name 1"
+ self.store.add_to_list(ml, msg)
+ ml_db = self.store.db.find(List).one()
+ self.assertEqual(ml_db.display_name, "name 1")
+ ml.display_name = u"name 2"
+ self.store.add_to_list(ml, msg)
+ ml_db = self.store.db.find(List).one()
+ self.assertEqual(ml_db.display_name, "name 2")
+
#def test_non_ascii_payload(self):
# """add_to_list must handle non-ascii messages"""
# with open(get_test_file("non-ascii-payload.txt")) as email_file: