feat(module_2_filter):change age group dynamically

This commit is contained in:
bobbyvish
2024-07-17 19:52:02 +05:30
parent 3da21b0c0b
commit ee25cf5a8b
8 changed files with 98 additions and 8 deletions

View File

@@ -8,6 +8,7 @@ from .models import (
EventMaster,
Event,
EventPrincipalInteraction,
AgeGroups
)
@@ -129,3 +130,4 @@ admin.site.register(Event, EventAdmin)
admin.site.register(EventCategory, EventCategoryAdmin)
admin.site.register(Venue, VenueAdmin)
admin.site.register(EventMaster, EventMasterAdmin)
admin.site.register(AgeGroups)

View File

@@ -6,6 +6,7 @@ from taggit.models import Tag
from manage_events.utils import get_location_info
from accounts.api.serializers import ProfileSerializer
from manage_events.models import (
AgeGroups,
EventMaster,
Event,
EventCategory,
@@ -49,6 +50,10 @@ class EventCategorySerializer(serializers.ModelSerializer):
model = EventCategory
fields = ["id", "title", "image", "description", "video_url"]
class AgeGroupsSerializer(serializers.ModelSerializer):
class Meta:
model = AgeGroups
fields = ['id', 'name']
class EventListSerializer(serializers.ModelSerializer):
category = EventCategorySerializer(read_only=True)

View File

@@ -129,6 +129,11 @@ urlpatterns = [
name="capture_event_share",
),
path(
"age-groups/", views.AgeGroupListView.as_view(),
name="age_group_list"
),
path(
"events/",
views.EventListView.as_view(),

View File

@@ -18,6 +18,7 @@ from rest_framework.permissions import IsAuthenticated
from rest_framework_simplejwt.authentication import JWTAuthentication
from manage_cms.api.serializers import TagSerializer
from manage_events.api.serializers import (
AgeGroupsSerializer,
EventDateRangeSerializer,
EventMasterSearchSerializer,
EventMasterSerializer,
@@ -32,6 +33,7 @@ from manage_events.api.serializers import (
EventListSerializer,
)
from manage_events.models import (
AgeGroups,
EventInteractionType,
EventMaster,
Event,
@@ -987,6 +989,18 @@ class EventShareView(APIView):
status=status.HTTP_200_OK,
)
class AgeGroupListView(APIView):
authentication_classes = [JWTAuthentication]
permission_classes = [IsAuthenticated]
serializer_class = AgeGroupsSerializer
model = AgeGroups
def get(self, request):
queryset = self.model.objects.filter(active=True)
serializer = self.serializer_class(queryset, many=True)
return ApiResponse.success(message=constants.SUCCESS, data=serializer.data)
class EventListView(generics.ListAPIView):
authentication_classes = [JWTAuthentication]
permission_classes = [IsAuthenticated]

View File

@@ -1,6 +1,6 @@
from django import forms
from accounts.models import IAmPrincipal, IAmPrincipalExtendedData
from manage_events.models import EventImage, EventMaster, Event, EventCategory, Venue
from manage_events.models import AgeGroups, EventImage, EventMaster, Event, EventCategory, Venue
from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as _
@@ -17,12 +17,6 @@ class EventCategoryForm(forms.ModelForm):
class EventForm(forms.ModelForm):
AGE_GROUP_CHOICES = [
('18 & Under', '18 & Under'),
('18-30', '18-30'),
('30+', '30+'),
('Family Event', 'Family Event'),
]
principal = forms.ModelChoiceField(
queryset=IAmPrincipal.objects.select_related("extended_data").filter(
extended_data__is_onboarded=True,
@@ -38,7 +32,11 @@ class EventForm(forms.ModelForm):
)
image = forms.ImageField(label="Thumbnail")
event_images = forms.ImageField(label="Event Images")
age_group = forms.ChoiceField(choices=AGE_GROUP_CHOICES, label="Age Group", required=True)
age_group = forms.ModelChoiceField(
queryset=AgeGroups.objects.filter(active=True),
label="Age Group",
required=True
)
class Meta:
model = Event
@@ -96,6 +94,15 @@ class EventForm(forms.ModelForm):
if event_images.exists():
self.fields['event_images'].initial = [image.image.url for image in event_images]
# Set the initial value for age_group if instance is provided
print(f"age group is {self.instance.age_group}")
if self.instance and self.instance.pk:
try:
self.fields['age_group'].initial = AgeGroups.objects.get(name=instance.age_group).id
print(f"field initials {self.fields['age_group'].initial}")
except AgeGroups.DoesNotExist:
pass
if principal_id:
self.fields['venue'].queryset = Venue.objects.filter(principal_id=principal_id, active=True)
else:

View File

@@ -0,0 +1,20 @@
from django.core.management.base import BaseCommand
from ...models import AgeGroups, Event
import random
class Command(BaseCommand):
help = 'Populate the AgeGroup model with predefined age groups'
def handle(self, *args, **kwargs):
age_groups = ["18-21", "21-30", "30-40", "40-50", "50+"]
for age in age_groups:
age_group, created = AgeGroups.objects.get_or_create(name=age)
if created:
self.stdout.write(self.style.SUCCESS(f'Age group "{age}" created.'))
else:
self.stdout.write(self.style.WARNING(f'Age group "{age}" already exists.'))
# Update all Event objects with a random age group
for event in Event.objects.all():
event.age_group = random.choice(age_groups)
event.save()

View File

@@ -0,0 +1,19 @@
# Generated by Django 5.0.2 on 2024-07-17 10:51
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('manage_events', '0015_agegroups'),
]
operations = [
migrations.AlterField(
model_name='event',
name='age_group',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='manage_events.agegroups'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 5.0.2 on 2024-07-17 10:51
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('manage_events', '0016_alter_event_age_group'),
]
operations = [
migrations.AlterField(
model_name='event',
name='age_group',
field=models.CharField(blank=True, max_length=100, null=True),
),
]