summaryrefslogtreecommitdiff
path: root/service/pixelated
diff options
context:
space:
mode:
Diffstat (limited to 'service/pixelated')
-rw-r--r--service/pixelated/adapter/mailstore/leap_attachment_store.py6
-rw-r--r--service/pixelated/adapter/services/mail_service.py10
-rw-r--r--service/pixelated/resources/attachments_resource.py3
3 files changed, 16 insertions, 3 deletions
diff --git a/service/pixelated/adapter/mailstore/leap_attachment_store.py b/service/pixelated/adapter/mailstore/leap_attachment_store.py
index 982d9222..2c004abf 100644
--- a/service/pixelated/adapter/mailstore/leap_attachment_store.py
+++ b/service/pixelated/adapter/mailstore/leap_attachment_store.py
@@ -63,3 +63,9 @@ class LeapAttachmentStore(object):
def _calc_attachment_id_(self, content, content_type, encoder=encoders.encode_base64):
cdoc = self._attachment_to_cdoc(content, content_type, encoder)
return cdoc.phash
+
+ @defer.inlineCallbacks
+ def delete_attachment(self, attachment_id):
+ doc = yield self.soledad.get_from_index('by-type-and-payloadhash', 'cnt', attachment_id)
+ doc = doc[0]
+ yield self.soledad.delete_doc(doc)
diff --git a/service/pixelated/adapter/services/mail_service.py b/service/pixelated/adapter/services/mail_service.py
index 2da2cca6..5ec3a298 100644
--- a/service/pixelated/adapter/services/mail_service.py
+++ b/service/pixelated/adapter/services/mail_service.py
@@ -35,7 +35,7 @@ class MailService(object):
self.search_engine = search_engine
self.mail_sender = mail_sender
self.account_email = account_email
- self.attchment_store = attachment_store
+ self.attachment_store = attachment_store
@defer.inlineCallbacks
def all_mails(self):
@@ -43,7 +43,7 @@ class MailService(object):
defer.returnValue(mails)
def save_attachment(self, content, content_type):
- return self.attchment_store.add_attachment(content, content_type)
+ return self.attachment_store.add_attachment(content, content_type)
@log_time_deferred
@defer.inlineCallbacks
@@ -87,7 +87,7 @@ class MailService(object):
return self.mail_store.get_mail(mail_id, include_body=True)
def attachment(self, attachment_id):
- return self.attchment_store.get_mail_attachment(attachment_id)
+ return self.attachment_store.get_mail_attachment(attachment_id)
@defer.inlineCallbacks
def mail_exists(self, mail_id):
@@ -151,3 +151,7 @@ class MailService(object):
@defer.inlineCallbacks
def delete_permanent(self, mail_id):
yield self.mail_store.delete_mail(mail_id)
+
+ @defer.inlineCallbacks
+ def delete_attachment(self, attachment_id):
+ yield self.attachment_store.delete_attachment(attachment_id)
diff --git a/service/pixelated/resources/attachments_resource.py b/service/pixelated/resources/attachments_resource.py
index 249d268a..401fb321 100644
--- a/service/pixelated/resources/attachments_resource.py
+++ b/service/pixelated/resources/attachments_resource.py
@@ -71,6 +71,9 @@ class AttachmentResource(Resource):
match = re.compile('([A-Za-z-]+\/[A-Za-z-]+)').search(content_type)
return match.group(1)
+ def render_DELETE(self, request):
+ self.mail_service.delete_attachment(self.attachment_id)
+
class AttachmentsResource(BaseResource):
BASE_URL = 'attachment'