Fix: edition user sans dept

This commit is contained in:
Emmanuel Viennet 2021-09-28 16:20:15 +02:00
parent 5dfdf4265e
commit 656c8a9f22
2 changed files with 9 additions and 7 deletions

View File

@ -329,7 +329,7 @@ class Role(db.Model):
"""Roles for ScoDoc""" """Roles for ScoDoc"""
id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True) name = db.Column(db.String(64), unique=True) # TODO: , nullable=False))
default = db.Column(db.Boolean, default=False, index=True) default = db.Column(db.Boolean, default=False, index=True)
permissions = db.Column(db.BigInteger) # 64 bits permissions = db.Column(db.BigInteger) # 64 bits
users = db.relationship("User", secondary="user_role", viewonly=True) users = db.relationship("User", secondary="user_role", viewonly=True)
@ -388,7 +388,7 @@ class UserRole(db.Model):
id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey("user.id")) user_id = db.Column(db.Integer, db.ForeignKey("user.id"))
role_id = db.Column(db.Integer, db.ForeignKey("role.id")) role_id = db.Column(db.Integer, db.ForeignKey("role.id"))
dept = db.Column(db.String(64)) # dept acronym dept = db.Column(db.String(64)) # dept acronym ou NULL
user = db.relationship( user = db.relationship(
User, backref=db.backref("user_roles", cascade="all, delete-orphan") User, backref=db.backref("user_roles", cascade="all, delete-orphan")
) )

View File

@ -171,15 +171,17 @@ def create_user_form(user_name=None, edit=0, all_roles=1):
} }
if not initvalues["active"]: if not initvalues["active"]:
editable_roles_set = set() # can't change roles of a disabled user editable_roles_set = set() # can't change roles of a disabled user
editable_roles_strings = {r.name + "_" + dept for (r, dept) in editable_roles_set} editable_roles_strings = {
orig_roles_strings = {r.name + "_" + dept for (r, dept) in orig_roles} r.name + "_" + (dept or "") for (r, dept) in editable_roles_set
}
orig_roles_strings = {r.name + "_" + (dept or "") for (r, dept) in orig_roles}
# add existing user roles # add existing user roles
displayed_roles = list(editable_roles_set.union(orig_roles)) displayed_roles = list(editable_roles_set.union(orig_roles))
displayed_roles.sort(key=lambda x: (x[1], x[0].name)) displayed_roles.sort(key=lambda x: (x[1], x[0].name))
displayed_roles_strings = [r.name + "_" + dept for (r, dept) in displayed_roles] displayed_roles_strings = [
displayed_roles_labels = [ r.name + "_" + (dept or "") for (r, dept) in displayed_roles
"{dept}: {r.name}".format(dept=dept, r=r) for (r, dept) in displayed_roles
] ]
displayed_roles_labels = [f"{dept}: {r.name}" for (r, dept) in displayed_roles]
disabled_roles = {} # pour desactiver les roles que l'on ne peut pas editer disabled_roles = {} # pour desactiver les roles que l'on ne peut pas editer
for i in range(len(displayed_roles_strings)): for i in range(len(displayed_roles_strings)):
if displayed_roles_strings[i] not in editable_roles_strings: if displayed_roles_strings[i] not in editable_roles_strings: