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 from flask import Flask
app = Flask(__name__) app = Flask(__name__)
app.config.from_object("config.ProductionConfig") app.config.from_object("config.DevelopmentConfig")
from YKWIM import views from YKWIM import views
\ No newline at end of file
...@@ -22,7 +22,7 @@ def generateJSON(file, path=app.config["UPLOAD_FOLDER"]): ...@@ -22,7 +22,7 @@ def generateJSON(file, path=app.config["UPLOAD_FOLDER"]):
#attributes sheet parsing #attributes sheet parsing
list=[] list=[]
classe=book["Attributs"][1][0] #à valider classe=book["Attributs"][1][0]
index= list_of_all_values.index(classe) index= list_of_all_values.index(classe)
for attr in filter(lambda value:True if value[1]!='' else False,book["Attributs"][1:]): for attr in filter(lambda value:True if value[1]!='' else False,book["Attributs"][1:]):
if (classe != attr[0] and attr[0]!=''): if (classe != attr[0] and attr[0]!=''):
...@@ -66,7 +66,7 @@ def generateJSON(file, path=app.config["UPLOAD_FOLDER"]): ...@@ -66,7 +66,7 @@ def generateJSON(file, path=app.config["UPLOAD_FOLDER"]):
#enumeration values sheet parsing #enumeration values sheet parsing
list=[] 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) 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:]): 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]!=''): if (enumeration != enum[0] and enum[0]!=''):
......
No preview for this file type
No preview for this file type
...@@ -77,16 +77,26 @@ ...@@ -77,16 +77,26 @@
<div class="row py-3"> <div class="row py-3">
<button type="submit" class="offset-4 btn btn-primary col-8" aria-disabled="disabled">Convertir</button> <button type="submit" class="offset-4 btn btn-primary col-8" aria-disabled="disabled">Convertir</button>
</div> </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> </form>
</div> </div>
<!--UML class diagram--> <!--UML class diagram-->
{% if uml_image %}
<div class="container py-3"> <div class="container py-3">
<div class="row justify-content-center"> <div class="row justify-content-center">
<p class="col-6 border">remarques</p> <p class="col-6 border">Données RDF</p>
<img src="{{uml_image}}" class="col-6 border" alt="UML class diagram"> <img src="{{url_for('getDocumentLink',document_link=uml_image)}}" class="col-6 border" alt="UML class diagram">
</div> </div>
</div> </div>
{% endif %}
</div> </div>
<div class="tab-pane" id="pills-config" role="tabpanel" aria-labelledby="pills-config-tab"> <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 YKWIM import app, plantUML2Image as pl, validateTemplate as val
from flask import render_template, request, url_for, send_from_directory, redirect from flask import render_template, request, send_from_directory, flash
from werkzeug.utils import secure_filename from werkzeug.utils import secure_filename
import os import os
...@@ -9,8 +9,12 @@ def index(): ...@@ -9,8 +9,12 @@ def index():
datasetURL=request.form["datasetURL"] datasetURL=request.form["datasetURL"]
file = request.files["templateFile"] file = request.files["templateFile"]
file.save(os.path.join(app.config['UPLOAD_FOLDER'],secure_filename(file.filename))) 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") error_template = val.validateTemplate(app.config['UPLOAD_FOLDER']+secure_filename(file.filename))
return render_template("index.html", uml_image=url_for('getDocumentLink',document_link=uml_image)) 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: else:
return render_template("index.html") 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