Changeset View
Changeset View
Standalone View
Standalone View
pykolab/imap/dovecot.py
Show First 20 Lines • Show All 72 Lines • ▼ Show 20 Lines | def imap_getmetadata(self, mailbox, pattern='*', shared=None): | ||||
if shared == None: | if shared == None: | ||||
entries = '( /shared%s /private%s )' % (pattern, pattern) | entries = '( /shared%s /private%s )' % (pattern, pattern) | ||||
elif shared: | elif shared: | ||||
entries = "/shared%s" % pattern | entries = "/shared%s" % pattern | ||||
else: | else: | ||||
entries = " /private%s" % pattern | entries = " /private%s" % pattern | ||||
typ, dat = self._simple_command('GETMETADATA', options, mailbox, entries) | typ, dat = self._simple_command('GETMETADATA', options, mailbox, entries) | ||||
return self._untagged_response(typ, dat, 'METADATA') | return self._untagged_response(typ, dat, 'METADATA') | ||||
def imap_setmetadata(self, mailbox, desc, value, shared=False): | def imap_setmetadata(self, mailbox, desc, value, shared=False): | ||||
if value: | if value: | ||||
value = quote(value) | value = value.join(['"', '"']) | ||||
else: | else: | ||||
value = "NIL" | value = "NIL" | ||||
if shared: | if shared: | ||||
typ, dat = self._simple_command('SETMETADATA', mailbox, | typ, dat = self._simple_command('SETMETADATA', mailbox, | ||||
"(/shared/%s %s)" % (desc,value)) | "(/shared%s %s)" % (desc,value)) | ||||
else: | else: | ||||
typ, dat = self._simple_command('SETMETADATA', mailbox, | typ, dat = self._simple_command('SETMETADATA', mailbox, | ||||
"(/private/%s %s)" % (desc,value)) | "(/private%s %s)" % (desc,value)) | ||||
return self._untagged_response(typ, dat, 'METADATA') | return self._untagged_response(typ, dat, 'METADATA') | ||||
# Bind the new methods to the cyruslib IMAP4 and IMAP4_SSL objects | # Bind the new methods to the cyruslib IMAP4 and IMAP4_SSL objects | ||||
from types import MethodType | from types import MethodType | ||||
cyruslib.IMAP4.getmetadata = MethodType(imap_getmetadata, None, cyruslib.IMAP4) | cyruslib.IMAP4.getmetadata = MethodType(imap_getmetadata, None, cyruslib.IMAP4) | ||||
cyruslib.IMAP4.setmetadata = MethodType(imap_setmetadata, None, cyruslib.IMAP4) | cyruslib.IMAP4.setmetadata = MethodType(imap_setmetadata, None, cyruslib.IMAP4) | ||||
cyruslib.IMAP4_SSL.getmetadata = MethodType(imap_getmetadata, None, cyruslib.IMAP4_SSL) | cyruslib.IMAP4_SSL.getmetadata = MethodType(imap_getmetadata, None, cyruslib.IMAP4_SSL) | ||||
cyruslib.IMAP4_SSL.setmetadata = MethodType(imap_setmetadata, None, cyruslib.IMAP4_SSL) | cyruslib.IMAP4_SSL.setmetadata = MethodType(imap_setmetadata, None, cyruslib.IMAP4_SSL) | ||||
▲ Show 20 Lines • Show All 530 Lines • Show Last 20 Lines |