diff --git a/app/views/users.py b/app/views/users.py index 8612d0a8f..9e2262207 100644 --- a/app/views/users.py +++ b/app/views/users.py @@ -273,7 +273,11 @@ def create_user_form(user_name=None, edit=0, all_roles=True): administrable_dept_acronyms = _get_administrable_depts() if edit: - if the_user.dept is None: # seul le super admin peut le toucher + if (the_user.dept is None) or the_user.dept not in ( + d.acronym for d in Departement.query.all() + ): + # user dans tous dept, ou dans un dept inconnu: + # seul le super admin peut le toucher edit_only_roles = not current_user.is_administrator() else: edit_only_roles = the_user.dept not in administrable_dept_acronyms diff --git a/scodoc.py b/scodoc.py index e47b7115f..d8f114efa 100755 --- a/scodoc.py +++ b/scodoc.py @@ -471,6 +471,7 @@ def user_change_login(user_name, new_user_name): is_flag=True, help="interdit login via ScoDoc", ) +@click.option("--dept", "dept", help="acronyme du départemùent de rattachement") @click.option( "-v", "--verbose", @@ -487,6 +488,7 @@ def user_edit( disable_scodoc_login=None, activate=None, deactivate=None, + dept=None, verbose=False, ): """Add or remove a role to the given user in the given dept""" @@ -508,6 +510,10 @@ def user_edit( user.active = True if deactivate: user.active = False + if dept: + if dept == "@all": + dept = None + user.dept = dept db.session.add(user) db.session.commit() if verbose: