diff options
author | Duda Dornelles <ddornell@thoughtworks.com> | 2014-09-25 15:10:03 -0300 |
---|---|---|
committer | Duda Dornelles <ddornell@thoughtworks.com> | 2014-09-25 15:10:03 -0300 |
commit | 8be21f61e8f2c3f68de91497ce284cbda20043e6 (patch) | |
tree | 6679c16cbfb05eb91dde190fb3885f3a06c40ba2 /service/pixelated/adapter/soledad_querier.py | |
parent | 99e3cdd9bf7c8f32254b4adbaa0abec97cbabf5e (diff) |
Creating mail right on soledad
Diffstat (limited to 'service/pixelated/adapter/soledad_querier.py')
-rw-r--r-- | service/pixelated/adapter/soledad_querier.py | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/service/pixelated/adapter/soledad_querier.py b/service/pixelated/adapter/soledad_querier.py index b54f8e65..fdf03b35 100644 --- a/service/pixelated/adapter/soledad_querier.py +++ b/service/pixelated/adapter/soledad_querier.py @@ -1,13 +1,19 @@ from pixelated.adapter.pixelated_mail import PixelatedMail + class SoledadQuerier: instance = None + def __init__(self, soledad): + self.soledad = soledad + @classmethod - def get_instance(cls): + def get_instance(cls, soledad=None): if not cls.instance: - cls.instance = SoledadQuerier() + if not soledad: + raise Exception("Need a soledad for the first time you call this") + cls.instance = SoledadQuerier(soledad) return cls.instance def all_mails(self): @@ -25,8 +31,17 @@ class SoledadQuerier: return [PixelatedMail.from_soledad(*raw_mail, soledad_querier=self) for raw_mail in fdocs_hdocs_bdocs] def save_mail(self, mail): - #self.soledad.put_doc(mail.fdoc) - #self.soledad.put_doc(mail.hdoc) # XXX update only what has to be updated - #self.soledad.put_doc(mail.bdoc) - pass + # XXX update only what has to be updated + self.soledad.put_doc(mail.fdoc) + self.soledad.put_doc(mail.hdoc) + + def create_mail(self, mail, mailbox_name): + uid = self._next_uid_for_mailbox(mailbox_name) + for doc in mail._get_for_save(next_uid=uid): + self.soledad.create_doc(doc) + + def _next_uid_for_mailbox(self, mailbox_name): + mails = self.all_mails_by_mailbox(mailbox_name) + mails.sort(key=lambda x: x.uid, reverse=True) + return mails[0].uid + 1 |