mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
[mod] autopep8
This commit is contained in:
parent
03d83b7166
commit
f52b805bf4
2 changed files with 67 additions and 62 deletions
|
@ -328,8 +328,8 @@ def tools_update(ignore_apps=False, ignore_packages=False):
|
||||||
else:
|
else:
|
||||||
original_app_id = app_id
|
original_app_id = app_id
|
||||||
|
|
||||||
current_app_dict = app_info(app_id, raw=True)
|
current_app_dict = app_info(app_id, raw=True)
|
||||||
new_app_dict = app_info(original_app_id, raw=True)
|
new_app_dict = app_info(original_app_id, raw=True)
|
||||||
|
|
||||||
# Custom app
|
# Custom app
|
||||||
if new_app_dict is None or 'lastUpdate' not in new_app_dict or 'git' not in new_app_dict:
|
if new_app_dict is None or 'lastUpdate' not in new_app_dict or 'git' not in new_app_dict:
|
||||||
|
|
|
@ -55,12 +55,12 @@ def user_list(auth, fields=None, filter=None, limit=None, offset=None):
|
||||||
fields -- fields to fetch
|
fields -- fields to fetch
|
||||||
|
|
||||||
"""
|
"""
|
||||||
user_attrs = { 'uid': 'username',
|
user_attrs = {'uid': 'username',
|
||||||
'cn': 'fullname',
|
'cn': 'fullname',
|
||||||
'mail': 'mail',
|
'mail': 'mail',
|
||||||
'maildrop': 'mail-forward',
|
'maildrop': 'mail-forward',
|
||||||
'mailuserquota': 'mailbox-quota' }
|
'mailuserquota': 'mailbox-quota'}
|
||||||
attrs = [ 'uid' ]
|
attrs = ['uid']
|
||||||
users = {}
|
users = {}
|
||||||
|
|
||||||
# Set default arguments values
|
# Set default arguments values
|
||||||
|
@ -79,12 +79,12 @@ def user_list(auth, fields=None, filter=None, limit=None, offset=None):
|
||||||
raise MoulinetteError(errno.EINVAL,
|
raise MoulinetteError(errno.EINVAL,
|
||||||
m18n.n('field_invalid', attr))
|
m18n.n('field_invalid', attr))
|
||||||
else:
|
else:
|
||||||
attrs = [ 'uid', 'cn', 'mail', 'mailuserquota' ]
|
attrs = ['uid', 'cn', 'mail', 'mailuserquota']
|
||||||
|
|
||||||
result = auth.search('ou=users,dc=yunohost,dc=org', filter, attrs)
|
result = auth.search('ou=users,dc=yunohost,dc=org', filter, attrs)
|
||||||
|
|
||||||
if len(result) > offset and limit > 0:
|
if len(result) > offset and limit > 0:
|
||||||
for user in result[offset:offset+limit]:
|
for user in result[offset:offset + limit]:
|
||||||
entry = {}
|
entry = {}
|
||||||
for attr, values in user.items():
|
for attr, values in user.items():
|
||||||
try:
|
try:
|
||||||
|
@ -93,7 +93,7 @@ def user_list(auth, fields=None, filter=None, limit=None, offset=None):
|
||||||
pass
|
pass
|
||||||
uid = entry[user_attrs['uid']]
|
uid = entry[user_attrs['uid']]
|
||||||
users[uid] = entry
|
users[uid] = entry
|
||||||
return { 'users' : users }
|
return {'users': users}
|
||||||
|
|
||||||
|
|
||||||
def user_create(auth, username, firstname, lastname, mail, password,
|
def user_create(auth, username, firstname, lastname, mail, password,
|
||||||
|
@ -112,8 +112,8 @@ def user_create(auth, username, firstname, lastname, mail, password,
|
||||||
"""
|
"""
|
||||||
# Validate uniqueness of username and mail in LDAP
|
# Validate uniqueness of username and mail in LDAP
|
||||||
auth.validate_uniqueness({
|
auth.validate_uniqueness({
|
||||||
'uid' : username,
|
'uid': username,
|
||||||
'mail' : mail
|
'mail': mail
|
||||||
})
|
})
|
||||||
|
|
||||||
# Validate uniqueness of username in system users
|
# Validate uniqueness of username in system users
|
||||||
|
@ -125,10 +125,10 @@ def user_create(auth, username, firstname, lastname, mail, password,
|
||||||
raise MoulinetteError(errno.EEXIST, m18n.n('system_username_exists'))
|
raise MoulinetteError(errno.EEXIST, m18n.n('system_username_exists'))
|
||||||
|
|
||||||
# Check that the mail domain exists
|
# Check that the mail domain exists
|
||||||
if mail[mail.find('@')+1:] not in domain_list(auth)['domains']:
|
if mail[mail.find('@') + 1:] not in domain_list(auth)['domains']:
|
||||||
raise MoulinetteError(errno.EINVAL,
|
raise MoulinetteError(errno.EINVAL,
|
||||||
m18n.n('mail_domain_unknown',
|
m18n.n('mail_domain_unknown',
|
||||||
domain=mail[mail.find('@')+1:]))
|
domain=mail[mail.find('@') + 1:]))
|
||||||
|
|
||||||
# Get random UID/GID
|
# Get random UID/GID
|
||||||
uid_check = gid_check = 0
|
uid_check = gid_check = 0
|
||||||
|
@ -141,7 +141,7 @@ def user_create(auth, username, firstname, lastname, mail, password,
|
||||||
fullname = '%s %s' % (firstname, lastname)
|
fullname = '%s %s' % (firstname, lastname)
|
||||||
rdn = 'uid=%s,ou=users' % username
|
rdn = 'uid=%s,ou=users' % username
|
||||||
char_set = string.ascii_uppercase + string.digits
|
char_set = string.ascii_uppercase + string.digits
|
||||||
salt = ''.join(random.sample(char_set,8))
|
salt = ''.join(random.sample(char_set, 8))
|
||||||
salt = '$1$' + salt + '$'
|
salt = '$1$' + salt + '$'
|
||||||
user_pwd = '{CRYPT}' + crypt.crypt(str(password), salt)
|
user_pwd = '{CRYPT}' + crypt.crypt(str(password), salt)
|
||||||
attr_dict = {
|
attr_dict = {
|
||||||
|
@ -166,12 +166,12 @@ def user_create(auth, username, firstname, lastname, mail, password,
|
||||||
with open('/etc/yunohost/current_host') as f:
|
with open('/etc/yunohost/current_host') as f:
|
||||||
main_domain = f.readline().rstrip()
|
main_domain = f.readline().rstrip()
|
||||||
aliases = [
|
aliases = [
|
||||||
'root@'+ main_domain,
|
'root@' + main_domain,
|
||||||
'admin@'+ main_domain,
|
'admin@' + main_domain,
|
||||||
'webmaster@'+ main_domain,
|
'webmaster@' + main_domain,
|
||||||
'postmaster@'+ main_domain,
|
'postmaster@' + main_domain,
|
||||||
]
|
]
|
||||||
attr_dict['mail'] = [ attr_dict['mail'] ] + aliases
|
attr_dict['mail'] = [attr_dict['mail']] + aliases
|
||||||
|
|
||||||
# If exists, remove the redirection from the SSO
|
# If exists, remove the redirection from the SSO
|
||||||
try:
|
try:
|
||||||
|
@ -184,8 +184,8 @@ def user_create(auth, username, firstname, lastname, mail, password,
|
||||||
with open('/etc/ssowat/conf.json.persistent', 'w+') as f:
|
with open('/etc/ssowat/conf.json.persistent', 'w+') as f:
|
||||||
json.dump(ssowat_conf, f, sort_keys=True, indent=4)
|
json.dump(ssowat_conf, f, sort_keys=True, indent=4)
|
||||||
|
|
||||||
except IOError: pass
|
except IOError:
|
||||||
|
pass
|
||||||
|
|
||||||
if auth.add(rdn, attr_dict):
|
if auth.add(rdn, attr_dict):
|
||||||
# Invalidate passwd to take user creation into account
|
# Invalidate passwd to take user creation into account
|
||||||
|
@ -194,7 +194,7 @@ def user_create(auth, username, firstname, lastname, mail, password,
|
||||||
# Update SFTP user group
|
# Update SFTP user group
|
||||||
memberlist = auth.search(filter='cn=sftpusers', attrs=['memberUid'])[0]['memberUid']
|
memberlist = auth.search(filter='cn=sftpusers', attrs=['memberUid'])[0]['memberUid']
|
||||||
memberlist.append(username)
|
memberlist.append(username)
|
||||||
if auth.update('cn=sftpusers,ou=groups', { 'memberUid': memberlist }):
|
if auth.update('cn=sftpusers,ou=groups', {'memberUid': memberlist}):
|
||||||
try:
|
try:
|
||||||
# Attempt to create user home folder
|
# Attempt to create user home folder
|
||||||
subprocess.check_call(
|
subprocess.check_call(
|
||||||
|
@ -204,12 +204,12 @@ def user_create(auth, username, firstname, lastname, mail, password,
|
||||||
logger.warning(m18n.n('user_home_creation_failed'),
|
logger.warning(m18n.n('user_home_creation_failed'),
|
||||||
exc_info=1)
|
exc_info=1)
|
||||||
app_ssowatconf(auth)
|
app_ssowatconf(auth)
|
||||||
#TODO: Send a welcome mail to user
|
# TODO: Send a welcome mail to user
|
||||||
logger.success(m18n.n('user_created'))
|
logger.success(m18n.n('user_created'))
|
||||||
hook_callback('post_user_create',
|
hook_callback('post_user_create',
|
||||||
args=[username, mail, password, firstname, lastname])
|
args=[username, mail, password, firstname, lastname])
|
||||||
|
|
||||||
return { 'fullname' : fullname, 'username' : username, 'mail' : mail }
|
return {'fullname': fullname, 'username': username, 'mail': mail}
|
||||||
|
|
||||||
raise MoulinetteError(169, m18n.n('user_creation_failed'))
|
raise MoulinetteError(169, m18n.n('user_creation_failed'))
|
||||||
|
|
||||||
|
@ -229,9 +229,11 @@ def user_delete(auth, username, purge=False):
|
||||||
|
|
||||||
# Update SFTP user group
|
# Update SFTP user group
|
||||||
memberlist = auth.search(filter='cn=sftpusers', attrs=['memberUid'])[0]['memberUid']
|
memberlist = auth.search(filter='cn=sftpusers', attrs=['memberUid'])[0]['memberUid']
|
||||||
try: memberlist.remove(username)
|
try:
|
||||||
except: pass
|
memberlist.remove(username)
|
||||||
if auth.update('cn=sftpusers,ou=groups', { 'memberUid': memberlist }):
|
except:
|
||||||
|
pass
|
||||||
|
if auth.update('cn=sftpusers,ou=groups', {'memberUid': memberlist}):
|
||||||
if purge:
|
if purge:
|
||||||
subprocess.call(['rm', '-rf', '/home/{0}'.format(username)])
|
subprocess.call(['rm', '-rf', '/home/{0}'.format(username)])
|
||||||
else:
|
else:
|
||||||
|
@ -274,11 +276,11 @@ def user_update(auth, username, firstname=None, lastname=None, mail=None,
|
||||||
|
|
||||||
# Get modifications from arguments
|
# Get modifications from arguments
|
||||||
if firstname:
|
if firstname:
|
||||||
new_attr_dict['givenName'] = firstname # TODO: Validate
|
new_attr_dict['givenName'] = firstname # TODO: Validate
|
||||||
new_attr_dict['cn'] = new_attr_dict['displayName'] = firstname + ' ' + user['sn'][0]
|
new_attr_dict['cn'] = new_attr_dict['displayName'] = firstname + ' ' + user['sn'][0]
|
||||||
|
|
||||||
if lastname:
|
if lastname:
|
||||||
new_attr_dict['sn'] = lastname # TODO: Validate
|
new_attr_dict['sn'] = lastname # TODO: Validate
|
||||||
new_attr_dict['cn'] = new_attr_dict['displayName'] = user['givenName'][0] + ' ' + lastname
|
new_attr_dict['cn'] = new_attr_dict['displayName'] = user['givenName'][0] + ' ' + lastname
|
||||||
|
|
||||||
if lastname and firstname:
|
if lastname and firstname:
|
||||||
|
@ -286,34 +288,34 @@ def user_update(auth, username, firstname=None, lastname=None, mail=None,
|
||||||
|
|
||||||
if change_password:
|
if change_password:
|
||||||
char_set = string.ascii_uppercase + string.digits
|
char_set = string.ascii_uppercase + string.digits
|
||||||
salt = ''.join(random.sample(char_set,8))
|
salt = ''.join(random.sample(char_set, 8))
|
||||||
salt = '$1$' + salt + '$'
|
salt = '$1$' + salt + '$'
|
||||||
new_attr_dict['userPassword'] = '{CRYPT}' + crypt.crypt(str(change_password), salt)
|
new_attr_dict['userPassword'] = '{CRYPT}' + crypt.crypt(str(change_password), salt)
|
||||||
|
|
||||||
if mail:
|
if mail:
|
||||||
auth.validate_uniqueness({ 'mail': mail })
|
auth.validate_uniqueness({'mail': mail})
|
||||||
if mail[mail.find('@')+1:] not in domains:
|
if mail[mail.find('@') + 1:] not in domains:
|
||||||
raise MoulinetteError(errno.EINVAL,
|
raise MoulinetteError(errno.EINVAL,
|
||||||
m18n.n('mail_domain_unknown',
|
m18n.n('mail_domain_unknown',
|
||||||
domain=mail[mail.find('@')+1:]))
|
domain=mail[mail.find('@') + 1:]))
|
||||||
del user['mail'][0]
|
del user['mail'][0]
|
||||||
new_attr_dict['mail'] = [mail] + user['mail']
|
new_attr_dict['mail'] = [mail] + user['mail']
|
||||||
|
|
||||||
if add_mailalias:
|
if add_mailalias:
|
||||||
if not isinstance(add_mailalias, list):
|
if not isinstance(add_mailalias, list):
|
||||||
add_mailalias = [ add_mailalias ]
|
add_mailalias = [add_mailalias]
|
||||||
for mail in add_mailalias:
|
for mail in add_mailalias:
|
||||||
auth.validate_uniqueness({ 'mail': mail })
|
auth.validate_uniqueness({'mail': mail})
|
||||||
if mail[mail.find('@')+1:] not in domains:
|
if mail[mail.find('@') + 1:] not in domains:
|
||||||
raise MoulinetteError(errno.EINVAL,
|
raise MoulinetteError(errno.EINVAL,
|
||||||
m18n.n('mail_domain_unknown',
|
m18n.n('mail_domain_unknown',
|
||||||
domain=mail[mail.find('@')+1:]))
|
domain=mail[mail.find('@') + 1:]))
|
||||||
user['mail'].append(mail)
|
user['mail'].append(mail)
|
||||||
new_attr_dict['mail'] = user['mail']
|
new_attr_dict['mail'] = user['mail']
|
||||||
|
|
||||||
if remove_mailalias:
|
if remove_mailalias:
|
||||||
if not isinstance(remove_mailalias, list):
|
if not isinstance(remove_mailalias, list):
|
||||||
remove_mailalias = [ remove_mailalias ]
|
remove_mailalias = [remove_mailalias]
|
||||||
for mail in remove_mailalias:
|
for mail in remove_mailalias:
|
||||||
if len(user['mail']) > 1 and mail in user['mail'][1:]:
|
if len(user['mail']) > 1 and mail in user['mail'][1:]:
|
||||||
user['mail'].remove(mail)
|
user['mail'].remove(mail)
|
||||||
|
@ -324,7 +326,7 @@ def user_update(auth, username, firstname=None, lastname=None, mail=None,
|
||||||
|
|
||||||
if add_mailforward:
|
if add_mailforward:
|
||||||
if not isinstance(add_mailforward, list):
|
if not isinstance(add_mailforward, list):
|
||||||
add_mailforward = [ add_mailforward ]
|
add_mailforward = [add_mailforward]
|
||||||
for mail in add_mailforward:
|
for mail in add_mailforward:
|
||||||
if mail in user['maildrop'][1:]:
|
if mail in user['maildrop'][1:]:
|
||||||
continue
|
continue
|
||||||
|
@ -333,7 +335,7 @@ def user_update(auth, username, firstname=None, lastname=None, mail=None,
|
||||||
|
|
||||||
if remove_mailforward:
|
if remove_mailforward:
|
||||||
if not isinstance(remove_mailforward, list):
|
if not isinstance(remove_mailforward, list):
|
||||||
remove_mailforward = [ remove_mailforward ]
|
remove_mailforward = [remove_mailforward]
|
||||||
for mail in remove_mailforward:
|
for mail in remove_mailforward:
|
||||||
if len(user['maildrop']) > 1 and mail in user['maildrop'][1:]:
|
if len(user['maildrop']) > 1 and mail in user['maildrop'][1:]:
|
||||||
user['maildrop'].remove(mail)
|
user['maildrop'].remove(mail)
|
||||||
|
@ -346,11 +348,11 @@ def user_update(auth, username, firstname=None, lastname=None, mail=None,
|
||||||
new_attr_dict['mailuserquota'] = mailbox_quota
|
new_attr_dict['mailuserquota'] = mailbox_quota
|
||||||
|
|
||||||
if auth.update('uid=%s,ou=users' % username, new_attr_dict):
|
if auth.update('uid=%s,ou=users' % username, new_attr_dict):
|
||||||
logger.success(m18n.n('user_updated'))
|
logger.success(m18n.n('user_updated'))
|
||||||
app_ssowatconf(auth)
|
app_ssowatconf(auth)
|
||||||
return user_info(auth, username)
|
return user_info(auth, username)
|
||||||
else:
|
else:
|
||||||
raise MoulinetteError(169, m18n.n('user_update_failed'))
|
raise MoulinetteError(169, m18n.n('user_update_failed'))
|
||||||
|
|
||||||
|
|
||||||
def user_info(auth, username):
|
def user_info(auth, username):
|
||||||
|
@ -366,9 +368,9 @@ def user_info(auth, username):
|
||||||
]
|
]
|
||||||
|
|
||||||
if len(username.split('@')) is 2:
|
if len(username.split('@')) is 2:
|
||||||
filter = 'mail='+ username
|
filter = 'mail=' + username
|
||||||
else:
|
else:
|
||||||
filter = 'uid='+ username
|
filter = 'uid=' + username
|
||||||
|
|
||||||
result = auth.search('ou=users,dc=yunohost,dc=org', filter, user_attrs)
|
result = auth.search('ou=users,dc=yunohost,dc=org', filter, user_attrs)
|
||||||
|
|
||||||
|
@ -393,27 +395,30 @@ def user_info(auth, username):
|
||||||
|
|
||||||
if 'mailuserquota' in user:
|
if 'mailuserquota' in user:
|
||||||
if user['mailuserquota'][0] != '0':
|
if user['mailuserquota'][0] != '0':
|
||||||
cmd = 'doveadm -f flow quota get -u %s' % user['uid'][0]
|
cmd = 'doveadm -f flow quota get -u %s' % user['uid'][0]
|
||||||
userquota = subprocess.check_output(cmd,stderr=subprocess.STDOUT,
|
userquota = subprocess.check_output(cmd, stderr=subprocess.STDOUT,
|
||||||
shell=True)
|
shell=True)
|
||||||
quotavalue = re.findall(r'\d+', userquota)
|
quotavalue = re.findall(r'\d+', userquota)
|
||||||
result = '%s (%s%s)' % ( _convertSize(eval(quotavalue[0])),
|
result = '%s (%s%s)' % (_convertSize(eval(quotavalue[0])),
|
||||||
quotavalue[2], '%')
|
quotavalue[2], '%')
|
||||||
result_dict['mailbox-quota'] = {
|
result_dict['mailbox-quota'] = {
|
||||||
'limit' : user['mailuserquota'][0],
|
'limit': user['mailuserquota'][0],
|
||||||
'use' : result
|
'use': result
|
||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
result_dict['mailbox-quota'] = m18n.n('unlimit')
|
result_dict['mailbox-quota'] = m18n.n('unlimit')
|
||||||
|
|
||||||
if result:
|
if result:
|
||||||
return result_dict
|
return result_dict
|
||||||
else:
|
else:
|
||||||
raise MoulinetteError(167, m18n.n('user_info_failed'))
|
raise MoulinetteError(167, m18n.n('user_info_failed'))
|
||||||
|
|
||||||
|
|
||||||
def _convertSize(num, suffix=''):
|
def _convertSize(num, suffix=''):
|
||||||
for unit in ['K','M','G','T','P','E','Z']:
|
for unit in ['K', 'M', 'G', 'T', 'P', 'E', 'Z']:
|
||||||
if abs(num) < 1024.0:
|
if abs(num) < 1024.0:
|
||||||
return "%3.1f%s%s" % (num, unit, suffix)
|
return "%3.1f%s%s" % (num, unit, suffix)
|
||||||
|
|
||||||
num /= 1024.0
|
num /= 1024.0
|
||||||
|
|
||||||
return "%.1f%s%s" % (num, 'Yi', suffix)
|
return "%.1f%s%s" % (num, 'Yi', suffix)
|
||||||
|
|
Loading…
Add table
Reference in a new issue