""" PN / Référentiel de compétences Emmanuel Viennet, 2021 """ from flask import url_for, flash from flask import jsonify from flask import current_app, g, request from flask.templating import render_template from flask_login import current_user from werkzeug.utils import redirect from werkzeug.utils import secure_filename from config import Config from app import db from app import models from app.decorators import scodoc, permission_required from app.models.formations import Formation from app.models.but_refcomp import ApcReferentielCompetences from app.but.import_refcomp import orebut_import_refcomp from app.but.forms.refcomp_forms import FormationRefCompForm, RefCompLoadForm from app.scodoc.sco_permissions import Permission from app.views import notes_bp as bp @bp.route("/referentiel/comp/") @scodoc @permission_required(Permission.ScoView) def refcomp(refcomp_id): ref = ApcReferentielCompetences.query.get_or_404(refcomp_id) return jsonify(ref.to_dict()) @bp.route("/refcomp_assoc/", methods=["GET", "POST"]) @scodoc @permission_required(Permission.ScoChangeFormation) def refcomp_assoc(formation_id: int): """Formulaire association ref. compétence""" formation = Formation.query.get_or_404(formation_id) form = FormationRefCompForm() form.referentiel_competence.choices = [ (r.id, f"{r.type_titre} {r.specialite_long}") for r in ApcReferentielCompetences.query.filter_by(dept_id=g.scodoc_dept_id) ] if request.method == "POST" and form.cancel.data: # cancel button return redirect( url_for( "notes.ue_table", scodoc_dept=g.scodoc_dept, formation_id=formation_id ) ) if form.validate_on_submit(): referentiel_competence_id = form.referentiel_competence.data assert ( ApcReferentielCompetences.query.get(referentiel_competence_id) is not None ) formation.referentiel_competence_id = referentiel_competence_id db.session.add(formation) db.session.commit() flash("nouveau référentiel de compétences associé") return redirect( url_for( "notes.ue_table", scodoc_dept=g.scodoc_dept, formation_id=formation_id ) ) return render_template( "but/refcomp_assoc.html", form=form, referentiel_competence_id=formation.referentiel_competence_id, formation=formation, ) @bp.route("/refcomp_load/", methods=["GET", "POST"]) @scodoc @permission_required(Permission.ScoChangeFormation) def refcomp_load(formation_id=None): """Formulaire association ref. compétence""" if formation_id is not None: formation = Formation.query.get_or_404(formation_id) else: formation = None form = RefCompLoadForm() if form.validate_on_submit(): f = form.upload.data filename = secure_filename(f.filename) ref = orebut_import_refcomp(f, dept_id=g.scodoc_dept_id, orig_filename=filename) if formation is not None: return redirect( url_for( "notes.refcomp_assoc", scodoc_dept=g.scodoc_dept, formation_id=formation.formation_id, ) ) else: return redirect(url_for("notes.index_html", scodoc_dept=g.scodoc_dept)) return render_template( "but/refcomp_load.html", form=form, formation=formation, )