systeme_notification/ # Projet Django ├── manage.py ├── systeme_notification/ # Répertoire du projet │ ├── init.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py └── notifications/ # Application principale ├── init.py ├── admin.py # Administration Django ├── apps.py ├── models.py # Modèles Django (User, Notification, etc.) ├── core.py # Classes métiers, mixins, décorateurs, métaclasses ├── descriptors.py # Descripteurs (Email, Phone, Priority, TimeWindow) ├── decorators.py # Décorateurs de classes et méthodes ├── metaclasses.py # Métaclasses (NotificationMeta, ChannelMeta, TemplateMeta, ConfigMeta) ├── serializers.py # Serializers DRF pour API ├── api.py # ViewSets / APIViews pour DRF ├── urls.py # Routes API └── tests.py # Tests unitaires pour tous les concepts <<<<<<< Updated upstream
| URL | Description | Accès |
|---|---|---|
/dashboard/ |
Dashboard utilisateur | Utilisateur connecté |
/dashboard/admin/ |
Dashboard administrateur | Superuser |
/api/notifications/ |
API notifications (REST) | Token/Session |
/api/stats/ |
API statistiques | Token/Session |
/api/evacuation/{type}/ |
Déclencher évacuation | Token/Session |
/admin/ |
Interface admin Django | Superuser |
git clone <repository-url>
cd system_notification_campuspip install -r requirements.txt# Windows
install_dashboards.bat
# Ou manuellement
python create_dirs.pycd systeme_notification
python manage.py migratepython manage.py createsuperuserpython create_demo_data.pypython manage.py runserver- QUICKSTART.md - Guide de démarrage rapide
- DASHBOARD_README.md - Documentation complète des dashboards
- SETUP_SUMMARY.md - Résumé de l'installation
- ✅ Notifications personnalisées par utilisateur
- ✅ Priorités (faible, moyenne, haute, urgente) validées via des descripteurs
- ✅ Plages horaires configurables grâce aux descripteurs de fenêtre temporelle
- ✅ Système d'évacuation d'urgence (incendie, inondation, épidémie, sécurité)
- ✅ Décorateurs de classes pour le suivi des performances, la validation automatique des configurations, l'enregistrement global des notificateurs et la mise en place d'un circuit‑breaker
- ✅ Métaclasse pour générer automatiquement des méthodes de validation, des descriptions et l'enregistrement des nouveaux types de notification
- ✅ Dashboard utilisateur avec notifications personnelles
- ✅ Dashboard admin avec statistiques globales
- ✅ Graphiques interactifs (Chart.js)
- ✅ Actualisation en temps réel
- ✅ CRUD complet pour notifications
- ✅ Endpoints d'évacuation d'urgence
- ✅ Statistiques en temps réel
- 🔧 Décorateurs de classes et de méthodes : les classes représentant les urgences (Incendie, Inondation, Épidémie, Sécurité) sont enrichies par des décorateurs qui instrumentent leurs méthodes pour mesurer les temps d'exécution, valider la configuration à l'initialisation, les inscrire automatiquement dans un registre global et mettre en place un circuit‑breaker en cas d'erreur.
- 🧩 Descripteurs personnalisés : les attributs utilisateurs (email personnel, téléphone, priorité, fenêtre temporelle) utilisent des descripteurs dédiés qui valident et normalisent les valeurs assignées, améliorant ainsi la fiabilité et la maintenabilité du code.
- 🧠 Métaclasses configurables : une métaclasse
NotificationMetaajoute automatiquement des méthodes de validation des champs requis, une description et un identifiant de type aux nouvelles classes de notification, et les enregistre dans un registre accessible à tout le système.
- Backend: Django 5.2, Django REST Framework
- Base de données: SQLite
- Frontend: HTML5, CSS3, JavaScript, Chart.js
- API: REST API avec DRF
- Design: Responsive, moderne, gradients
cd systeme_notification
python create_demo_data.pyCela créera:
- 4 utilisateurs (alice, bob, charlie, david)
- 13 notifications variées
- Mot de passe:
demo123
-
Dashboard Utilisateur: http://localhost:8000/dashboard/
- Connectez-vous avec un utilisateur (ex: alice/demo123)
-
Dashboard Admin: http://localhost:8000/dashboard/admin/
- Connectez-vous avec un superuser
curl http://localhost:8000/api/stats/curl -X POST http://localhost:8000/api/notifications/ \
-H "Content-Type: application/json" \
-d '{
"message": "Test de notification",
"destinataire": 1,
"priority": "haute"
}'curl -X POST http://localhost:8000/api/evacuation/incendie/- Système de notifications de base
- API REST complète
- Dashboard utilisateur
- Dashboard administrateur
- Graphiques et statistiques
- Notifications push en temps réel (WebSockets)
- Application mobile
- Exportation de rapports (PDF/Excel)
- Système de filtres avancés
- Thème sombre (dark mode)
Ce projet est créé pour un usage éducatif.
Les contributions sont les bienvenues! N'hésitez pas à ouvrir une issue ou une pull request.
Version: 1.0
Framework: Django 5.2 + DRF
Auteur: Système de Notifications Campus
Stashed changes