ENISE / app_core /appwrite_views.py
tiffank1802
starting
e1b5e25
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)