# Solution pour le stockage des fichiers dans static/uploads/

## Problème
Les fichiers uploadés via le modèle `Fichier` étaient sauvegardés dans `media/static/uploads/` 
au lieu de `static/uploads/`, car Django ajoute automatiquement `MEDIA_ROOT` devant le chemin.

## Solution implémentée
Création d'un **custom storage** qui sauvegarde directement dans `static/uploads/` sans 
utiliser `MEDIA_ROOT`.

## Fichiers modifiés/créés

### 1. Nouveau storage personnalisé
**Fichier:** `core/storage/backends.py`
- Storage qui pointe vers le dossier `static/` au lieu de `media/`
- Génère automatiquement les URLs avec `/static/` comme base

### 2. Modèle Fichier mis à jour
**Fichier:** `core/models.py`
- Import du `StaticStorage`
- Modification du champ `f_fichier` pour utiliser le storage personnalisé

```python
f_fichier = models.FileField("Fichier", upload_to='uploads/', storage=StaticStorage())
```

## Résultat
- ✅ Les nouveaux fichiers uploadés iront dans `static/uploads/`
- ✅ Les URLs générées seront `/static/uploads/nom_fichier`
- ✅ Compatible avec vos liens historiques dans les articles
- ✅ Pas besoin de modifier les liens existants

## Migration

### Si Django n'est pas installé localement
Vous devrez faire la migration sur votre serveur de production ou dans votre environnement 
avec Django installé :

```bash
python3 manage.py makemigrations core
python3 manage.py migrate core
```

### Si vous utilisez Docker
```bash
docker-compose exec web python manage.py makemigrations core
docker-compose exec web python manage.py migrate core
```

## Test
Pour tester que le storage fonctionne, exécutez :
```bash
python3 test_storage.py
```

## Notes importantes
1. Les **anciens fichiers** dans `media/static/uploads/` resteront là où ils sont
2. Les **nouveaux fichiers** iront directement dans `static/uploads/`
3. Vous pourrez déplacer manuellement les anciens fichiers si nécessaire :
   ```bash
   mv media/static/uploads/* static/uploads/
   ```

## Avantages de cette solution
- ✅ Préserve les liens historiques
- ✅ Solution propre avec un storage personnalisé
- ✅ Facile à maintenir
- ✅ Compatible avec collectstatic (les fichiers restent dans static/)

## Alternative (si besoin)
Si vous voulez que Django gère les fichiers via MEDIA au lieu de STATIC (recommandé pour 
la production), vous devrez :
1. Utiliser le MEDIA_ROOT standard
2. Créer un script de remplacement dans vos articles pour changer `/static/uploads/` 
   en `/media/uploads/`
