Files
eventify_backend/mobile_web_api/views/events.py

204 lines
6.6 KiB
Python
Raw Normal View History

2025-12-01 04:52:49 +05:30
from django.http import JsonResponse
from rest_framework.views import APIView
from rest_framework.authentication import TokenAuthentication
from rest_framework.permissions import IsAuthenticated
from events.models import Event, EventImages
from rest_framework.authtoken.models import Token
from master_data.models import EventType
from django.forms.models import model_to_dict
from django.utils.decorators import method_decorator
from django.views.decorators.csrf import csrf_exempt
import json
@method_decorator(csrf_exempt, name='dispatch')
class EventTypeListAPIView(APIView):
def post(self, request):
try:
# Manually load JSON because we are not using parsers
data = json.loads(request.body)
token_key = data.get("token")
username = data.get("username")
if not token_key or not username:
return JsonResponse(
{"status": "error", "message": "token and username required"}
)
try:
token = Token.objects.get(key=token_key)
user = token.user
if user.username != username:
return JsonResponse(
{"status": "error", "message": "token does not match user"}
)
# Fetch event types manually without serializer
event_types = list(EventType.objects.values("id", "event_type"))
return JsonResponse({
"status": "success",
"event_types": event_types
})
except Token.DoesNotExist:
return JsonResponse({"status": "invalid_token"})
except json.JSONDecodeError:
return JsonResponse(
{"status": "error", "message": "Invalid JSON"}
)
except Exception as e:
return JsonResponse(
{"status": "error", "message": str(e)},
)
class EventListAPI(APIView):
def post(self, request):
try:
data = json.loads(request.body)
token_key = data.get("token")
username = data.get("username")
pincode = data.get("pincode")
if not token_key or not username:
return JsonResponse(
{"status": "error", "message": "token and username required"}
)
try:
token = Token.objects.get(key=token_key)
user = token.user
if user.username != username:
return JsonResponse(
{"status": "error", "message": "token does not match user"}
)
events = Event.objects.filter(pincode=pincode).order_by('-created_date')
event_list = []
for e in events:
2025-12-01 05:31:13 +05:30
data_dict = model_to_dict(e)
thumb_img = EventImages.objects.get(id=e.id, is_primary=True)
data_dict['thumb_img'] = request.build_absolute_uri(thumb_img.event_image.url)
event_list.append(data_dict)
2025-12-01 04:52:49 +05:30
return JsonResponse({
"status": "success",
"events": event_list
})
except Token.DoesNotExist:
return JsonResponse({"status": "invalid_token"})
except json.JSONDecodeError:
return JsonResponse(
{"status": "error", "message": "Invalid JSON"}
)
except Exception as e:
return JsonResponse(
{"status": "error", "message": str(e)},
)
class EventDetailAPI(APIView):
def post(self, request):
try:
data = json.loads(request.body)
token_key = data.get("token")
username = data.get("username")
event_id = data.get("event_id")
if not token_key or not username:
return JsonResponse(
{"status": "error", "message": "token and username required"}
)
try:
token = Token.objects.get(key=token_key)
user = token.user
if user.username != username:
return JsonResponse(
{"status": "error", "message": "token does not match user"}
)
events = Event.objects.get(id=event_id)
thumb_img = EventImages.objects.get(id=event_id, is_primary=True)
2025-12-01 04:52:49 +05:30
data = model_to_dict(events)
data["status"] = "success"
2025-12-01 05:19:13 +05:30
data["thumb_img"] = request.build_absolute_uri(thumb_img.event_image.url)
2025-12-01 04:52:49 +05:30
return JsonResponse(data)
except Token.DoesNotExist:
return JsonResponse({"status": "invalid_token"})
except json.JSONDecodeError:
return JsonResponse(
{"status": "error", "message": "Invalid JSON"}
)
except Exception as e:
return JsonResponse(
{"status": "error", "message": str(e)},
)
class EventImagesListAPI(APIView):
def post(self, request):
try:
data = json.loads(request.body)
2025-12-01 04:52:49 +05:30
token_key = data.get("token")
username = data.get("username")
event_id = data.get("event_id")
if not token_key or not username:
return JsonResponse(
{"status": "error", "message": "token and username required"}
)
2025-12-01 04:52:49 +05:30
try:
token = Token.objects.get(key=token_key)
user = token.user
2025-12-01 04:52:49 +05:30
if user.username != username:
return JsonResponse(
{"status": "error", "message": "token does not match user"}
)
2025-12-01 05:27:43 +05:30
event_images = EventImages.objects.filter(event=event_id)
2025-12-01 05:25:54 +05:30
res_data = {}
res_data["status"] = "success"
2025-12-01 05:22:46 +05:30
event_images_list = []
for ei in event_images:
event_images_list.append(request.build_absolute_uri(ei.event_image.url))
2025-12-01 05:25:54 +05:30
res_data["images"] = event_images_list
2025-12-01 05:24:25 +05:30
2025-12-01 05:25:54 +05:30
return JsonResponse(res_data)
except Token.DoesNotExist:
return JsonResponse({"status": "invalid_token"})
except json.JSONDecodeError:
return JsonResponse(
{"status": "error", "message": "Invalid JSON"}
)
except Exception as e:
return JsonResponse(
{"status": "error", "message": str(e)},
)