############################################################################## # # ScoDoc # # Copyright (c) 1999 - 2021 Emmanuel Viennet. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Emmanuel Viennet emmanuel.viennet@viennet.net # ############################################################################## """Édition formation APC (BUT) """ import flask from flask import url_for, render_template from flask import g, request from flask_login import current_user from app.models.formations import Formation, UniteEns, Matiere, Module import app.scodoc.notesdb as ndb import app.scodoc.sco_utils as scu from app.scodoc import sco_groups from app.scodoc.sco_utils import ModuleType def html_edit_formation_apc( formation, semestre_idx=None, editable=True, tag_editable=True, ): """Formulaire html pour visualisation ou édition d'une formation APC. - Les UEs - Les ressources - Les SAÉs """ parcours = formation.get_parcours() assert parcours.APC_SAE ressources = formation.modules.filter_by(module_type=ModuleType.RESSOURCE).order_by( Module.semestre_id, Module.numero ) saes = formation.modules.filter_by(module_type=ModuleType.SAE).order_by( Module.semestre_id, Module.numero ) if semestre_idx is None: semestre_ids = range(1, parcours.NB_SEM + 1) else: semestre_ids = [semestre_idx] other_modules = formation.modules.filter( Module.module_type != ModuleType.SAE, Module.module_type != ModuleType.RESSOURCE ) arrow_up, arrow_down, arrow_none = sco_groups.get_arrow_icons_tags() icons = { "arrow_up": arrow_up, "arrow_down": arrow_down, "arrow_none": arrow_none, "delete": scu.icontag( "delete_small_img", title="Supprimer (module inutilisé)", alt="supprimer", ), "delete_disabled": scu.icontag( "delete_small_dis_img", title="Suppression impossible (module utilisé)" ), } H = [ render_template( "pn/form_ues.html", formation=formation, semestre_ids=semestre_ids, editable=editable, tag_editable=tag_editable, icons=icons, ), ] for semestre_idx in semestre_ids: ressources_in_sem = ressources.filter_by(semestre_id=semestre_idx) saes_in_sem = saes.filter_by(semestre_id=semestre_idx) other_modules_in_sem = other_modules.filter_by(semestre_id=semestre_idx) H += [ render_template( "pn/form_mods.html", formation=formation, titre=f"Ressources du S{semestre_idx}", create_element_msg="créer une nouvelle ressource", modules=ressources_in_sem, module_type=ModuleType.RESSOURCE, editable=editable, tag_editable=tag_editable, icons=icons, scu=scu, ), render_template( "pn/form_mods.html", formation=formation, titre=f"Situations d'Apprentissage et d'Évaluation (SAÉs) S{semestre_idx}", create_element_msg="créer une nouvelle SAÉ", modules=saes_in_sem, module_type=ModuleType.SAE, editable=editable, tag_editable=tag_editable, icons=icons, scu=scu, ), render_template( "pn/form_mods.html", formation=formation, titre=f"Autres modules (non BUT) du S{semestre_idx}", create_element_msg="créer un nouveau module", modules=other_modules_in_sem, module_type=ModuleType.STANDARD, editable=editable, tag_editable=tag_editable, icons=icons, scu=scu, ), ] return "\n".join(H)