diff --git a/manage_events/api/serializers.py b/manage_events/api/serializers.py index 08ef939..cc22fa0 100644 --- a/manage_events/api/serializers.py +++ b/manage_events/api/serializers.py @@ -15,6 +15,12 @@ class EventImageSerializer(serializers.ModelSerializer): model = EventImage fields = ["image"] + def get_image(self, obj): + request = self.context.get("request") + if obj.image and hasattr(obj.image, "url"): + return request.build_absolute_uri(obj.image.url) + return None + class EventDetailSerializer(serializers.ModelSerializer): images = serializers.SerializerMethodField() diff --git a/manage_events/api/views.py b/manage_events/api/views.py index 8a7a2f0..0aaf464 100644 --- a/manage_events/api/views.py +++ b/manage_events/api/views.py @@ -23,7 +23,13 @@ from manage_events.api.serializers import ( PrincipalPreferenceSerializer, VenueSerializer, ) -from manage_events.models import EventMaster, Event, EventCategory, PrincipalPreference, Venue +from manage_events.models import ( + EventMaster, + Event, + EventCategory, + PrincipalPreference, + Venue, +) import requests @@ -90,7 +96,9 @@ class EventsAPIView(APIView): current_and_future_events = Event.objects.filter( current_and_future_events_query ).order_by("-entry_fee") - serializer = EventDetailSerializer(current_and_future_events, many=True) + serializer = EventDetailSerializer( + current_and_future_events, context={"request": request}, many=True + ) return ApiResponse.success( status=status.HTTP_200_OK, message=constants.SUCCESS, @@ -105,7 +113,9 @@ class EventsAPIView(APIView): current_and_future_events = Event.objects.filter( current_and_future_events_query ).order_by("entry_fee") - serializer = EventDetailSerializer(current_and_future_events, many=True) + serializer = EventDetailSerializer( + current_and_future_events, context={"request": request}, many=True + ) return ApiResponse.success( status=status.HTTP_200_OK, message=constants.SUCCESS, @@ -120,7 +130,9 @@ class EventsAPIView(APIView): preference_events = Event.objects.filter( category__in=preferred_categories_ids, end_date__gte=today ).distinct() - serializer = EventDetailSerializer(preference_events, many=True) + serializer = EventDetailSerializer( + preference_events, context={"request": request}, many=True + ) return ApiResponse.success( status=status.HTTP_200_OK, message=constants.SUCCESS, @@ -177,7 +189,7 @@ class EventDetailAPIView(APIView): interactions = interaction.calculate() # Serialize your event data here - event_data = EventDetailSerializer(event).data + event_data = EventDetailSerializer(event, context={"request": request}).data event_data["interactions"] = interactions return ApiResponse.success( @@ -300,7 +312,9 @@ class IAmPrincipalLocationAPIView(APIView): # Assuming there's a UserLocation model that stores user locations, # and it has a ForeignKey to the user model. try: - user_location = IAmPrincipalLocation.objects.filter(principal=request.user).last() + user_location = IAmPrincipalLocation.objects.filter( + principal=request.user + ).last() serializer = IAmPrincipalLocationSerializer(user_location) return ApiResponse.success( status=status.HTTP_200_OK, diff --git a/manage_events/forms.py b/manage_events/forms.py index 9839e4c..c3475e5 100644 --- a/manage_events/forms.py +++ b/manage_events/forms.py @@ -26,6 +26,7 @@ class EventForm(forms.ModelForm): "end_date", "from_time", "to_time", + "category", "venue", "venue_capacity", "video_url", @@ -63,6 +64,7 @@ class EventForm(forms.ModelForm): # You can customize it further if needed: "event_master": forms.Select(attrs={"class": "form-control"}), "venue": forms.Select(attrs={"class": "form-control"}), + "category": forms.Select(attrs={"class": "form-control"}), }