From 6b588bb4cb93f8e265d044ea784cb18b7021b26c Mon Sep 17 00:00:00 2001 From: Folker Bernitt Date: Fri, 7 Aug 2015 09:30:51 +0200 Subject: Changed test_delete_mail.py integration test to new mail store. - intermediate state, some tests are broken --- .../pixelated/adapter/mailstore/leap_mailstore.py | 21 ++++++++++++++++++++- service/pixelated/adapter/services/mail_service.py | 21 +++++++++++++-------- 2 files changed, 33 insertions(+), 9 deletions(-) (limited to 'service/pixelated/adapter') diff --git a/service/pixelated/adapter/mailstore/leap_mailstore.py b/service/pixelated/adapter/mailstore/leap_mailstore.py index c3c93cc3..c34d2b16 100644 --- a/service/pixelated/adapter/mailstore/leap_mailstore.py +++ b/service/pixelated/adapter/mailstore/leap_mailstore.py @@ -13,6 +13,7 @@ # # You should have received a copy of the GNU Affero General Public License # along with Pixelated. If not, see . +from uuid import uuid4 from leap.mail.adaptors.soledad import SoledadMailAdaptor from twisted.internet import defer from pixelated.adapter.mailstore.mailstore import MailStore, underscore_uuid @@ -31,6 +32,10 @@ class LeapMail(Mail): self.tags = tags self._flags = flags + @property + def ident(self): + return self._mail_id + @property def mail_id(self): return self._mail_id @@ -84,6 +89,8 @@ class LeapMailStore(MailStore): defer.returnValue(leap_mail) except AttributeError, e: + import traceback + traceback.print_exc() defer.returnValue(None) def get_mails(self, mail_ids): @@ -199,12 +206,24 @@ class LeapMailStore(MailStore): map = (yield self._mailbox_uuid_to_name_map()) defer.returnValue(map[uuid]) + @defer.inlineCallbacks def _get_or_create_mailbox(self, mailbox_name): - return SoledadMailAdaptor().get_or_create_mbox(self.soledad, mailbox_name) + mailbox_name_upper = mailbox_name.upper() + mbx = yield SoledadMailAdaptor().get_or_create_mbox(self.soledad, mailbox_name_upper) + if mbx.uuid is None: + mbx.uuid = str(uuid4()) + yield mbx.update(self.soledad) + defer.returnValue(mbx) def _fetch_msg_from_soledad(self, mail_id, load_body=False): return SoledadMailAdaptor().get_msg_from_mdoc_id(Message, self.soledad, mail_id, get_cdocs=load_body) + @defer.inlineCallbacks + def _dump_soledad(self): + gen, docs = yield self.soledad.get_all_docs() + for doc in docs: + print '\n%s\n' % doc + def _is_empty_message(message): return (message is None) or (message.get_wrapper().mdoc.doc_id is None) diff --git a/service/pixelated/adapter/services/mail_service.py b/service/pixelated/adapter/services/mail_service.py index 23cbc5f7..5e4d7a6d 100644 --- a/service/pixelated/adapter/services/mail_service.py +++ b/service/pixelated/adapter/services/mail_service.py @@ -29,15 +29,20 @@ class MailService(object): @defer.inlineCallbacks def all_mails(self): - defer.returnValue((yield self.querier.all_mails())) + mails = yield self.mail_store.all_mails() + defer.returnValue(mails) @defer.inlineCallbacks def mails(self, query, window_size, page): mail_ids, total = self.search_engine.search(query, window_size, page) - mails = yield self.querier.mails(mail_ids) - - defer.returnValue((mails, total)) + try: + mails = yield self.mail_store.get_mails(mail_ids) + defer.returnValue((mails, total)) + except Exception, e: + import traceback + traceback.print_exc() + raise @defer.inlineCallbacks def update_tags(self, mail_id, new_tags): @@ -65,7 +70,7 @@ class MailService(object): return [_use_current_casing(new_tag.lower()) if new_tag.lower() in current_tags_lower else new_tag for new_tag in new_tags] def mail(self, mail_id): - return self.querier.mail(mail_id) + return self.mail_store.get_mail(mail_id) def attachment(self, attachment_id, encoding): return self.querier.attachment(attachment_id, encoding) @@ -104,10 +109,10 @@ class MailService(object): @defer.inlineCallbacks def delete_mail(self, mail_id): mail = yield self.mail(mail_id) - if mail.mailbox_name == 'TRASH': - yield self.delete_permanent(mail_id) + if mail.mailbox_name.upper() == u'TRASH': + yield self.mail_store.delete_mail(mail_id) else: - trashed_mail = yield self.mailboxes.move_to_trash(mail_id) + trashed_mail = yield self.mail_store.move_mail_to_mailbox(mail_id, 'TRASH') self.search_engine.index_mail(trashed_mail) def recover_mail(self, mail_id): -- cgit v1.2.3