def create_imap_message(db_session, log, account, folder, msg): """ IMAP-specific message creation logic. This is the one function in this file that gets to take an account object instead of an account_id, because we need to relate the account to ImapUids for versioning to work, since it needs to look up the namespace. Returns ------- imapuid : inbox.server.models.tables.imap.ImapUid New db object, which links to new Message and Block objects through relationships. All new objects are uncommitted. """ new_msg = create_message(db_session, log, account, msg.uid, folder.name, msg.internaldate, msg.flags, msg.body, msg.created) if new_msg: imapuid = ImapUid(imapaccount=account, folder=folder, msg_uid=msg.uid, message=new_msg) imapuid.update_imap_flags(msg.flags) new_msg.is_draft = imapuid.is_draft new_msg.is_read = imapuid.is_seen # NOTE: This might be a good place to add FolderItem entries for # non-Gmail backends. return imapuid
def create_imap_message(db_session, log, account, folder_name, msg): """ IMAP-specific message creation logic. This is the one function in this file that gets to take an account object instead of an account_id, because we need to relate the account to ImapUids for versioning to work, since it needs to look up the namespace. Returns ------- imapuid : inbox.server.models.tables.imap.ImapUid New db object, which links to new Message and Block objects through relationships. All new objects are uncommitted. """ new_msg = create_message(db_session, log, account, msg.uid, folder_name, msg.internaldate, msg.flags, msg.body, msg.created) if new_msg: imapuid = ImapUid(imapaccount=account, folder_name=folder_name, msg_uid=msg.uid, message=new_msg) imapuid.update_imap_flags(msg.flags) new_msg.is_draft = imapuid.is_draft # NOTE: If we're going to make the Inbox datastore API support "read" # status, this is the place to add that data to Message, e.g. # new_msg.is_read = imapuid.is_seen. return imapuid