Пример #1
0
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))
Пример #2
0
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,
    )