Gulag::get_quarmails() return structure improvements

This commit is contained in:
Dominik Chilla 2018-12-27 19:02:52 +01:00
parent 72d7124602
commit 406a69757a
2 changed files with 18 additions and 11 deletions

View File

@ -231,10 +231,11 @@ class Gulag:
if 'rfc822_message' not in args: if 'rfc822_message' not in args:
return qms_db return qms_db
# recognize all IMAP mailboxes to read from # recognize all IMAP mailboxes to read from
# and store rfc822-messages under it
mailboxes = {} mailboxes = {}
for qm in qms_db: for qm in qms_db:
if qm['mailbox_id'] not in mailboxes: if qm['mailbox_id'] not in mailboxes:
mailboxes[qm['mailbox_id']] = [] mailboxes[qm['mailbox_id']] = {}
# any qm_db with full RFC822 messages from IMAP mailbox # any qm_db with full RFC822 messages from IMAP mailbox
for mailbox_id in mailboxes: for mailbox_id in mailboxes:
try: try:
@ -249,14 +250,20 @@ class Gulag:
logging.warning(whoami(self) + e.message) logging.warning(whoami(self) + e.message)
raise GulagException(whoami(self) + e.message) from e raise GulagException(whoami(self) + e.message) from e
for qm_db in qms_db: for qm_db in qms_db:
if qm_db['imap_uid'] not in mailboxes[mailbox_id]:
try: try:
qm_db['rfc822_message'] = imap_mb.get_message( mailboxes[mailbox_id][qm_db['imap_uid']] = imap_mb.get_message(
qm_db['imap_uid'] qm_db['imap_uid']
).decode("utf-8") ).decode("utf-8")
except IMAPmailboxException as e: except IMAPmailboxException as e:
logging.warning(whoami(self) + e.message) logging.warning(whoami(self) + e.message)
raise GulagException(whoami(self) + e.message) from e raise GulagException(whoami(self) + e.message) from e
return qms_db imap_mb.close()
# end for mailboxes
return {
"quarmails": qms_db,
"rfc822_messages": mailboxes
}
def get_quarmail(self,args): def get_quarmail(self,args):
qm_db = None qm_db = None

View File

@ -78,7 +78,7 @@ class GulagDB:
raise GulagDBException(whoami(self) + "query_limit must be numeric!") raise GulagDBException(whoami(self) + "query_limit must be numeric!")
return "limit "+args['query_offset']+","+args['query_limit'] return "limit "+args['query_offset']+","+args['query_limit']
elif('query_offset' in args and 'query_limit' not in args): 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!" "query_offset without query_limit is useless!"
) )
elif('query_limit' in args and 'query_offset' not in args): elif('query_limit' in args and 'query_offset' not in args):