From a7beccf1e219c4e946bc8c90335683e2e6b20d01 Mon Sep 17 00:00:00 2001 From: Duda Dornelles Date: Wed, 4 Feb 2015 05:22:13 -0200 Subject: Refactoring more of resource logic into service. No more search engine on mail(s) resource --- service/pixelated/resources/__init__.py | 1 - service/pixelated/resources/mail_resource.py | 33 +++++-------------- service/pixelated/resources/mails_resource.py | 47 ++++++++------------------- service/pixelated/resources/root_resource.py | 4 +-- 4 files changed, 25 insertions(+), 60 deletions(-) (limited to 'service/pixelated/resources') diff --git a/service/pixelated/resources/__init__.py b/service/pixelated/resources/__init__.py index 92a4462f..a2e4c9d4 100644 --- a/service/pixelated/resources/__init__.py +++ b/service/pixelated/resources/__init__.py @@ -20,7 +20,6 @@ def respond_json(entity, request, status_code=200): request.responseHeaders.addRawHeader(b"content-type", b"application/json") request.code = status_code return json_response - # request.finish() def respond_json_deferred(entity, request, status_code=200): diff --git a/service/pixelated/resources/mail_resource.py b/service/pixelated/resources/mail_resource.py index fd1d255f..dff594b0 100644 --- a/service/pixelated/resources/mail_resource.py +++ b/service/pixelated/resources/mail_resource.py @@ -7,19 +7,16 @@ class MailTags(Resource): isLeaf = True - def __init__(self, mail_id, mail_service, search_engine): + def __init__(self, mail_id, mail_service): Resource.__init__(self) - self._search_engine = search_engine self._mail_service = mail_service self._mail_id = mail_id def render_POST(self, request): - content_dict = json.loads(request.content.read()) - new_tags = [x.lower() for x in map(lambda e: e.strip(), content_dict['newtags']) if x != ''] + new_tags = json.loads(request.content.read()).get('newtags') + try: - self._mail_service.update_tags(self._mail_id, new_tags) - mail = self._mail_service.mail(self._mail_id) - self._search_engine.index_mail(mail) + mail = self._mail_service.update_tags(self._mail_id, new_tags) except ValueError as ve: return respond_json(ve.message, request, 403) return respond_json(mail.as_dict(), request) @@ -27,11 +24,9 @@ class MailTags(Resource): class Mail(Resource): - def __init__(self, mail_id, mail_service, search_engine): + def __init__(self, mail_id, mail_service): Resource.__init__(self) - self.putChild('tags', MailTags(mail_id, mail_service, search_engine)) - - self._search_engine = search_engine + self.putChild('tags', MailTags(mail_id, mail_service)) self._mail_id = mail_id self._mail_service = mail_service @@ -40,25 +35,15 @@ class Mail(Resource): return respond_json(mail.as_dict(), request) def render_DELETE(self, request): - self._delete_mail(self._mail_id) + self._mail_service.delete_mail(self._mail_id) return respond_json(None, request) - def _delete_mail(self, mail_id): - mail = self._mail_service.mail(mail_id) - if mail.mailbox_name == 'TRASH': - self._mail_service.delete_permanent(mail_id) - self._search_engine.remove_from_index(mail_id) - else: - trashed_mail = self._mail_service.delete_mail(mail_id) - self._search_engine.index_mail(trashed_mail) - class MailResource(Resource): - def __init__(self, mail_service, search_engine): + def __init__(self, mail_service): Resource.__init__(self) self._mail_service = mail_service - self._search_engine = search_engine def getChild(self, mail_id, request): - return Mail(mail_id, self._mail_service, self._search_engine) + return Mail(mail_id, self._mail_service) diff --git a/service/pixelated/resources/mails_resource.py b/service/pixelated/resources/mails_resource.py index 68d0246a..77a47cda 100644 --- a/service/pixelated/resources/mails_resource.py +++ b/service/pixelated/resources/mails_resource.py @@ -11,60 +11,45 @@ from leap.common.events import ( class MailsUnreadResource(Resource): isLeaf = True - def __init__(self, mail_service, search_engine): + def __init__(self, mail_service): Resource.__init__(self) - self._search_engine = search_engine self._mail_service = mail_service def render_POST(self, request): - content_dict = json.load(request.content) - idents = content_dict.get('idents') + idents = json.load(request.content).get('idents') for ident in idents: - mail = self._mail_service.mark_as_unread(ident) - self._search_engine.index_mail(mail) + self._mail_service.mark_as_unread(ident) return respond_json(None, request) class MailsReadResource(Resource): isLeaf = True - def __init__(self, mail_service, search_engine): + def __init__(self, mail_service): Resource.__init__(self) - self._search_engine = search_engine self._mail_service = mail_service def render_POST(self, request): - content_dict = json.load(request.content) - idents = content_dict.get('idents') + idents = json.load(request.content).get('idents') for ident in idents: - mail = self._mail_service.mark_as_read(ident) - self._search_engine.index_mail(mail) + self._mail_service.mark_as_read(ident) + return respond_json(None, request) class MailsDeleteResource(Resource): isLeaf = True - def __init__(self, mail_service, search_engine): + def __init__(self, mail_service): Resource.__init__(self) self._mail_service = mail_service - self._search_engine = search_engine def render_POST(self, request): idents = json.loads(request.content.read())['idents'] for ident in idents: - self._delete_mail(ident) + self._mail_service.delete_mail(ident) return respond_json(None, request) - def _delete_mail(self, mail_id): - mail = self._mail_service.mail(mail_id) - if mail.mailbox_name == 'TRASH': - self._mail_service.delete_permanent(mail_id) - self._search_engine.remove_from_index(mail_id) - else: - trashed_mail = self._mail_service.delete_mail(mail_id) - self._search_engine.index_mail(trashed_mail) - class MailsResource(Resource): @@ -72,20 +57,18 @@ class MailsResource(Resource): def on_error(event): delivery_error_mail = InputMail.delivery_error_template(delivery_address=event.content) - delivery_error_mail = self._mail_service.mailboxes.inbox().add(delivery_error_mail) - self._search_engine.index_mail(delivery_error_mail) + self._mail_service.mailboxes.inbox().add(delivery_error_mail) register(signal=proto.SMTP_SEND_MESSAGE_ERROR, callback=on_error) - def __init__(self, search_engine, mail_service, draft_service): + def __init__(self, mail_service, draft_service): Resource.__init__(self) - self.putChild('delete', MailsDeleteResource(mail_service, search_engine)) - self.putChild('read', MailsReadResource(mail_service, search_engine)) - self.putChild('unread', MailsUnreadResource(mail_service, search_engine)) + self.putChild('delete', MailsDeleteResource(mail_service)) + self.putChild('read', MailsReadResource(mail_service)) + self.putChild('unread', MailsUnreadResource(mail_service)) self._draft_service = draft_service self._mail_service = mail_service - self._search_engine = search_engine self._register_smtp_error_handler() def render_GET(self, request): @@ -116,9 +99,7 @@ class MailsResource(Resource): if not self._mail_service.mail_exists(draft_id): return respond_json("", request, status_code=422) pixelated_mail = self._draft_service.update_draft(draft_id, _mail) - self._search_engine.remove_from_index(draft_id) else: pixelated_mail = self._draft_service.create_draft(_mail) - self._search_engine.index_mail(pixelated_mail) return respond_json({'ident': pixelated_mail.ident}, request) diff --git a/service/pixelated/resources/root_resource.py b/service/pixelated/resources/root_resource.py index 7768472c..71fe1fce 100644 --- a/service/pixelated/resources/root_resource.py +++ b/service/pixelated/resources/root_resource.py @@ -28,8 +28,8 @@ class RootResource(Resource): self.putChild('features', FeaturesResource()) self.putChild('sync_info', SyncInfoResource()) self.putChild('tags', TagsResource(search_engine)) - self.putChild('mails', MailsResource(search_engine, mail_service, draft_service)) - self.putChild('mail', MailResource(mail_service, search_engine)) + self.putChild('mails', MailsResource(mail_service, draft_service)) + self.putChild('mail', MailResource(mail_service)) def _get_static_folder(self): -- cgit v1.2.3