Interface pour le projet Auction Catalog Segmentation (AuCaSe).
L'interface requiert flask, flask-sqlalchemy, python-dateutil et mysqlclient. Il est possible d'installer les quatre en installant pipenv et lançant pipenv install.
Il faut également une base de donnée MySQL avec le contenu du dump présent dans la repo sous aucase.sql.zip. Une fois les données chargées, il faut encore éditer le fichier app/config.py avec les identifiants d'un utilisateur ayant les droits SELECT sur la base.
L'interface est une application Flask, elle se lance avec la commande flask run -p PORT ou pipenv run flask run -p PORT si on utilise pipenv.
.
├── app
│ ├── config.py
│ ├── __init__.py
│ ├── main
│ │ ├── __init__.py
│ │ ├── routes.py
│ │ └── search.py
│ ├── models.py
│ ├── static
│ │ ├── css
│ │ │ └── style.css
│ │ └── js
│ │ ├── aucase.js
│ │ └── jquery.simplePagination.js
│ └── templates
│ ├── index.html
│ ├── layout.html
│ ├── _object.html
│ ├── object-results.html
│ └── search.html
├── aucase.sql.gz
├── Pipfile
├── Pipfile.lock
├── README.md
└── shell.py- Les fichiers
PipfileetPipfile.lockcontiennent les dépendences pour pipenv. - Le fichier
aucase.sql.zipcontient un dump compressé de la base de donnée. - Les fichiers
shell.py,app/__init__.pyetapp/main/__init__.pysont des fichiers d'initialisation standard de Flask. - Le fichier
app/config.pycontient la configuration de l'application Flask, avec entre autre les informations de la base MySQL à compléter. Pour les autres options, se référer à la documentation de Flask. - Le fichier
app/models.pycontient la description du modèle de donnée présent dans la base MySQL pour pouvoir interopérer avec Flask via sqlalchemy. - Le fichier
app/main/routes.pycontient les "routes" vers les différentes pages de l'application, à savoir la homepage avec la description du projet, la page/searchavec l'interface de recherche et la page qui ne sert qu'à faire des requête et qui contient l'API/api, cette dernière est décrite plus en détail dans la section suivante. - Le fichier
app/main/search.pycontient la logique pour effectuer une recherche dans la base de donnée avec du plein texte, une période temporelle et des acteurs. - Les fichiers dans
app/templatescontiennent du HTML qui est utilisé par l'application. Le framework de CSS utilisé est Bootstrap 4.- Le fichier
app/templates/layout.htmlest le template de base, il contient la barre de navigation. - Les fichiers
app/templates/object-results.htmletapp/templates/_object.htmlsont deux fichiers qui sont utilisé directement par Flask pour générer le HTML nécessaire qui est donnée par l'API et qui sert à afficher les résultats. - Le fichier
app/templates/index.htmlqui contient la homepage et la description du projet. - Le fichier
app/templates/search.htmlqui contient l'interface de recherche avec les différents champs ainsi que les différents fichiers javascript nécessaires au bon fonctionnement de l'application (jquery,popper,bootstrap,jquery-throttle-debounce,bootstrap-datepicker,bootstrap-select).
- Le fichier
- Le fichier
app/static/js/jquery.simplePagination.jscontient un script javascript pour de la pagination (pas disponible sur un CDN donc mis directement dans le répertoire). - Le fichier
app/static/js/aucase.jscontient toute la logique javascript de l'application, le fichier est commenté. - Le fichier
app/static/css/style.csscontient les règles CSS propres à l'application.
L'API de recherche est appelée avec une fonction POST qui prend un objet JSON avec les arguments suivants:
sectioncategorysearchqui contient le texte de recherche dans les sections de type catégories.sectionauthorsearchqui contient le texte de recherche dans les sections de type auteurs/écoles.objectsearchqui contient le texte de recherche dans les titres et descriptions des objets.startdatequi contient la date de débutenddatequi contient la date de finactorsqui est une liste des id (de la base de données) des acteurs recherchéssortingorderqui détermine le tri des résultat par défaut (n'importe quelle valeur) ou par date ("date").pagedétermine la page, l'API pagine les résultats par 20 objets.
L'API retourne un objet JSON contenant un attribut results_count qui est le nombre de résultat de la recherche et html qui contient le HTML nécessaire pour montrer les résultats.