Compare commits

...

3 Commits

Author SHA1 Message Date
Éric Li 573482a65e Readme update 2021-05-06 12:13:14 +02:00
Éric Li d40acb8c65 Regex type de référentiel à l'import 2021-05-06 12:08:44 +02:00
Éric Li 18478d950b gitignore 2021-05-06 11:09:07 +02:00
3 changed files with 36 additions and 12 deletions

6
.gitignore vendored Normal file
View File

@ -0,0 +1,6 @@
__pycache__/
migrations/__pycache__/
migrations/versions/__pycache__/
export/
app/__pycache__/

10
README.md Normal file
View File

@ -0,0 +1,10 @@
### Extensions utilisés
pip install flask
pip install flask-wtf
pip install flask-sqlalchemy
pip install flask-migrate
### Pour lancer l'app
flask run

View File

@ -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