def addorupdate(id_organisme): """ Route affichant un formulaire vierge ou non (selon l'url) pour ajouter ou mettre à jour un organisme L'envoie du formulaire permet l'ajout ou la mise à jour de l'éléments dans la base Retourne un template accompagné du formulaire Une fois le formulaire validé on retourne une redirection vers la liste d'organisme """ form = bib_organismeforms.Organisme() if id_organisme == None: if request.method == "POST": if form.validate_on_submit() and form.validate(): form_org = pops(form.data) form_org.pop("id_organisme") Bib_Organismes.post(form_org) return redirect(url_for("organisme.organisms")) else: flash(strigify_dict(form.errors), "error") else: org = Bib_Organismes.get_one(id_organisme) if request.method == "GET": form = bib_organismeforms.Organisme(**org) if request.method == "POST": if form.validate_on_submit() and form.validate(): form_org = pops(form.data) form_org["id_organisme"] = org["id_organisme"] Bib_Organismes.update(form_org) return redirect(url_for("organisme.organisms")) else: flash(strigify_dict(form.errors), "error") return render_template("organism.html", form=form, title="Formulaire Organisme")
def addorupdate(id_liste): """ Route affichant un formulaire vierge ou non (selon l'url) pour ajouter ou mettre à jour une liste L'envoie du formulaire permet l'ajout ou la maj de la liste dans la base Retourne un template accompagné d'un formulaire pré-rempli ou non selon le paramètre id_liste Une fois le formulaire validé on retourne une redirection vers la liste des listes """ form = listeforms.List() if id_liste == None: if request.method == "POST": if form.validate_on_submit() and form.validate(): form_list = pops(form.data) form_list.pop("id_liste") TListes.post(form_list) return redirect(url_for("liste.lists")) return render_template("list.html", form=form, title="Formulaire Liste") else: list = TListes.get_one(id_liste) if request.method == "GET": form = process(form, list) if request.method == "POST": if form.validate_on_submit() and form.validate(): form_list = pops(form.data) form_list["id_liste"] = list["id_liste"] TListes.update(form_list) return redirect(url_for("liste.lists")) else: flash(strigify_dict(form.errors)) return render_template("list.html", form=form, title="Formulaire Liste")
def updatepass(id_role=None): """ Route affichant un formulaire permettant de changer le pass des utilisateurs L'envoie du formulaire permet la mise à jour du pass de l'utilisateur dans la base Retourne un template accompagné du formulaire pré-rempli ou non selon le paramètre id_role Une fois le formulaire validé on retourne une redirection vers la liste des utilisateurs """ form = t_rolesforms.UserPass() myuser = TRoles.get_one(id_role) if request.method == "POST": if form.validate_on_submit() and form.validate(): form_user = pops(form.data, False) form_user.pop("id_role") # check if passwords are the same if form.pass_plus.data: try: ( form_user["pass_plus"], form_user["pass_md5"], ) = check_and_encrypt_password( form.pass_plus.data, form.mdpconf.data, current_app.config["PASS_METHOD"] == "md5" or current_app.config["FILL_MD5_PASS"], ) except Exception as exp: flash({"password": [exp]}, "error") return render_template( "user_pass.html", form=form, title="Changer le mot de passe de l'utilisateur '" + myuser["nom_role"] + " " + myuser["prenom_role"] + "'", id_role=id_role, ) form_user["id_role"] = id_role TRoles.update(form_user) return redirect(url_for("user.users")) else: flash(strigify_dict(form.errors), "error") return render_template( "user_pass.html", form=form, title="Changer le mot de passe de l'utilisateur '" + myuser["nom_role"] + " " + myuser["prenom_role"] + "'", id_role=id_role, )
def updatepass(id_role=None): """ Route affichant un formulaire permettant de changer le pass des utilisateurs L'envoie du formulaire permet la mise à jour du pass de l'utilisateur dans la base Retourne un template accompagné du formulaire pré-rempli ou non selon le paramètre id_role Une fois le formulaire validé on retourne une redirection vers la liste des utilisateurs """ form = t_rolesforms.UserPass() myuser = TRoles.get_one(id_role) if request.method == 'POST': if form.validate_on_submit() and form.validate(): form_user = pops(form.data, False) form_user.pop('id_role') # check if passwords are the same if form.pass_plus.data: try: (form_user['pass_plus'], form_user['pass_md5']) = TRoles.set_password( form.pass_plus.data, form.mdpconf.data) except Exception as exp: flash({'password': [exp]}, 'error') return render_template( 'user_pass.html', form=form, title="Changer le mot de passe de l'utilisateur '" + myuser['nom_role'] + ' ' + myuser['prenom_role'] + "'", id_role=id_role) form_user['id_role'] = id_role TRoles.update(form_user) return redirect(url_for('user.users')) else: flash(strigify_dict(form.errors), 'error') return render_template('user_pass.html', form=form, title="Changer le mot de passe de l'utilisateur '" + myuser['nom_role'] + ' ' + myuser['prenom_role'] + "'", id_role=id_role)
def addorupdate(id_role=None): """ Route affichant un formulaire vierge ou non (selon l'url) pour ajouter ou mettre à jour un groupe L'envoie du formulaire permet l'ajout ou la maj du groupe dans la base Retourne un template accompagné d'un formulaire pré-rempli ou non selon le paramètre id_role Une fois le formulaire validé on retourne une redirection vers la liste de groupe """ form = groupeforms.Group() form.groupe.process_data(True) if id_role == None: if request.method == "POST": if form.validate_on_submit() and form.validate(): form_group = pops(form.data) form_group.pop("id_role") # set the group as active default form_group["active"] = True TRoles.post(form_group) return redirect(url_for("groupe.groups")) else: errors = form.errors return render_template("group.html", form=form, title="Formulaire Groupe") else: group = TRoles.get_one(id_role) if request.method == "GET": form = process(form, group) if request.method == "POST": if form.validate_on_submit() and form.validate(): form_group = pops(form.data) form_group["id_role"] = group["id_role"] TRoles.update(form_group) return redirect(url_for("groupe.groups")) else: errors = form.errors flash(strigify_dict(errors), "error") return render_template("group.html", form=form, title="Formulaire Groupe")
def addorupdate(id_role=None): """ Route affichant un formulaire vierge ou non (selon l'url) pour ajouter ou mettre à jour un utilisateurs L'envoie du formulaire permet l'ajout ou la mise à jour de l'utilisateur dans la base Retourne un template accompagné du formulaire pré-rempli ou non selon le paramètre id_role Une fois le formulaire validé on retourne une redirection vers la liste des utilisateurs """ form = t_rolesforms.Utilisateur() form.id_organisme.choices = Bib_Organismes.choixSelect( 'id_organisme', 'nom_organisme') form.a_groupe.choices = TRoles.choix_group('id_role', 'nom_role', aucun=None) if id_role is not None: user = TRoles.get_one(id_role, as_model=True) user_as_dict = user.as_dict_full_name() # format group to prepfil the form formated_groups = [ group.id_role for group in TRoles.get_user_groups(id_role) ] if request.method == 'GET': form = process(form, user_as_dict, formated_groups) if request.method == 'POST': if form.validate_on_submit() and form.validate(): groups = form.data['a_groupe'] form_user = pops(form.data) form_user['groupe'] = False form_user.pop('id_role') # if a password is set # check they are the same if form.pass_plus.data: try: (form_user['pass_plus'], form_user['pass_md5']) = TRoles.set_password( form.pass_plus.data, form.mdpconf.data) except Exception as exp: flash(str(exp), 'error') return render_template('user.html', form=form, title="Formulaire Utilisateur") if id_role is not None: #HACK a l'update on remet a la main les mdp # car on les masque dans le form form_user['pass_plus'] = user.pass_plus form_user['pass_md5'] = user.pass_md5 form_user['id_role'] = user.id_role new_role = TRoles.update(form_user) else: new_role = TRoles.post(form_user) # set groups if len(groups) > 0: if id_role: #first delete all groups of the user cor_role_to_delete = CorRoles.get_all(params=[{ 'col': 'id_role_utilisateur', 'filter': id_role }], as_model=True) print(cor_role_to_delete) for cor_role in cor_role_to_delete: db.session.delete(cor_role) db.session.commit() for group in groups: # add new groups new_group = CorRoles(id_role_groupe=group, id_role_utilisateur=new_role.id_role) db.session.add(new_group) db.session.commit() return redirect(url_for('user.users')) else: flash(strigify_dict(form.errors), 'error') return render_template('user.html', form=form, title="Formulaire Utilisateur", id_role=id_role)
def addorupdate(id_role=None): """ Route affichant un formulaire vierge ou non (selon l'url) pour ajouter ou mettre à jour un utilisateurs L'envoie du formulaire permet l'ajout ou la mise à jour de l'utilisateur dans la base Retourne un template accompagné du formulaire pré-rempli ou non selon le paramètre id_role Une fois le formulaire validé on retourne une redirection vers la liste des utilisateurs """ form = t_rolesforms.Utilisateur() form.id_organisme.choices = Bib_Organismes.choixSelect( "id_organisme", "nom_organisme", order_by="nom_organisme") form.a_groupe.choices = TRoles.choix_group("id_role", "nom_role", aucun=None) if id_role is not None: user = TRoles.get_one(id_role, as_model=True) user_as_dict = user.as_dict_full_name() # format group to prepfil the form formated_groups = [ group.id_role for group in TRoles.get_user_groups(id_role) ] if request.method == "GET": form = process(form, user_as_dict, formated_groups) if request.method == "POST": if form.validate_on_submit() and form.validate(): groups = form.data["a_groupe"] form_user = pops(form.data) form_user["groupe"] = False form_user.pop("id_role") # if a password is set # check they are the same if form.pass_plus.data: try: ( form_user["pass_plus"], form_user["pass_md5"], ) = check_and_encrypt_password( form.pass_plus.data, form.mdpconf.data, current_app.config["PASS_METHOD"] == "md5" or current_app.config["FILL_MD5_PASS"], ) except Exception as exp: flash(str(exp), "error") return render_template("user.html", form=form, title="Formulaire Utilisateur") if id_role is not None: # HACK a l'update on remet a la main les mdp # car on les masque dans le form form_user["pass_plus"] = user.pass_plus form_user["pass_md5"] = user.pass_md5 form_user["id_role"] = user.id_role new_role = TRoles.update(form_user) else: new_role = TRoles.post(form_user) # set groups if len(groups) > 0: if id_role: # first delete all groups of the user cor_role_to_delete = CorRoles.get_all( params=[{ "col": "id_role_utilisateur", "filter": id_role }], as_model=True, ) for cor_role in cor_role_to_delete: db.session.delete(cor_role) db.session.commit() for group in groups: # add new groups new_group = CorRoles(id_role_groupe=group, id_role_utilisateur=new_role.id_role) db.session.add(new_group) db.session.commit() return redirect(url_for("user.users")) else: flash(strigify_dict(form.errors), "error") return render_template("user.html", form=form, title="Formulaire Utilisateur", id_role=id_role)