diff options
author | Aurélien Bompard <aurelien@bompard.org> | 2012-12-12 14:19:00 +0100 |
---|---|---|
committer | Aurélien Bompard <aurelien@bompard.org> | 2012-12-12 14:19:00 +0100 |
commit | 876b6c36f289f7523f2d4d157e1e70a282c6bcf8 (patch) | |
tree | cacfa293a9633c0136be1e9c578539a03b7fe77d /kittystore | |
parent | 65c6b94b26d1688e490384325cd23a30554f5fe1 (diff) | |
download | kittystore-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.py | 7 | ||||
-rw-r--r-- | kittystore/test/test_storm_store.py | 18 |
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: |