Ce projet est une application web Flask qui permet de gérer et consulter des données sur les violations (contraventions) commises par des établissements. L'application offre des fonctionnalités pour rechercher des contraventions, soumettre des plaintes, et gérer des demandes d'inspection. Les données sont stockées dans une base de données SQLite et synchronisées quotidiennement à partir d'un fichier CSV fourni par la ville de Montréal.
-
Recherche de Contraventions:
- Recherche par nom d'établissement, propriétaire, ou rue.
- Recherche rapide par plage de dates avec AJAX.
-
API RESTful:
- Obtenir les contrevenants entre deux dates (
/contrevenants). - Obtenir les infractions pour un établissement spécifique (
/infractions). - Obtenir la liste des établissements ayant commis des infractions (
/etablissements-infraction).
- Obtenir les contrevenants entre deux dates (
-
Soumission de Plaintes:
- Formulaire pour soumettre une plainte avec validation des champs.
- Confirmation de la plainte avant enregistrement.
-
Demandes d'Inspection:
- API pour créer une demande d'inspection avec validation JSON.
- Suppression d'une demande d'inspection via une API RESTful.
-
Synchronisation Automatique:
- Les données sont synchronisées quotidiennement à minuit à partir du fichier CSV de la ville de Montréal.
-
Gestion des Erreurs:
- Pages personnalisées pour les erreurs 404 et 500.
- Python 3.x
- Flask
- SQLite
- Bibliothèques Python nécessaires :
apscheduler,jsonschema,requests
-
Clonez le dépôt :
git clone https://github.com/votre-repo/contraventions.git cd contraventions -
Installez les dépendances :
pip install -r requirements.txt
-
Configurez la base de données :
- Assurez-vous que le fichier
violations.dbexiste ou exécutez la commande suivante pour charger les données initiales :python data_processor.py
- Assurez-vous que le fichier
-
Démarrez l'application :
python app.py
-
Accédez à l'application dans votre navigateur :
http://localhost:5000
- Page d'accueil : Recherchez des contraventions par établissement, propriétaire, ou rue.
- API : Utilisez les endpoints RESTful pour interagir avec les données.
- Soumission de Plaintes : Remplissez le formulaire de plainte et confirmez les détails.
- Demandes d'Inspection : Utilisez les endpoints
/demande-inspectionpour créer ou supprimer des demandes.
This project is a Flask-based web application designed to manage and query data on violations (infractions) committed by establishments. The application provides features for searching violations, submitting complaints, and managing inspection requests. Data is stored in an SQLite database and synchronized daily from a CSV file provided by the city of Montreal.
-
Violation Search:
- Search by establishment name, owner, or street.
- Quick search by date range using AJAX.
-
RESTful API:
- Get offenders between two dates (
/contrevenants). - Get infractions for a specific establishment (
/infractions). - Get a list of establishments with infractions (
/etablissements-infraction).
- Get offenders between two dates (
-
Complaint Submission:
- Form to submit a complaint with field validation.
- Confirmation page before saving the complaint.
-
Inspection Requests:
- API to create an inspection request with JSON validation.
- Delete an inspection request via a RESTful API.
-
Automatic Synchronization:
- Data is synchronized daily at midnight from the Montreal city CSV file.
-
Error Handling:
- Custom pages for 404 and 500 errors.
- Python 3.x
- Flask
- SQLite
- Required Python libraries:
apscheduler,jsonschema,requests
-
Clone the repository:
git clone https://github.com/your-repo/violations.git cd violations -
Install dependencies:
pip install -r requirements.txt
-
Set up the database:
- Ensure the
violations.dbfile exists or run the following command to load initial data:python data_processor.py
- Ensure the
-
Start the application:
python app.py
-
Access the application in your browser:
http://localhost:5000
- Homepage: Search for violations by establishment, owner, or street.
- API: Use the RESTful endpoints to interact with the data.
- Complaint Submission: Fill out the complaint form and confirm the details.
- Inspection Requests: Use the
/demande-inspectionendpoints to create or delete requests.
- Description: Returns a list of offenders with their number of violations between two dates.
- Parameters:
du: Start date (ISO 8601 format, e.g.,2023-01-01).au: End date (ISO 8601 format, e.g.,2023-12-31).
- Response:
[ {"etablissement": "Restaurant A", "nb_contraventions": 5}, {"etablissement": "Restaurant B", "nb_contraventions": 3} ]
- Description: Returns infractions for a specific establishment.
- Parameters:
etablissement: Name of the establishment.
- Response:
[ { "date": "2023-01-15", "description": "Hygiene violation", "adresse": "123 Main St", "montant": 500, "statut": "Resolved" } ]
- Description: Creates an inspection request.
- Request Body:
{ "nom_etablissement": "Restaurant C", "adresse": "456 Elm St", "ville": "Montreal", "date_visite": "2023-10-01", "nom_client": "John Doe", "description_probleme": "Food safety issue" } - Response:
{ "message": "Inspection request successfully registered.", "id": 1 }
- Description: Deletes an inspection request by ID.
- Response:
{ "message": "Inspection request with ID 1 successfully deleted." }
If you'd like to contribute to this project, please follow these steps:
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Submit a pull request with a detailed description of your changes.
This project is licensed under the MIT License. See the LICENSE file for more details.