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