Changeset View
Changeset View
Standalone View
Standalone View
pykolab/cli/cmd_sync_mailhost_attrs.py
Show First 20 Lines • Show All 65 Lines • ▼ Show 20 Lines | def execute(*args, **kw): | ||||
if not conf.connect_server == None: | if not conf.connect_server == None: | ||||
imap.connect(server=conf.connect_server) | imap.connect(server=conf.connect_server) | ||||
else: | else: | ||||
imap.connect() | imap.connect() | ||||
auth = Auth() | auth = Auth() | ||||
auth.connect() | auth.connect() | ||||
domains = auth.list_domains() | result_attribute = conf.get('cyrus-sasl', 'result_attribute') | ||||
if result_attribute is None: | |||||
result_attribute = 'mail' | |||||
domains = auth.list_domains() | |||||
folders = imap.lm() | folders = imap.lm() | ||||
imap_domains_not_domains = [] | imap_domains_not_domains = [] | ||||
for folder in folders: | for folder in folders: | ||||
if len(folder.split('@')) > 1 and not folder.startswith('DELETED'): | if len(folder.split('@')) > 1 and not folder.startswith('DELETED'): | ||||
_folder_domain = folder.split('@')[-1] | _folder_domain = folder.split('@')[-1] | ||||
if not _folder_domain in list(set(domains.keys() + domains.values())): | if not _folder_domain in list(set(domains.keys() + domains.values())): | ||||
▲ Show 20 Lines • Show All 51 Lines • ▼ Show 20 Lines | for primary in list(set(domains.values())): | ||||
for folder in folders: | for folder in folders: | ||||
server = imap.user_mailbox_server(folder) | server = imap.user_mailbox_server(folder) | ||||
r_folder = folder | r_folder = folder | ||||
if folder.startswith('shared/'): | if folder.startswith('shared/'): | ||||
recipient = auth.find_folder_resource(folder) | recipient = auth.find_folder_resource(folder) | ||||
else: | else: | ||||
r_folder = '/'.join(folder.split('/')[1:]) | r_folder = '/'.join(folder.split('/')[1:]) | ||||
recipient = auth.find_recipient(r_folder) | recipient = auth.find_recipient(r_folder, search_attrs=[result_attribute]) | ||||
if (isinstance(recipient, list)): | if (isinstance(recipient, list)): | ||||
if len(recipient) > 1: | if len(recipient) > 1: | ||||
log.warning(_("Multiple recipients for '%s'!") % (r_folder)) | log.warning(_("Multiple recipients for '%s'!") % (r_folder)) | ||||
continue | continue | ||||
elif len(recipient) == 0: | elif len(recipient) == 0: | ||||
if conf.delete: | if conf.delete: | ||||
if conf.dry_run: | if conf.dry_run: | ||||
Show All 31 Lines | def execute(*args, **kw): | ||||
auth.connect() | auth.connect() | ||||
for folder in folders: | for folder in folders: | ||||
server = imap.user_mailbox_server(folder) | server = imap.user_mailbox_server(folder) | ||||
if folder.startswith('shared/'): | if folder.startswith('shared/'): | ||||
recipient = auth.find_folder_resource(folder) | recipient = auth.find_folder_resource(folder) | ||||
else: | else: | ||||
recipient = auth.find_recipient('/'.join(folder.split('/')[1:])) | recipient = auth.find_recipient('/'.join(folder.split('/')[1:]), search_attrs=[result_attribute]) | ||||
print folder, server, recipient | print folder, server, recipient |