Créez un environnement virtuel.
Installez-y flask
avec la commande :
pip install flask
Téléchargez la base de données ensembl_hs63_simple.sqlite, dont le schéma relationnel vous est donné ci-dessous :
Cette base est un sous-ensemble de la base de données Ensembl. Il s'agit d'une base de données d’annotations de génomes contenant des informations sur les gènes, leurs transcrits, ainsi que de nombreux autres renseignements comme la fonction des gènes ou encore les comparaisons entre plusieurs génomes.
Créez une application Flask répondant aux URLs suivantes :
/
/Genes
Une page contenant les 1000 premièrs gènes de la table Genes, affichant pour chacun son identifiant (Ensemble_Gene_ID) et son Associated_Gene_Name.
L'identifiant doit être un lien vers la fiche individuelle de ce gène
(cf. /Genes/view/
ci-dessous).
/Genes/view/<id>
La fiche individuelle du gène ayant l'identifiant id
.
Elle doit contenir toutes les informations données par la table Genes, ainsi que la liste de ses transcrits (accompagnés de leurs positions de départ et de fin).
/Genes/del/<id>
Cette URL ne doit accepter que les requêtes POST.
Dans ce cas, le gène ayant l'identifiant id
sera supprimé de la table Genes.
Ajoutez à chaque ligne de la liste des gènes un bouton supprimant le gène concerné (il faut pour cela un formulaire dont l'action est l'URL appropriée, et contenant uniquement le bouton).
/Genes/new
Un GET sur cette URL doit afficher un formulaire de saisie, permettant de décrire un nouveau gène.
Un POST sur cette URL doit accepter les données du formulaire ci-dessus, vérifier leur validité, et créer l'entrée correspondante dans la table Genes, puis rediriger vers la listes des gènes. En cas de problème, un code d'erreur et un message appropriés doivent être retourné.
Ajoutez au dessus de la liste des gènes un lien vers ce formulaire.
Utilisez les templates pour avoir une mise en page homogène sur toutes les pages du site, avec une feuille de style définie comme une ressource statique.
Vous pouvez augmenter votre site avec les URLs suivantes.
/Genes/edit/<i>
/Transcripts/...