def delete_cor_role_app_profil(id_role, id_application): try: CorRoleAppProfil.delete(id_role, id_application) except Exception: flash("Une erreur s'est produite", "error") flash("Profil supprimé avec succès") return redirect( url_for("application.profils_in_app", id_application=id_application))
def add_or_update_profil_for_role_in_app(id_application, id_role=None): """ add or update un profil sur une application on part du principe qu'un role ne peut avoir qu'un profil dans une application TODO: pour mettre plusieurs profil a un role dans une appli: rajouter une clé primaire a cor_role_app_profil pour gérer l'update """ form = t_applicationsforms.AppProfil(id_application) application = TApplications.get_one(id_application) role = None title = "Ajouter un profil l'application {}".format( application["nom_application"]) if id_role: role = TRoles.get_one(id_role, as_model=True).as_dict_full_name() title = "Editer le profil de {} dans l'application {}".format( role["full_name"], application["nom_application"]) # preremplissage du formulaire profil_in_app = CorRoleAppProfil.get_one(id_role, id_application) form.profil.process_data(profil_in_app.id_profil) form.role.process_data(str(id_role)) # HACK ajout de l'utilisateur courant dans la liste déroulante # sinon le formulaire ne passe pas form.role.choices.append((id_role, role["full_name"])) if request.method == "POST": # set new id__profil form.profil.process_data(request.form["profil"]) if form.validate() and form.validate_on_submit(): try: if id_role: # on supprime d'abbord le profil pour une app CorRoleAppProfil.delete(id_role=id_role, id_application=id_application) # et on post CorRoleAppProfil.post({ "id_role": form.data["role"], "id_profil": form.data["profil"], "id_application": id_application, }) except Exception as e: redirect( url_for( "application.add_or_update_profil_for_role_in_app", id_application=id_application, )) flash("Une erreur s'est produite, {}".format(e), "error") flash("Profil ajouté/edité avec succès") return redirect( url_for("application.profils_in_app", id_application=id_application)) return render_template( "application_role_profil_form.html", title=title, form=form, application=application, id_role=id_role, )