|
|
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) |