ENISE / APPWRITE_README.md
tiffank1802
starting
e1b5e25
# Configuration Appwrite pour Django ENISE Site
## Prérequis
1. **Compte Appwrite Cloud** ou serveur Appwrite auto-hébergé
2. **Python 3.9+**
3. **Django 4.2+**
## Installation
```bash
pip install -r requirements.txt
```
## Configuration
### 1. Variables d'environnement
Créez un fichier `.env` à la racine du projet :
```env
APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1
APPWRITE_PROJECT_ID=your_project_id
APPWRITE_API_KEY=your_api_key
APPWRITE_DATABASE_ID=enise_db
```
### 2. Créer le projet Appwrite
1. Connectez-vous à [Appwrite Cloud](https://cloud.appwrite.io)
2. Créez un nouveau projet : `enise-site`
3. Notez l'**ID du projet**
4. Créez une base de données : `enise_db`
### 3. Créer les collections
Dans le tableau de bord Appwrite, créez ces collections :
| Collection | Attributs |
|------------|-----------|
| **specialites** | nom (string), slug (string), description (string), image_url (url), icone (string), ordre (integer) |
| **actualites** | titre (string), slug (string), contenu (string), image_url (url), date_publication (datetime), est_publie (boolean) |
| **contact** | nom (string), email (email), sujet (string), message (string), date_envoi (datetime), traite (boolean) |
| **partenaires** | nom (string), logo_url (url), url (url), type_partenaire (string) |
| **statistiques** | nom (string), valeur (string), suffixe (string), icone (string), ordre (integer) |
### 4. Configurer les permissions
Pour chaque collection, configurez les permissions :
- **create**: Rôle `any` (ou utilisateur connecté)
- **read**: Rôle `any`
- **update**: Rôle `any`
- **delete**: Rôle `admin`
## Commandes Django
### Créer les collections automatiquement
```bash
python manage.py setup_appwrite
```
### Tester la connexion
```bash
python manage.py sync_appwrite --test
```
### Synchroniser les données locales vers Appwrite
```bash
python manage.py sync_appwrite
```
## API REST Endpoints
Les vues Appwrite sont disponibles à ces URLs :
| Méthode | URL | Description |
|---------|-----|-------------|
| GET | `/api/appwrite/test/` | Tester la connexion |
| POST | `/api/appwrite/documents/` | Créer un document |
| GET | `/api/appwrite/documents/` | Lister les documents |
| GET | `/api/appwrite/documents/<id>/` | Récupérer un document |
| PUT | `/api/appwrite/documents/<id>/` | Mettre à jour un document |
| DELETE | `/api/appwrite/documents/<id>/` | Supprimer un document |
### Exemple d'utilisation
**Créer un document :**
```bash
curl -X POST http://localhost:8000/api/appwrite/documents/ \
-H "Content-Type: application/json" \
-d '{
"collection_id": "specialites",
"nom": "Génie Civil",
"slug": "genie-civil",
"description": "Formation en génie civil",
"icone": "fa-building",
"ordre": 1
}'
```
**Lister les documents :**
```bash
curl "http://localhost:8000/api/appwrite/documents/?collection_id=specialites"
```
## Structure des fichiers
```
enise_site/
├── settings.py # Configuration Django
├── appwrite_service.py # Client Appwrite
app_core/
├── appwrite_views.py # Vues API REST
├── management/commands/
│ ├── setup_appwrite.py # Créer les collections
│ └── sync_appwrite.py # Synchroniser les données
requirements.txt
.env.example
```
## Déploiement sur Hugging Face Spaces
1. Créez un fichier `Procfile` :
```
web: gunicorn enise_site.wsgi
```
2. Configurez les variables d'environnement dans HF Spaces
3. Poussez le projet :
```bash
git add .
git commit -m "Appwrite integration"
git push
```
## Documentation
- [SDK Python Appwrite](https://appwrite.io/docs/sdk-for-python)
- [API Database](https://appwrite.io/docs/databases)
- [Appwrite Cloud](https://cloud.appwrite.io)
## Résolution des problèmes
- **"APPWRITE_PROJECT_ID non configuré"** : Vérifiez le fichier `.env`
- **Erreur 401** : Vérifiez la clé API
- **Erreur 404** : Vérifiez l'ID de la collection