File size: 5,262 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
151
152
153
154
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.http import require_http_methods
from enise_site.appwrite_service import appwrite_db
from appwrite.query import Query
from appwrite.id import ID
import json


@csrf_exempt
@require_http_methods(["POST"])
def appwrite_create_document(request):
    """Créer un document dans une collection Appwrite"""
    try:
        data = json.loads(request.body)
        collection_id = data.pop('collection_id', None)
        
        if not collection_id:
            return JsonResponse({'success': False, 'error': 'collection_id requis'}, status=400)
        
        database = appwrite_db.get_database()
        document_id = data.get('document_id', ID.unique())
        
        result = database.create_document(
            database_id=appwrite_db.DATABASE_ID,
            collection_id=collection_id,
            document_id=document_id,
            data=data
        )
        
        return JsonResponse({'success': True, 'document': result})
    except Exception as e:
        return JsonResponse({'success': False, 'error': str(e)}, status=500)


@csrf_exempt
@require_http_methods(["GET"])
def appwrite_list_documents(request):
    """Lister les documents d'une collection"""
    try:
        collection_id = request.GET.get('collection_id')
        queries = request.GET.getlist('queries', [])
        
        if not collection_id:
            return JsonResponse({'success': False, 'error': 'collection_id requis'}, status=400)
        
        database = appwrite_db.get_database()
        result = database.list_documents(
            database_id=appwrite_db.DATABASE_ID,
            collection_id=collection_id,
            queries=queries
        )
        
        return JsonResponse({'success': True, 'documents': result.get('documents', [])})
    except Exception as e:
        return JsonResponse({'success': False, 'error': str(e)}, status=500)


@csrf_exempt
@require_http_methods(["GET"])
def appwrite_get_document(request, document_id):
    """Récupérer un document par son ID"""
    try:
        collection_id = request.GET.get('collection_id')
        
        if not collection_id:
            return JsonResponse({'success': False, 'error': 'collection_id requis'}, status=400)
        
        database = appwrite_db.get_database()
        result = database.get_document(
            database_id=appwrite_db.DATABASE_ID,
            collection_id=collection_id,
            document_id=document_id
        )
        
        return JsonResponse({'success': True, 'document': result})
    except Exception as e:
        return JsonResponse({'success': False, 'error': str(e)}, status=500)


@csrf_exempt
@require_http_methods(["PUT"])
def appwrite_update_document(request, document_id):
    """Mettre à jour un document"""
    try:
        data = json.loads(request.body)
        collection_id = data.pop('collection_id', None)
        
        if not collection_id:
            return JsonResponse({'success': False, 'error': 'collection_id requis'}, status=400)
        
        database = appwrite_db.get_database()
        result = database.update_document(
            database_id=appwrite_db.DATABASE_ID,
            collection_id=collection_id,
            document_id=document_id,
            data=data
        )
        
        return JsonResponse({'success': True, 'document': result})
    except Exception as e:
        return JsonResponse({'success': False, 'error': str(e)}, status=500)


@csrf_exempt
@require_http_methods(["DELETE"])
def appwrite_delete_document(request, document_id):
    """Supprimer un document"""
    try:
        collection_id = request.GET.get('collection_id')
        
        if not collection_id:
            return JsonResponse({'success': False, 'error': 'collection_id requis'}, status=400)
        
        database = appwrite_db.get_database()
        database.delete_document(
            database_id=appwrite_db.DATABASE_ID,
            collection_id=collection_id,
            document_id=document_id
        )
        
        return JsonResponse({'success': True, 'message': 'Document supprimé'})
    except Exception as e:
        return JsonResponse({'success': False, 'error': str(e)}, status=500)


@csrf_exempt
@require_http_methods(["GET"])
def appwrite_test_connection(request):
    """Tester la connexion Appwrite"""
    try:
        from django.conf import settings
        
        if not settings.APPWRITE_PROJECT_ID:
            return JsonResponse({
                'success': False, 
                'error': 'APPWRITE_PROJECT_ID non configuré'
            }, status=500)
        
        database = appwrite_db.get_database()
        result = database.list_documents(
            database_id=appwrite_db.DATABASE_ID,
            collection_id='specialites',
            queries=[Query.limit(1)]
        )
        
        return JsonResponse({
            'success': True,
            'message': 'Connexion Appwrite établie',
            'endpoint': settings.APPWRITE_ENDPOINT,
            'project_id': settings.APPWRITE_PROJECT_ID
        })
    except Exception as e:
        return JsonResponse({'success': False, 'error': str(e)}, status=500)