From 406a69757a460dc2e4e84b0f0fb8ea63b1a32c64 Mon Sep 17 00:00:00 2001 From: Dominik Chilla Date: Thu, 27 Dec 2018 19:02:52 +0100 Subject: [PATCH] Gulag::get_quarmails() return structure improvements --- app/Gulag.py | 27 +++++++++++++++++---------- app/GulagDB.py | 2 +- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/app/Gulag.py b/app/Gulag.py index d87a0ca..eb089d2 100644 --- a/app/Gulag.py +++ b/app/Gulag.py @@ -231,11 +231,12 @@ class Gulag: if 'rfc822_message' not in args: return qms_db # recognize all IMAP mailboxes to read from + # and store rfc822-messages under it mailboxes = {} for qm in qms_db: if qm['mailbox_id'] not in mailboxes: - mailboxes[qm['mailbox_id']] = [] - # any qm_db with full RFC822 messages from IMAP mailbox + mailboxes[qm['mailbox_id']] = {} + # any qm_db with full RFC822 messages from IMAP mailbox for mailbox_id in mailboxes: try: mailbox = self.db.get_mailbox(mailbox_id) @@ -249,14 +250,20 @@ class Gulag: logging.warning(whoami(self) + e.message) raise GulagException(whoami(self) + e.message) from e for qm_db in qms_db: - try: - qm_db['rfc822_message'] = imap_mb.get_message( - qm_db['imap_uid'] - ).decode("utf-8") - except IMAPmailboxException as e: - logging.warning(whoami(self) + e.message) - raise GulagException(whoami(self) + e.message) from e - return qms_db + if qm_db['imap_uid'] not in mailboxes[mailbox_id]: + try: + mailboxes[mailbox_id][qm_db['imap_uid']] = imap_mb.get_message( + qm_db['imap_uid'] + ).decode("utf-8") + except IMAPmailboxException as e: + logging.warning(whoami(self) + e.message) + raise GulagException(whoami(self) + e.message) from e + imap_mb.close() + # end for mailboxes + return { + "quarmails": qms_db, + "rfc822_messages": mailboxes + } def get_quarmail(self,args): qm_db = None diff --git a/app/GulagDB.py b/app/GulagDB.py index 84f40ab..7e020a7 100644 --- a/app/GulagDB.py +++ b/app/GulagDB.py @@ -78,7 +78,7 @@ class GulagDB: raise GulagDBException(whoami(self) + "query_limit must be numeric!") return "limit "+args['query_offset']+","+args['query_limit'] elif('query_offset' in args and 'query_limit' not in args): - raise GulagDBException(whois(self) + + raise GulagDBException(whoami(self) + "query_offset without query_limit is useless!" ) elif('query_limit' in args and 'query_offset' not in args):