Skip to content
Snippets Groups Projects
Commit ec766d63 authored by Sarra Ouelhadj's avatar Sarra Ouelhadj
Browse files

add validation script to validate template

parent 0aa6efe4
No related branches found
No related tags found
No related merge requests found
from flask import Flask
app = Flask(__name__)
app.config.from_object("config.ProductionConfig")
app.config.from_object("config.DevelopmentConfig")
from YKWIM import views
\ No newline at end of file
......@@ -22,7 +22,7 @@ def generateJSON(file, path=app.config["UPLOAD_FOLDER"]):
#attributes sheet parsing
list=[]
classe=book["Attributs"][1][0] #à valider
classe=book["Attributs"][1][0]
index= list_of_all_values.index(classe)
for attr in filter(lambda value:True if value[1]!='' else False,book["Attributs"][1:]):
if (classe != attr[0] and attr[0]!=''):
......@@ -66,7 +66,7 @@ def generateJSON(file, path=app.config["UPLOAD_FOLDER"]):
#enumeration values sheet parsing
list=[]
enumeration=book["Valeurs d'énumération"][1][0] #à valider
enumeration=book["Valeurs d'énumération"][1][0]
index= list_of_all_values.index(enumeration)
for enum in filter(lambda value:True if value[1]!='' else False,book["Valeurs d'énumération"][1:]):
if (enumeration != enum[0] and enum[0]!=''):
......
No preview for this file type
No preview for this file type
......@@ -77,16 +77,26 @@
<div class="row py-3">
<button type="submit" class="offset-4 btn btn-primary col-8" aria-disabled="disabled">Convertir</button>
</div>
{% if error_template %}
<div class="row py-3">
<div class="alert alert-warning alert-dismissible fade show" role="alert">
<span>{{error_template}}</span>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
</div>
{% endif %}
</form>
</div>
<!--UML class diagram-->
{% if uml_image %}
<div class="container py-3">
<div class="row justify-content-center">
<p class="col-6 border">remarques</p>
<img src="{{uml_image}}" class="col-6 border" alt="UML class diagram">
<p class="col-6 border">Données RDF</p>
<img src="{{url_for('getDocumentLink',document_link=uml_image)}}" class="col-6 border" alt="UML class diagram">
</div>
</div>
{% endif %}
</div>
<div class="tab-pane" id="pills-config" role="tabpanel" aria-labelledby="pills-config-tab">
......
File added
import pyexcel as p
def validateTemplate(file):
book=p.get_book_dict(file_name=file)
#------------------------
#classes sheet validation
#------------------------
#0. La feuille classe doit contenir au moins une classe
if (book["Classes"][1][0]=='') : return "La feuille classe doit contenir au moins une classe"
#1. Chaque classe doit avoir un lien de référence ou une définition
for cl in filter(lambda value:True if value[0]!='' else False, book["Classes"][1:]):
if (cl[1]=='' and cl[2]==''): return f"La classe {cl[0]} doit avoir un lien de référence ou une définition"
#------------------------
#attributes sheet validation
#------------------------
#0. Le nom de la classe du 1er attribut est obligatoire
if (book["Attributs"][1][0]=='') : return "Le nom de la classe du 1er attribut est obligatoire"
list=[]
classe=book["Attributs"][1][0]
#1. Tous les champs doivent être remplis. Le choix existe uniquement entre lien de référence et définition.
for attr in filter(lambda value:True if value[1]!='' else False,book["Attributs"][1:]):
if (attr[4]==''): return f"L'attribut {attr[1]} doit avoir une source"
if (attr[5]==''): return f"Le champs \"Identifiant\" n'est pas précisé pour l'attribut {attr[1]}"
if (attr[2]=='' and attr[3]==''): return f"L'attribut {attr[1]} doit avoir un lien de référence ou une définition"
#2. Chaque classe doit avoir au minimum un identifiant
if (classe != attr[0] and attr[0]!=''):# si on passe à une autre classe, vérifier que la classe d'avant a un identifiant
if ("oui" not in list) : return f"la classe {classe} n'a pas d'identifiant"
classe=attr[0]
list=[]
list.append(attr[5])
# vérifier l'identifiant de la dernière classe
if ("oui" not in list) : return f"la classe {classe} n'a pas d'identifiant"
#------------------------
#associations sheet validation
#------------------------
#0. Chaque association doit avoir un lien de référence ou une définition
for ass in filter(lambda value:True if value[2]!='' else False,book["Associations"][1:]):
if (ass[3]=='' and ass[4]==''): return f"L'association {ass[2]} doit avoir un lien de référence ou une définition"
#------------------------
#enumerations sheet validation
#------------------------
#0. Chaque énumération doit avoir un lien de référence ou une définition
for enum in filter(lambda value:True if value[0]!='' else False, book["Énumérations"][1:]):
if (enum[1]=='' and enum[2]==''): return f"L'énumération {enum[0]} doit avoir un lien de référence ou une définition"
enum_exit=True #une énumération existe dans le diagramme UML
#------------------------
#enumeration values sheet validation
#------------------------
if enum_exit :
#0. Le nom de l'énumération de la 1ère valeur est obligatoire
if (book["Valeurs d'énumération"][1][0]=='') : return "Le nom de l'énumération de la 1ère valeur est obligatoire"
#1. Chaque valeur d'énumération doit avoir un lien de référence ou une définition
for enum in filter(lambda value:True if value[1]!='' else False,book["Valeurs d'énumération"][1:]):
if (enum[2]=='' and enum[3]==''): return f"La valeur d'énumération {enum[1]} doit avoir un lien de référence ou une définition"
\ No newline at end of file
from YKWIM import app, plantUML2Image as pl
from flask import render_template, request, url_for, send_from_directory, redirect
from YKWIM import app, plantUML2Image as pl, validateTemplate as val
from flask import render_template, request, send_from_directory, flash
from werkzeug.utils import secure_filename
import os
......@@ -9,8 +9,12 @@ def index():
datasetURL=request.form["datasetURL"]
file = request.files["templateFile"]
file.save(os.path.join(app.config['UPLOAD_FOLDER'],secure_filename(file.filename)))
uml_image = pl.plantUML2Image(app.config['UPLOAD_FOLDER']+secure_filename(file.filename),"svg")
return render_template("index.html", uml_image=url_for('getDocumentLink',document_link=uml_image))
error_template = val.validateTemplate(app.config['UPLOAD_FOLDER']+secure_filename(file.filename))
if error_template == None :
uml_image = pl.plantUML2Image(app.config['UPLOAD_FOLDER']+secure_filename(file.filename),"svg")
return render_template("index.html", uml_image=uml_image)
else:
return render_template("index.html", error_template=error_template)
else:
return render_template("index.html")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment