feat(module_2_filter):change age group dynamically
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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:
|
||||
|
||||
20
manage_events/management/commands/populate_age_group.py
Normal file
20
manage_events/management/commands/populate_age_group.py
Normal 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()
|
||||
19
manage_events/migrations/0016_alter_event_age_group.py
Normal file
19
manage_events/migrations/0016_alter_event_age_group.py
Normal 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'),
|
||||
),
|
||||
]
|
||||
18
manage_events/migrations/0017_alter_event_age_group.py
Normal file
18
manage_events/migrations/0017_alter_event_age_group.py
Normal 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),
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user