Commit 9b367fda authored by Vincent Le gallic's avatar Vincent Le gallic
Browse files

[factorisation de code] Meilleure gestion des droits/surdroits pour la modification de compte

parent 6df9a831
......@@ -1222,9 +1222,6 @@ def modifier_compte(request, idbde=None):
form = forms.CompteForm(request.POST)
if form.is_valid():
fields = form.cleaned_data
# on s'occupe des cases à cocher pour les droits
droits = [champ[7:] for (champ, valeur) in request.POST.items() if (champ[:7] == "droits_") and (valeur == "on")]
surdroits = [champ[10:] for (champ, valeur) in request.POST.items() if (champ[:10] == "surdroits_") and (valeur == "on")]
# on va chercher la valeur actuelle de tous les champs du compte
variables.update(variables_standard)
variables.update(_prepare_variables(sock, idbde, request, form=True, whoami=variables["whoami"]))
......@@ -1236,17 +1233,16 @@ def modifier_compte(request, idbde=None):
# on regarde les champs qui sont différents
tosend = {k: v for (k, v) in form.cleaned_data.items() if k in keyscompte and (v != compte[k])}
# les droits ça se gère un peu spécialement
# ATTENTION : u''.split(",") == [u''] c'est débile, mais c'est comme ça
listedroits = compte["droits"].split(",")
if listedroits == [u'']:
listedroits = []
if set(droits) != set(listedroits):
tosend["droits"] = u",".join(droits)
listesurdroits = compte["surdroits"].split(",")
if listesurdroits == [u'']:
listesurdroits = []
if set(surdroits) != set(listesurdroits):
tosend["surdroits"] = u",".join(surdroits)
# avec des virgules et des cases à cocher
for champ in ["droits", "surdroits"]:
n = len(champ) + 1
droitsousur = [case[n:] for (case, valeur) in request.POST.items() if case.startswith("droits_") and (valeur == "on")]
liste = compte[champ].split(",")
# ATTENTION : u''.split(",") == [u''] c'est débile, mais c'est comme ça
if liste == [u'']:
liste = []
if set(droitsousur) != set(liste):
tosend[champ] = u",".join(droits)
if tosend != {}: # si il y a vraiment quelque chose à faire
# on rajoute l'idbde
tosend["idbde"] = idbde
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment