# 🚀 Guide de Mise à Jour et Sécurisation - Blog Duhaz

## ✅ Ce qui a été fait

### 1. Sécurisation
- ✅ Création du fichier `.env` pour les secrets
- ✅ Création du fichier `.env.example` comme modèle
- ✅ Mise à jour de `.gitignore` pour protéger les secrets
- ✅ Modification de `settings.py` pour utiliser les variables d'environnement
- ✅ Création de `requirements.txt` avec Django 5.1 LTS

### 2. Améliorations de sécurité ajoutées
- SECRET_KEY maintenant dans .env
- DEBUG configurable par environnement
- ALLOWED_HOSTS configurable
- STATIC_ROOT et MEDIA_ROOT configurés
- Paramètres de sécurité prêts pour la production (commentés)

---

## 📋 Prochaines Étapes

### Étape 1 : Installer les nouvelles dépendances

```bash
# Créer un environnement virtuel (si pas déjà fait)
python3 -m venv venv
source venv/bin/activate  # Sur Mac/Linux

# Installer les dépendances
pip install -r requirements.txt
```

### Étape 2 : Générer une nouvelle SECRET_KEY

La SECRET_KEY actuelle est exposée dans Git. Générez-en une nouvelle :

```bash
python3 -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
```

Copiez la clé générée et remplacez-la dans votre fichier `.env`.

### Étape 3 : Vérifier les migrations

```bash
python manage.py makemigrations
python manage.py migrate
```

### Étape 4 : Tester le site

```bash
python manage.py runserver
```

Visitez http://127.0.0.1:8000/blog/ pour vérifier que tout fonctionne.

---

## ⚠️ Problèmes Potentiels de Compatibilité

### 1. django-trumbowyg
Vérifiez la compatibilité avec Django 5.1. Si problème :
```bash
pip install --upgrade django-trumbowyg
```

### 2. Méthodes dépréciées à corriger

#### Dans `blog/models.py` et `core/models.py`
Supprimer les méthodes `__unicode__` (Python 2) :

```python
# ❌ À SUPPRIMER
def __unicode__(self):
    return self.cb_titre

# ✅ Garder seulement
def __str__(self):
    return '%s' % (self.cb_titre)
```

### 3. django.utils.timezone
Si erreurs avec les dates, importer :
```python
from django.utils import timezone
```

---

## 🔒 Configuration pour la Production

Quand vous déployez en production, modifiez `.env` :

```env
SECRET_KEY=votre-nouvelle-cle-secrete-generee
DEBUG=False
ALLOWED_HOSTS=votre-domaine.com,www.votre-domaine.com
```

Et décommentez dans `settings.py` :
```python
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_BROWSER_XSS_FILTER = True
SECURE_CONTENT_TYPE_NOSNIFF = True
X_FRAME_OPTIONS = 'DENY'
```

---

## 🐛 Si Problèmes

### Erreur "No module named 'dotenv'"
```bash
pip install python-dotenv
```

### Erreur avec les templates
Vérifiez que `DIRS` dans TEMPLATES pointe vers les bons dossiers.

### Erreur 500 en production
- Vérifiez DEBUG=False
- Collectez les fichiers statiques : `python manage.py collectstatic`
- Vérifiez les logs Django

---

## 📝 TODO - Améliorations Futures

- [ ] Migrer vers PostgreSQL (recommandé pour production)
- [ ] Ajouter django-debug-toolbar pour le développement
- [ ] Configurer un serveur WSGI (Gunicorn)
- [ ] Ajouter WhiteNoise pour les fichiers statiques
- [ ] Optimiser les requêtes (select_related, prefetch_related)
- [ ] Ajouter un système de cache (Redis)
- [ ] Corriger les vulnérabilités XSS potentielles
- [ ] Migrer vers Class-Based Views
- [ ] Ajouter des tests unitaires
