From 783e58d53a270bcfe11deb83a02e1816c8027078 Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Wed, 16 Nov 2016 20:39:25 +0100 Subject: [PATCH 1/4] [mod] pep8 --- src/yunohost/alias.py | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/src/yunohost/alias.py b/src/yunohost/alias.py index faaf9183c..3a7fe9110 100644 --- a/src/yunohost/alias.py +++ b/src/yunohost/alias.py @@ -29,6 +29,7 @@ import errno from moulinette.core import MoulinetteError from yunohost.domain import domain_list + def alias_list(auth): """ List aliases @@ -36,9 +37,9 @@ def alias_list(auth): """ _ensure_ldap_ou_is_created(auth) ldap_filter = '(&(objectclass=mailAccount)(objectclass=mailAlias))' - ldap_attrs = [ 'mail', 'maildrop' ] + ldap_attrs = ['mail', 'maildrop'] result = auth.search('ou=aliases,dc=yunohost,dc=org', ldap_filter, ldap_attrs) - return { 'alias' : result } + return {'alias': result} def alias_create(auth, alias, mailforward): @@ -54,11 +55,11 @@ def alias_create(auth, alias, mailforward): # Validate uniqueness of alias and mail in LDAP auth.validate_uniqueness({ - 'mail' : alias + 'mail': alias, }) # Check that the mail domain exists - alias_domain = alias[alias.find('@')+1:] + alias_domain = alias[alias.find('@') + 1:] if alias_domain not in domain_list(auth)['domains']: raise MoulinetteError(errno.EINVAL, m18n.n('mail_domain_unknown', @@ -67,16 +68,17 @@ def alias_create(auth, alias, mailforward): # Adapt values for LDAP rdn = 'mail=%s,ou=aliases' % alias attr_dict = { - 'objectClass' : ['mailAccount', 'mailAlias'], - 'mail' : alias, - 'maildrop' : mailforward.split(",") + 'objectClass': ['mailAccount', 'mailAlias'], + 'mail': alias, + 'maildrop': mailforward.split(",") } if not auth.add(rdn, attr_dict): raise MoulinetteError(169, m18n.n('alias_creation_failed')) msignals.display(m18n.n('alias_created'), 'success') - return { 'alias' : alias, 'maildrop' : attr_dict['maildrop'] } + return {'alias': alias, 'maildrop': attr_dict['maildrop']} + def alias_update(auth, alias, add_mailforward=None, remove_mailforward=None): """ @@ -92,8 +94,8 @@ def alias_update(auth, alias, add_mailforward=None, remove_mailforward=None): 'mail', 'maildrop' ] - if len(alias.split('@')) is 2: - filter = 'mail=' + alias + if len(alias.split('@')) == 2: + filter = 'mail=%s' % alias else: # TODO better error message raise MoulinetteError(167, m18n.n('alias_info_failed')) @@ -108,23 +110,24 @@ def alias_update(auth, alias, add_mailforward=None, remove_mailforward=None): # Get modifications from arguments if add_mailforward: if not isinstance(add_mailforward, list): - add_mailforward = [ add_mailforward ] + add_mailforward = [add_mailforward] for mail in add_mailforward: if mail not in current_alias_info['maildrop']: current_alias_info['maildrop'].append(mail) if remove_mailforward: if not isinstance(add_mailforward, list): - add_mailforward = [ add_mailforward ] + add_mailforward = [add_mailforward] for mail in remove_mailforward: if mail in current_alias_info['maildrop'][1:]: current_alias_info['maildrop'].remove(mail) if auth.update('mail=%s,ou=aliases' % alias, current_alias_info): - msignals.display(m18n.n('alias_updated'), 'success') - return alias_info(auth, alias) + msignals.display(m18n.n('alias_updated'), 'success') + return alias_info(auth, alias) else: - raise MoulinetteError(169, m18n.n('alias_update_failed')) + raise MoulinetteError(169, m18n.n('alias_update_failed')) + def alias_delete(auth, alias): """ @@ -169,18 +172,19 @@ def alias_info(auth, alias): return result[0] + def _ensure_ldap_ou_is_created(auth): """ Make sure the 'ou=aliases' tree is created, for holding aliases entries. Raises an exception in case of error. - + Keyword argument: auth -- the auth object from moulinette, managing the LDAP connection """ rdn = 'ou=aliases' attr_dict = { - 'objectClass' : ['organizationalUnit', 'top'], + 'objectClass': ['organizationalUnit', 'top'], } - if not auth.search('dc=yunohost,dc=org', rdn, attr_dict['objectClass']) : + if not auth.search('dc=yunohost,dc=org', rdn, attr_dict['objectClass']): if auth.add(rdn, attr_dict): msignals.display(m18n.n('alias_init'), 'success') From 0c1a072e8a7bd27fb27c8fce88bd66bc409fae4c Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Wed, 16 Nov 2016 20:51:09 +0100 Subject: [PATCH 2/4] [mod] intermediate value to make code directly understandable --- src/yunohost/alias.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/yunohost/alias.py b/src/yunohost/alias.py index 3a7fe9110..4e2eb51ad 100644 --- a/src/yunohost/alias.py +++ b/src/yunohost/alias.py @@ -73,7 +73,8 @@ def alias_create(auth, alias, mailforward): 'maildrop': mailforward.split(",") } - if not auth.add(rdn, attr_dict): + success = auth.add(rdn, attr_dict) + if not success: raise MoulinetteError(169, m18n.n('alias_creation_failed')) msignals.display(m18n.n('alias_created'), 'success') @@ -122,12 +123,13 @@ def alias_update(auth, alias, add_mailforward=None, remove_mailforward=None): if mail in current_alias_info['maildrop'][1:]: current_alias_info['maildrop'].remove(mail) - if auth.update('mail=%s,ou=aliases' % alias, current_alias_info): - msignals.display(m18n.n('alias_updated'), 'success') - return alias_info(auth, alias) - else: + success = auth.update('mail=%s,ou=aliases' % alias, current_alias_info) + if not success: raise MoulinetteError(169, m18n.n('alias_update_failed')) + msignals.display(m18n.n('alias_updated'), 'success') + return alias_info(auth, alias) + def alias_delete(auth, alias): """ @@ -139,7 +141,8 @@ def alias_delete(auth, alias): """ _ensure_ldap_ou_is_created(auth) - if not auth.remove('mail=%s,ou=aliases' % alias): + success = auth.remove('mail=%s,ou=aliases' % alias) + if not success: raise MoulinetteError(169, m18n.n('alias_deletion_failed')) msignals.display(m18n.n('alias_deleted'), 'success') @@ -185,6 +188,9 @@ def _ensure_ldap_ou_is_created(auth): attr_dict = { 'objectClass': ['organizationalUnit', 'top'], } - if not auth.search('dc=yunohost,dc=org', rdn, attr_dict['objectClass']): + + result = auth.search('dc=yunohost,dc=org', rdn, attr_dict['objectClass']) + + if not result: if auth.add(rdn, attr_dict): msignals.display(m18n.n('alias_init'), 'success') From 61d694791c18f72bf9782ceb38c214b543b37c85 Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Wed, 16 Nov 2016 20:51:49 +0100 Subject: [PATCH 3/4] [mod] normalize input to lighten after code --- src/yunohost/alias.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/yunohost/alias.py b/src/yunohost/alias.py index 4e2eb51ad..5917d70f0 100644 --- a/src/yunohost/alias.py +++ b/src/yunohost/alias.py @@ -91,6 +91,13 @@ def alias_update(auth, alias, add_mailforward=None, remove_mailforward=None): """ _ensure_ldap_ou_is_created(auth) + # normalize input + if not isinstance(add_mailforward, list): + add_mailforward = [add_mailforward] + + if not isinstance(add_mailforward, list): + add_mailforward = [add_mailforward] + alias_attrs = [ 'mail', 'maildrop' ] @@ -110,15 +117,11 @@ def alias_update(auth, alias, add_mailforward=None, remove_mailforward=None): # Get modifications from arguments if add_mailforward: - if not isinstance(add_mailforward, list): - add_mailforward = [add_mailforward] for mail in add_mailforward: if mail not in current_alias_info['maildrop']: current_alias_info['maildrop'].append(mail) if remove_mailforward: - if not isinstance(add_mailforward, list): - add_mailforward = [add_mailforward] for mail in remove_mailforward: if mail in current_alias_info['maildrop'][1:]: current_alias_info['maildrop'].remove(mail) From d7e98bb7d959a5ac92da912828a349931a24f138 Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Wed, 16 Nov 2016 20:52:15 +0100 Subject: [PATCH 4/4] [mod] avoid overwriting buildin function --- src/yunohost/alias.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/yunohost/alias.py b/src/yunohost/alias.py index 5917d70f0..4e57e4665 100644 --- a/src/yunohost/alias.py +++ b/src/yunohost/alias.py @@ -103,12 +103,12 @@ def alias_update(auth, alias, add_mailforward=None, remove_mailforward=None): ] if len(alias.split('@')) == 2: - filter = 'mail=%s' % alias + ldap_filter = 'mail=%s' % alias else: # TODO better error message raise MoulinetteError(167, m18n.n('alias_info_failed')) - result = auth.search('ou=aliases,dc=yunohost,dc=org', filter, alias_attrs) + result = auth.search('ou=aliases,dc=yunohost,dc=org', ldap_filter, alias_attrs) if not result: raise MoulinetteError(errno.EINVAL, m18n.n('alias_unknown'))