summaryrefslogtreecommitdiff
path: root/mail/src/leap/mail/imap/fields.py
diff options
context:
space:
mode:
Diffstat (limited to 'mail/src/leap/mail/imap/fields.py')
-rw-r--r--mail/src/leap/mail/imap/fields.py49
1 files changed, 35 insertions, 14 deletions
diff --git a/mail/src/leap/mail/imap/fields.py b/mail/src/leap/mail/imap/fields.py
index 96b937ee..40817cde 100644
--- a/mail/src/leap/mail/imap/fields.py
+++ b/mail/src/leap/mail/imap/fields.py
@@ -25,18 +25,35 @@ class WithMsgFields(object):
Container class for class-attributes to be shared by
several message-related classes.
"""
- # Internal representation of Message
- DATE_KEY = "date"
- HEADERS_KEY = "headers"
- FLAGS_KEY = "flags"
- MBOX_KEY = "mbox"
+ # indexing
CONTENT_HASH_KEY = "chash"
- RAW_KEY = "raw"
- SUBJECT_KEY = "subject"
+ PAYLOAD_HASH_KEY = "phash"
+
+ # Internal representation of Message
+
+ # flags doc
UID_KEY = "uid"
+ MBOX_KEY = "mbox"
+ SEEN_KEY = "seen"
+ RECENT_KEY = "recent"
+ FLAGS_KEY = "flags"
MULTIPART_KEY = "multi"
SIZE_KEY = "size"
+ # headers
+ HEADERS_KEY = "headers"
+ NUM_PARTS_KEY = "numparts"
+ PARTS_MAP_KEY = "partmap"
+ DATE_KEY = "date"
+ SUBJECT_KEY = "subject"
+
+ # attachment
+ PART_NUMBER_KEY = "part"
+ RAW_KEY = "raw"
+
+ # content
+ BODY_KEY = "body"
+
# Mailbox specific keys
CLOSED_KEY = "closed"
CREATED_KEY = "created"
@@ -55,10 +72,6 @@ class WithMsgFields(object):
INBOX_VAL = "inbox"
- # Flags for SoledadDocument for indexing.
- SEEN_KEY = "seen"
- RECENT_KEY = "recent"
-
# Flags in Mailbox and Message
SEEN_FLAG = "\\Seen"
RECENT_FLAG = "\\Recent"
@@ -82,7 +95,9 @@ class WithMsgFields(object):
TYPE_SUBS_IDX = 'by-type-and-subscribed'
TYPE_MBOX_SEEN_IDX = 'by-type-and-mbox-and-seen'
TYPE_MBOX_RECT_IDX = 'by-type-and-mbox-and-recent'
- TYPE_HASH_IDX = 'by-type-and-hash'
+ TYPE_C_HASH_IDX = 'by-type-and-contenthash'
+ TYPE_C_HASH_PART_IDX = 'by-type-and-contenthash-and-partnumber'
+ TYPE_P_HASH_IDX = 'by-type-and-payloadhash'
# Tomas created the `recent and seen index`, but the semantic is not too
# correct since the recent flag is volatile.
@@ -90,7 +105,9 @@ class WithMsgFields(object):
KTYPE = TYPE_KEY
MBOX_VAL = TYPE_MBOX_VAL
- HASH_VAL = CONTENT_HASH_KEY
+ CHASH_VAL = CONTENT_HASH_KEY
+ PHASH_VAL = PAYLOAD_HASH_KEY
+ PART_VAL = PART_NUMBER_KEY
INDEXES = {
# generic
@@ -102,7 +119,11 @@ class WithMsgFields(object):
TYPE_SUBS_IDX: [KTYPE, 'bool(subscribed)'],
# content, headers doc
- TYPE_HASH_IDX: [KTYPE, HASH_VAL],
+ TYPE_C_HASH_IDX: [KTYPE, CHASH_VAL],
+ # attachment docs
+ TYPE_C_HASH_PART_IDX: [KTYPE, CHASH_VAL, PART_VAL],
+ # attachment payload dedup
+ TYPE_P_HASH_IDX: [KTYPE, PHASH_VAL],
# messages
TYPE_MBOX_SEEN_IDX: [KTYPE, MBOX_VAL, 'bool(seen)'],