11"""
2- Fichier principal de l'application web Marmita .
3- Ce fichier contient toutes les routes de l'application web.
4- Il permet de lancer le serveur en local .
2+ Main file of the Marmita web application .
3+ This file contains all the routes for the web application .
4+ It is used to launch the server locally .
55
6- Copyright Marmit@ – HowlingByte © 2023
7- Licence Mozilla Public License 2.0
6+ Copyright Marmit@ - HowlingByte © 2023
7+ Mozilla Public License 2.0
88"""
99
1010__author__ = "HowlingByte"
1313
1414import sqlite3
1515from bottle import request , route , run , view , static_file , error , HTTPResponse , redirect
16-
1716# from bottle import get, post, request, route, run, view, static_file, response, error, redirect
1817
1918DATABASE = "database/marmita.db"
2019
2120
2221class Famille : # pylint: disable=R0903
2322 """
24- Classe qui représente une famille de recettes. Une famille possède les attributs suivants :
25- - Id: l'identifiant de la famille dans la base de données
26- - nom: le nom de la famille
27- - image: l' image de la famille
23+ Class representing a family of recipes. A family has the following attributes :
24+ - famille_id: the family identifier in the database
25+ - nom: the name of the family
26+ - image: the image of the family
2827 """
2928
3029 def __init__ (self : object , famille_id : int , nom : str , image : str ):
@@ -35,11 +34,11 @@ def __init__(self: object, famille_id: int, nom: str, image: str):
3534
3635class Ingredient : # pylint: disable=R0903
3736 """
38- Classe qui représente un ingrédient. Un ingrédient possède les attributs suivants :
39- - Id: l'identifiant de l'ingrédient dans la base de données
40- - nom: le nom de l'ingrédient
41- - quantite: la quantité de l'ingrédient
42- - unite: l'unité de mesure de la quantité de l'ingrédient
37+ Class representing an ingredient. An ingredient has the following attributes :
38+ - ingredient_id: the identifier of the ingredient in the database
39+ - nom: the name of the ingredient
40+ - quantite: the quantity of the ingredient
41+ - unite: the unit of measurement for the quantity of the ingredient
4342 """
4443
4544 def __init__ (
@@ -53,9 +52,9 @@ def __init__(
5352
5453class Etape : # pylint: disable=R0903
5554 """
56- Classe qui re présente une étape de recette. Une étape possède les attributs suivants :
57- - num: le numéro de l'étape dans la recette
58- - texte: le texte de l'étape
55+ Class that presents a recipe step. A step has the following attributes :
56+ - num: the number of the step in the recipe
57+ - texte: the text of the step
5958 """
6059
6160 def __init__ (self : object , num : int , texte : str ):
@@ -65,17 +64,16 @@ def __init__(self: object, num: int, texte: str):
6564
6665class Recette : # pylint: disable=R0903, R0902
6766 """
68- Classe qui représente une recette. Une recette possède les attributs suivants:
69- - Id: l'identifiant de la recette dans la base de données
70- - nom: le nom de la recette
71- - image: l'image de la recette
72- - preparation: le temps de préparation de la recette
73- - cuisson: le temps de cuisson de la recette
74- - nombre_de_personnes: le nombre de personnes pour lesquelles la recette est prévue
75- - difficulte: la difficulté de la recette
76- - ingredients: la liste des ingrédients de la recette
77- - etapes: la liste des étapes de la recette
78- - famille: la famille de la recette
67+ Class representing a recipe. A recipe has the following attributes:
68+ - recette_id: the recipe identifier in the database
69+ - nom: the name of the recipe
70+ - image: the image of the recipe
71+ - cuisson: the recipe cooking time
72+ - nbpers: the number of people for whom the recipe is intended
73+ - diff: the difficulty of the recipe
74+ - ingredients: the list of ingredients in the recipe
75+ - etapes: the list of steps in the recipe
76+ - famille_recette: the recipe family
7977 """
8078
8179 def __init__ ( # pylint: disable=R0913
@@ -103,8 +101,8 @@ def __init__( # pylint: disable=R0913
103101
104102def open_sql (database = DATABASE ):
105103 """
106- Fonction qui permet d'ouvrir une connexion à la base de données .
107- :return: le connecteur et le curseur de la base de données
104+ Function used to open a connection to the database .
105+ :return: the connector and the database cursor
108106 """
109107 conn = sqlite3 .connect (database )
110108 cur = conn .cursor ()
@@ -113,8 +111,8 @@ def open_sql(database=DATABASE):
113111
114112def close_sql (cur ):
115113 """
116- Fonction qui permet de fermer une connexion à la base de données .
117- :param cur: le curseur de la base de données
114+ Function used to close a connection to the database .
115+ :param cur: the database cursor
118116 """
119117 cur .close ()
120118
@@ -123,7 +121,7 @@ def close_sql(cur):
123121@view ("template/accueil.tpl" )
124122def accueil ():
125123 """
126- Fonction qui permet d'afficher la page d'accueil .
124+ Function used to display the home page .
127125 """
128126 _ , cur = open_sql ()
129127 cur .execute ("SELECT id, nom, image FROM famille" )
@@ -145,14 +143,14 @@ def accueil():
145143@view ("template/famille.tpl" )
146144def famille ():
147145 """
148- Fonction qui permet d'afficher la page d'une famille .
146+ Function used to display a family page .
149147 """
150148 try :
151149 id_request = request .query .id # type: ignore # pylint: disable=no-member
152150
153151 conn , cur = open_sql ()
154152
155- # Requête SQL pour récupérer les recettes d'une famille
153+ # SQL query to retrieve a family's recipes
156154 cur .execute ("SELECT * FROM recettes WHERE id_famille = ?" , (id_request ,))
157155 liste_recettes = []
158156 for row in cur :
@@ -187,17 +185,16 @@ def famille():
187185 return None
188186
189187
190- # Affichage d'une recette
191188@route ("/recettes/<id_request>" )
192189@view ("template/recette.tpl" )
193190def recettes (id_request ): # pylint: disable=R0914
194191 """
195- Fonction qui permet d'afficher la page d'une recette .
192+ Function used to display a recipe page .
196193 """
197194 try :
198195 conn , cur = open_sql ()
199196
200- # Requête 1 (attributs de la table Recettes )
197+ # Query 1 (attributes from the Recipes table )
201198 cur .execute ("SELECT * FROM Recettes WHERE ID=?" , (id_request ,))
202199 infos_recette = cur .fetchone ()
203200 conn .commit ()
@@ -210,12 +207,12 @@ def recettes(id_request): # pylint: disable=R0914
210207 recette_difficulte = infos_recette [5 ]
211208 recette_famille = infos_recette [6 ]
212209
213- # Requête pour récupérer le nom de la famille
210+ # Query to retrieve the family name
214211 cur .execute ("SELECT Nom FROM Famille WHERE ID=?" , (recette_famille ,))
215212 nom_famille = cur .fetchone ()
216213 conn .commit ()
217214
218- # Requête pour récupérer les ingrédients de la recette
215+ # Query to retrieve recipe ingredients
219216 cur .execute (
220217 "SELECT Ingredients.ID, Ingredients.Nom, Quantite, Unite \
221218 FROM IngredientsDeRecette \
@@ -237,7 +234,7 @@ def recettes(id_request): # pylint: disable=R0914
237234 liste_ingredients .append (ingredient )
238235 conn .commit ()
239236
240- # Requête pour récupérer les étapes de la recette
237+ # Query to retrieve recipe steps
241238 cur .execute (
242239 "SELECT Numero, Descriptif FROM EtapesDeRecette \
243240 WHERE ID_recettes=?" ,
@@ -277,9 +274,9 @@ def recettes(id_request): # pylint: disable=R0914
277274@view ("template/chercheRecettes.tpl" )
278275def rechercher ():
279276 """
280- Fonction qui permet d'afficher la page de recherche de recettes .
277+ Function used to display the recipe search page .
281278 """
282- # Récupérer les données du formulaire
279+ # Retrieve data from the form
283280 recette_recherchee = request .forms .getunicode ("recette" ) # type: ignore # pylint: disable=no-member
284281
285282 if recette_recherchee != "" :
@@ -299,7 +296,7 @@ def rechercher():
299296
300297 _ , cur = open_sql ()
301298
302- # Requête SQL pour récupérer les recettes d'une famille
299+ # SQL query to retrieve a family's recipes
303300 cur .execute ("SELECT * FROM recettes WHERE nom " + condition )
304301 liste_recettes = []
305302 for row in cur :
@@ -328,7 +325,7 @@ def rechercher():
328325@view ("static/html/contact.html" )
329326def contact ():
330327 """
331- Fonction qui permet d'afficher la page de contact.
328+ Function used to display the contact page .
332329 """
333330 return {}
334331
@@ -337,7 +334,7 @@ def contact():
337334@view ("static/html/mentions.html" )
338335def mentions ():
339336 """
340- Fonction qui permet d'afficher la page des mentions légales .
337+ Function used to display the legal information page .
341338 """
342339 return {}
343340
@@ -346,31 +343,31 @@ def mentions():
346343@view ("static/html/404.html" )
347344def on_error404 (_ ):
348345 """
349- Fonction qui permet d'afficher la page d'erreur 404 .
346+ Function used to display the 404 error page .
350347 """
351348 return {}
352349
353350
354351@route ("/images/<filepath:path>" )
355352def server_static_image (filepath ):
356353 """
357- Fonction qui permet d'afficher les images.
354+ Function used to display images.
358355 """
359356 return static_file (filepath , root = "static/images/" )
360357
361358
362359@route ("/fonts/<filepath:path>" )
363360def server_static_fonts (filepath ):
364361 """
365- Fonction qui permet d'afficher les fonts.
362+ Function used to display fonts.
366363 """
367364 return static_file (filepath , root = "static/fonts/" )
368365
369366
370367@route ("/css/<filepath:path>" )
371368def server_static_css (filepath ):
372369 """
373- Fonction qui permet d'afficher les css.
370+ Function used to display css files .
374371 """
375372 return static_file (filepath , root = "static/css/" )
376373
0 commit comments