Skip to content

Projet de session du cours de Technologies Web Avancées - 8INF349

Notifications You must be signed in to change notification settings

Math1313/8INF349-Projet_Session

Repository files navigation

8INF349-Projet_Session

Projet de session du cours de Technologies Web Avancées - 8INF349 '''

realiser par

  • Mathis Audusseau
  • Mathis Gauthier
  • Zhakael Bondu

🐍 Environment Setup

1. Install Python 3.13

2. Create virtual environment

python -m venv .venv

3. Activate virtual environment

Linux:

source .venv/bin/activate

Windows:

.venv\Scripts\activate.ps1

4. Install requirements

pip install -r requirements.txt

🚀 Execute API

Execute Docker compose

docker-compose up -d --build

Initialiser la base de données

docker-compose exec app flask init-db

URl D'acces

http://127.0.0.1:5000 pour la liste des produits

http://127.0.0.1:5000/index pour notre page HTML de test

Stop Docker compose

docker-compose down  

Lunch Flask tests

python -m pytest -v

Status Codes

Status Code Description
200 OK - Request succeeded
201 Created - Resource created successfully
302 Found - Resource found successfully
400 Bad Request - Invalid parameters
401 Unauthorized - Authentication required
403 Forbidden - Insufficient permissions
404 Not Found - Resource not found
422 Unprocessable Entity - Entity cannot be processed
500 Internal Server Error - Server error

📋 Todo List

🛠️ Configuration Initiale

  • Mettre en place l'environnement Python 3.6+
  • Installer les dépendances requises
    • Flask 1.11+
    • pytest
    • pytest-flask
    • peewee
  • Créer la structure du projet Flask
  • Configurer SQLite3 avec Peewee
  • Implémenter la commande flask init-db

🔄 Service de Récupération des Produits

  • Implémenter la récupération des produits depuis l'API distante
    • Connexion à http://dimensweb.uqac.ca/~jgnault/shops/products/
    • Persistance locale des produits dans SQLite
    • Vérifier que la récupération se fait uniquement au lancement

📦 Gestion des Produits (GET /)

  • Implémenter l'endpoint GET / pour lister les produits
  • Assurer le format JSON correct de la réponse
  • Inclure tous les champs requis (name, id, in_stock, description, price, weight, image)

🛒 Gestion des Commandes

Création de Commande (POST /order)

  • Implémenter la création de commande
  • Valider les champs obligatoires (product_id, quantity)
  • Gérer les erreurs
    • Champs manquants
    • Produit hors stock
    • Quantité invalide
  • Retourner la redirection 302 avec l'ID de commande

Consultation de Commande (GET /order/)

  • Implémenter la consultation de commande
  • Calculer les prix
    • Prix total (total_price)
    • Prix avec taxes selon la province
    • Frais d'expédition selon le poids
  • Retourner toutes les informations de la commande

Mise à jour des Informations Client (PUT /order/)

  • Implémenter la mise à jour des informations client
  • Valider les champs obligatoires
    • Email
    • Informations d'expédition complètes
  • Gérer les erreurs de validation
  • Empêcher la modification des champs protégés

Paiement de Commande

  • Implémenter l'intégration avec le service de paiement distant
  • Valider la carte de crédit
    • Format du numéro
    • Date d'expiration
  • Gérer les réponses du service de paiement
  • Mettre à jour le statut de la commande
  • Empêcher le double paiement

🧪 Tests

  • Tests unitaires
    • Modèles de données
    • Logique métier
  • Tests fonctionnels
    • Endpoints API
    • Scénarios de commande
  • Tests d'intégration
    • Service de produits
    • Service de paiement

📝 Documentation

  • README.md
    • Instructions d'installation
    • Documentation API
    • Exemples d'utilisation
  • Commentaires dans le code
  • Documentation des modèles de données

🔍 Vérification Finale

  • Vérifier toutes les exigences techniques
  • Tester tous les scénarios d'erreur
  • Valider le format des réponses JSON
  • Nettoyer et optimiser le code
  • Vérifier la couverture des tests

Dates importantes :

  • 📅 Première remise : 6 mars 2025 (20%)
  • 📅 Remise finale : 17 avril 2025 (30%)

About

Projet de session du cours de Technologies Web Avancées - 8INF349

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •