mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
user import: Try to optimize group operations
This commit is contained in:
parent
a40084460b
commit
4de6bbdf84
1 changed files with 15 additions and 5 deletions
|
@ -54,8 +54,10 @@ FIELDS_FOR_IMPORT = {
|
||||||
'mailbox-quota': r'^(\d+[bkMGT])|0$',
|
'mailbox-quota': r'^(\d+[bkMGT])|0$',
|
||||||
'groups': r'^|([a-z0-9_]+(,?[a-z0-9_]+)*)$'
|
'groups': r'^|([a-z0-9_]+(,?[a-z0-9_]+)*)$'
|
||||||
}
|
}
|
||||||
|
|
||||||
FIRST_ALIASES = ['root@', 'admin@', 'webmaster@', 'postmaster@', 'abuse@']
|
FIRST_ALIASES = ['root@', 'admin@', 'webmaster@', 'postmaster@', 'abuse@']
|
||||||
|
|
||||||
|
|
||||||
def user_list(fields=None):
|
def user_list(fields=None):
|
||||||
|
|
||||||
from yunohost.utils.ldap import _get_ldap_interface
|
from yunohost.utils.ldap import _get_ldap_interface
|
||||||
|
@ -779,18 +781,26 @@ def user_import(operation_logger, csvfile, update=False, delete=False):
|
||||||
def update(new_infos, old_infos=False):
|
def update(new_infos, old_infos=False):
|
||||||
remove_alias = None
|
remove_alias = None
|
||||||
remove_forward = None
|
remove_forward = None
|
||||||
if info:
|
remove_groups = []
|
||||||
|
add_groups = new_infos["groups"]
|
||||||
|
if old_infos:
|
||||||
new_infos['mail'] = None if old_infos['mail'] == new_infos['mail'] else new_infos['mail']
|
new_infos['mail'] = None if old_infos['mail'] == new_infos['mail'] else new_infos['mail']
|
||||||
remove_alias = list(set(old_infos['mail-alias']) - set(new_infos['mail-alias']))
|
remove_alias = list(set(old_infos['mail-alias']) - set(new_infos['mail-alias']))
|
||||||
remove_forward = list(set(old_infos['mail-forward']) - set(new_infos['mail-forward']))
|
remove_forward = list(set(old_infos['mail-forward']) - set(new_infos['mail-forward']))
|
||||||
new_infos['mail-alias'] = list(set(new_infos['mail-alias']) - set(old_infos['mail-alias']))
|
new_infos['mail-alias'] = list(set(new_infos['mail-alias']) - set(old_infos['mail-alias']))
|
||||||
new_infos['mail-forward'] = list(set(new_infos['mail-forward']) - set(old_infos['mail-forward']))
|
new_infos['mail-forward'] = list(set(new_infos['mail-forward']) - set(old_infos['mail-forward']))
|
||||||
for group, infos in user_group_list()["groups"].items():
|
|
||||||
if group == "all_users":
|
remove_groups = list(set(old_infos["groups"]) - set(new_infos["groups"]))
|
||||||
|
add_groups = list(set(new_infos["groups"]) - set(old_infos["groups"]))
|
||||||
|
|
||||||
|
for group, infos in existing_groups:
|
||||||
|
# Loop only on groups in 'remove_groups'
|
||||||
|
# Ignore 'all_users' and primary group
|
||||||
|
if group in ["all_users", new_infos['username']] or group not in remove_groups:
|
||||||
continue
|
continue
|
||||||
# If the user is in this group (and it's not the primary group),
|
# If the user is in this group (and it's not the primary group),
|
||||||
# remove the member from the group
|
# remove the member from the group
|
||||||
if new_infos['username'] != group and new_infos['username'] in infos["members"]:
|
if new_infos['username'] in infos["members"]:
|
||||||
user_group_update(group, remove=new_infos['username'], sync_perm=False, from_import=True)
|
user_group_update(group, remove=new_infos['username'], sync_perm=False, from_import=True)
|
||||||
|
|
||||||
user_update(new_infos['username'],
|
user_update(new_infos['username'],
|
||||||
|
@ -802,7 +812,7 @@ def user_import(operation_logger, csvfile, update=False, delete=False):
|
||||||
remove_mailforward=remove_forward,
|
remove_mailforward=remove_forward,
|
||||||
add_mailforward=new_infos['mail-forward'], from_import=True)
|
add_mailforward=new_infos['mail-forward'], from_import=True)
|
||||||
|
|
||||||
for group in new_infos['groups']:
|
for group in add_groups:
|
||||||
user_group_update(group, add=new_infos['username'], sync_perm=False, from_import=True)
|
user_group_update(group, add=new_infos['username'], sync_perm=False, from_import=True)
|
||||||
|
|
||||||
users = user_list(list(FIELDS_FOR_IMPORT.keys()))['users']
|
users = user_list(list(FIELDS_FOR_IMPORT.keys()))['users']
|
||||||
|
|
Loading…
Add table
Reference in a new issue