File size: 3,998 Bytes
e1b5e25 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | # 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 |