summaryrefslogtreecommitdiff
path: root/src/leap/mail/imap/memorystore.py
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2014-01-29 00:54:20 -0400
committerKali Kaneko <kali@leap.se>2014-01-30 14:20:56 -0400
commit1b71ba510a2e6680f1ecc84eacfc492b0bbe24fc (patch)
treecb0984252737a9e4dfc9df24d8d8e3a6974bf71f /src/leap/mail/imap/memorystore.py
parent3243d37fcc3703bc9428717ffc72c4e680831813 (diff)
Fix copy and deletion problems
* reorganize and simplify STORE command processing * add the notification after the processing of the whole sequence
Diffstat (limited to 'src/leap/mail/imap/memorystore.py')
-rw-r--r--src/leap/mail/imap/memorystore.py20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/leap/mail/imap/memorystore.py b/src/leap/mail/imap/memorystore.py
index 2d60b13..fac66ad 100644
--- a/src/leap/mail/imap/memorystore.py
+++ b/src/leap/mail/imap/memorystore.py
@@ -357,7 +357,7 @@ class MemoryStore(object):
doc_id = fdoc.doc_id
return doc_id
- def get_message(self, mbox, uid):
+ def get_message(self, mbox, uid, flags_only=False):
"""
Get a MessageWrapper for the given mbox and uid combination.
@@ -365,17 +365,27 @@ class MemoryStore(object):
:type mbox: str or unicode
:param uid: the message UID
:type uid: int
+ :param flags_only: whether the message should carry only a reference
+ to the flags document.
+ :type flags_only: bool
:return: MessageWrapper or None
"""
key = mbox, uid
+ FDOC = MessagePartType.fdoc.key
+
msg_dict = self._msg_store.get(key, None)
if empty(msg_dict):
return None
new, dirty = self._get_new_dirty_state(key)
- return MessageWrapper(from_dict=msg_dict,
- new=new, dirty=dirty,
- memstore=weakref.proxy(self))
+ if flags_only:
+ return MessageWrapper(fdoc=msg_dict[FDOC],
+ new=new, dirty=dirty,
+ memstore=weakref.proxy(self))
+ else:
+ return MessageWrapper(from_dict=msg_dict,
+ new=new, dirty=dirty,
+ memstore=weakref.proxy(self))
def remove_message(self, mbox, uid):
"""
@@ -590,7 +600,7 @@ class MemoryStore(object):
if fdoc and fields.DELETED_FLAG in fdoc[fields.FLAGS_KEY]:
return None
- uid = fdoc.content[fields.UID_KEY]
+ uid = fdoc[fields.UID_KEY]
key = mbox, uid
new = key in self._new
dirty = key in self._dirty