forked from eric.li/EditionPN
Regex type de référentiel à l'import
This commit is contained in:
parent
18478d950b
commit
d40acb8c65
32
app/forms.py
32
app/forms.py
@ -1,10 +1,11 @@
|
|||||||
from flask_wtf import FlaskForm
|
from flask_wtf import FlaskForm
|
||||||
from flask_wtf.file import FileAllowed
|
from flask_wtf.file import FileAllowed
|
||||||
from wtforms import StringField, SubmitField, FileField, TextAreaField, RadioField
|
from wtforms import StringField, SubmitField, FileField, TextAreaField, RadioField
|
||||||
from wtforms.validators import DataRequired, NumberRange, Length, Regexp
|
from wtforms.validators import DataRequired, Regexp
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
|
|
||||||
REPERTOIRE_YAML = "./export/"
|
REPERTOIRE_YAML = "./export/"
|
||||||
|
|
||||||
@ -18,24 +19,24 @@ class Form(FlaskForm):
|
|||||||
importer = SubmitField("Importer")
|
importer = SubmitField("Importer")
|
||||||
|
|
||||||
class PNForm(Form):
|
class PNForm(Form):
|
||||||
file_length = len("PN0")
|
regex = "^PN\d$"
|
||||||
|
|
||||||
code = StringField("Code", validators=[DataRequired(), Length(3,3)])
|
code = StringField("Code", validators=[DataRequired(), Regexp("^PN\d$", message="Le code doit être de la forme PN0.")])
|
||||||
nom = StringField("Nom", validators=[DataRequired()] )
|
nom = StringField("Nom", validators=[DataRequired()] )
|
||||||
diminutif = StringField("Diminutif", validators=[DataRequired()] )
|
diminutif = StringField("Diminutif", validators=[DataRequired()] )
|
||||||
description = TextAreaField("Description", validators=[DataRequired()] )
|
description = TextAreaField("Description", validators=[DataRequired()] )
|
||||||
type = RadioField("Type", choices=[1,2,3], validators=[DataRequired()])
|
type = RadioField("Type", choices=[1,2,3], validators=[DataRequired()])
|
||||||
|
|
||||||
class ACForm(Form):
|
class ACForm(Form):
|
||||||
file_length = len("AC0000.yml")
|
regex = "^AC\d{4}$"
|
||||||
|
|
||||||
code = StringField("Code", validators=[DataRequired(), Length(6,6)])
|
code = StringField("Code", validators=[DataRequired(), Regexp("^AC\d{4}$", message="Le code doit être de la forme AC0000.")])
|
||||||
|
|
||||||
|
|
||||||
class SAEForm(Form):
|
class SAEForm(Form):
|
||||||
file_length = len("SAE00.yml")
|
regex = "^SAE\d{2}$"
|
||||||
|
|
||||||
code = StringField("Code", validators=[DataRequired(), Length(5,5)])
|
code = StringField("Code", validators=[DataRequired(), Regexp("^SAE\d{2}$", message="Le code doit être de la forme SAE00.")])
|
||||||
titre = StringField("Titre", validators=[DataRequired()] )
|
titre = StringField("Titre", validators=[DataRequired()] )
|
||||||
semestre = StringField("Semestre", validators=[DataRequired()] )
|
semestre = StringField("Semestre", validators=[DataRequired()] )
|
||||||
heures_encadrees = StringField("Heures encadrées", validators=[DataRequired()] )
|
heures_encadrees = StringField("Heures encadrées", validators=[DataRequired()] )
|
||||||
@ -50,9 +51,9 @@ class SAEForm(Form):
|
|||||||
|
|
||||||
|
|
||||||
class RessourceForm(Form):
|
class RessourceForm(Form):
|
||||||
file_length = len("R000.yml")
|
regex = "^R\{3}$"
|
||||||
|
|
||||||
code = StringField("Code", validators=[DataRequired(), Length(4,4)])
|
code = StringField("Code", validators=[DataRequired(), Regexp("^R\{3}$", message="Le code doit être de la forme R000.")])
|
||||||
nom = StringField("Nom", validators=[DataRequired()] )
|
nom = StringField("Nom", validators=[DataRequired()] )
|
||||||
semestre = StringField("Semestre", validators=[DataRequired()] )
|
semestre = StringField("Semestre", validators=[DataRequired()] )
|
||||||
heures_formation = StringField("Heures formation", validators=[DataRequired()] )
|
heures_formation = StringField("Heures formation", validators=[DataRequired()] )
|
||||||
@ -66,9 +67,9 @@ class RessourceForm(Form):
|
|||||||
motscles = StringField("Mots clés", validators=[DataRequired()] )
|
motscles = StringField("Mots clés", validators=[DataRequired()] )
|
||||||
|
|
||||||
class CompetenceForm(Form):
|
class CompetenceForm(Form):
|
||||||
file_length = len("RT0.yml")
|
regex = "^RT\d$"
|
||||||
|
|
||||||
code = StringField("Code", validators=[DataRequired(), Length(3,3)])
|
code = StringField("Code", validators=[DataRequired(), Regexp("^RT\d$", message="Le code doit être de la forme RT0.")])
|
||||||
nom = StringField("Nom", validators=[DataRequired()] )
|
nom = StringField("Nom", validators=[DataRequired()] )
|
||||||
diminutif = StringField("Diminutif", validators=[DataRequired()] )
|
diminutif = StringField("Diminutif", validators=[DataRequired()] )
|
||||||
description = TextAreaField("Description", validators=[DataRequired()] )
|
description = TextAreaField("Description", validators=[DataRequired()] )
|
||||||
@ -78,7 +79,14 @@ class CompetenceForm(Form):
|
|||||||
|
|
||||||
def form_import(form):
|
def form_import(form):
|
||||||
""" Si import a été appuyé et qu'il n'y a pas d'erreur d'import => importe le fichier yaml"""
|
""" Si import a été appuyé et qu'il n'y a pas d'erreur d'import => importe le fichier yaml"""
|
||||||
if form.importer.data and len(form.fichier.errors) == 0 and len(form.fichier.data.filename) == form.file_length:
|
# Bouton import appuyé et fichier yaml selectionné
|
||||||
|
if form.importer.data and len(form.fichier.errors) == 0:
|
||||||
|
if form.fichier.data.filename == "":
|
||||||
|
form.fichier.errors.append("Aucun fichier selectioné.")
|
||||||
|
return form
|
||||||
|
if re.match(form.regex, form.fichier.data.filename[:-4]) == None:
|
||||||
|
form.fichier.errors.append("Mauvais type de référentiel!")
|
||||||
|
return form
|
||||||
fichier_Yaml = yaml.safe_load(form.fichier.data.read())
|
fichier_Yaml = yaml.safe_load(form.fichier.data.read())
|
||||||
for categorie, valeur in fichier_Yaml.items():
|
for categorie, valeur in fichier_Yaml.items():
|
||||||
form[categorie].data = valeur
|
form[categorie].data = valeur
|
||||||
|
Loading…
Reference in New Issue
Block a user