forked from ScoDoc/ScoDoc
113 lines
3.6 KiB
Python
113 lines
3.6 KiB
Python
##############################################################################
|
|
# ScoDoc
|
|
# Copyright (c) 1999 - 2024 Emmanuel Viennet. All rights reserved.
|
|
# See LICENSE
|
|
##############################################################################
|
|
|
|
"""Formulaire édition description formsemestre
|
|
"""
|
|
from wtforms import (
|
|
BooleanField,
|
|
FileField,
|
|
SelectField,
|
|
StringField,
|
|
TextAreaField,
|
|
SubmitField,
|
|
)
|
|
from wtforms.validators import AnyOf, Optional
|
|
|
|
from app.forms import ScoDocForm
|
|
from app.models import FORMSEMESTRE_DISPOSITIFS
|
|
from app.scodoc import sco_utils as scu
|
|
|
|
|
|
class DateDMYField(StringField):
|
|
"Champ date JJ/MM/AAAA"
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
render_kw = kwargs.pop("render_kw", {})
|
|
render_kw.update({"class": "datepicker", "size": 10})
|
|
super().__init__(*args, render_kw=render_kw, **kwargs)
|
|
|
|
# note: process_formdata(self, valuelist) ne fonctionne pas
|
|
# en cas d'erreur de saisie les valeurs ne sont pas ré-affichées.
|
|
# On vérifie donc les valeurs dans le code de la vue.
|
|
|
|
def process_data(self, value):
|
|
"Process data from model to form"
|
|
if value:
|
|
self.data = value.strftime(scu.DATE_FMT)
|
|
else:
|
|
self.data = ""
|
|
|
|
|
|
class FormSemestreDescriptionForm(ScoDocForm):
|
|
"Formulaire édition description formsemestre"
|
|
description = TextAreaField(
|
|
"Description",
|
|
validators=[Optional()],
|
|
description="""texte libre : informations
|
|
sur le contenu, les objectifs, les modalités d'évaluation, etc.""",
|
|
)
|
|
horaire = StringField(
|
|
"Horaire", validators=[Optional()], description="ex: les lundis 9h-12h"
|
|
)
|
|
date_debut_inscriptions = DateDMYField(
|
|
"Date de début des inscriptions",
|
|
description="""date d'ouverture des inscriptions
|
|
(laisser vide pour autoriser tout le temps)""",
|
|
render_kw={
|
|
"id": "date_debut_inscriptions",
|
|
},
|
|
)
|
|
date_fin_inscriptions = DateDMYField(
|
|
"Date de fin des inscriptions",
|
|
render_kw={
|
|
"id": "date_fin_inscriptions",
|
|
},
|
|
)
|
|
image = FileField(
|
|
"Image", validators=[Optional()], description="Image illustrant cette formation"
|
|
)
|
|
campus = StringField(
|
|
"Campus", validators=[Optional()], description="ex: Villetaneuse"
|
|
)
|
|
salle = StringField("Salle", validators=[Optional()], description="ex: salle 123")
|
|
dispositif = SelectField(
|
|
"Dispositif",
|
|
choices=FORMSEMESTRE_DISPOSITIFS.items(),
|
|
coerce=int,
|
|
description="modalité de formation",
|
|
validators=[AnyOf(FORMSEMESTRE_DISPOSITIFS.keys())],
|
|
)
|
|
modalites_mcc = TextAreaField(
|
|
"Modalités de contrôle des connaissances",
|
|
validators=[Optional()],
|
|
description="texte libre",
|
|
)
|
|
photo_ens = FileField(
|
|
"Photo de l'enseignant(e)",
|
|
validators=[Optional()],
|
|
description="ou autre illustration",
|
|
)
|
|
public = StringField(
|
|
"Public visé", validators=[Optional()], description="ex: débutants"
|
|
)
|
|
prerequis = TextAreaField(
|
|
"Prérequis", validators=[Optional()], description="texte libre"
|
|
)
|
|
responsable = StringField(
|
|
"Responsable",
|
|
validators=[Optional()],
|
|
description="""nom de l'enseignant de la formation, ou personne
|
|
chargée de l'organisation du semestre.""",
|
|
)
|
|
|
|
wip = BooleanField(
|
|
"Travaux en cours",
|
|
description="work in progress: si coché, affichera juste le titre du semestre",
|
|
)
|
|
|
|
submit = SubmitField("Enregistrer")
|
|
cancel = SubmitField("Annuler", render_kw={"formnovalidate": True})
|