41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
from rest_framework import serializers
|
|
from django.forms.models import model_to_dict
|
|
from web.models.event import Event
|
|
from web.models.event_category import EventCategory
|
|
from web.models.event_tag import EventTag
|
|
|
|
|
|
class EventSerializer(serializers.ModelSerializer):
|
|
|
|
class Meta:
|
|
model = Event
|
|
fields = '__all__'
|
|
|
|
def to_representation(self, instance):
|
|
representation = super().to_representation(instance)
|
|
|
|
event_categories = EventCategory.objects.filter(event=instance).filter(active=True).all()
|
|
event_tags = EventTag.objects.filter(event=instance).filter(active=True).all()
|
|
|
|
categories = []
|
|
if event_categories.exists():
|
|
for event_category in event_categories:
|
|
categories.append({
|
|
'id': event_category.category.id,
|
|
'name': event_category.category.name,
|
|
'description': event_category.category.description,
|
|
'_meta': model_to_dict(event_category)
|
|
})
|
|
|
|
tags = []
|
|
if event_tags.exists():
|
|
for event_tag in event_tags:
|
|
tags.append({
|
|
'id': event_tag.tag.id,
|
|
'name': event_tag.tag.name,
|
|
'_meta': model_to_dict(event_tag)
|
|
})
|
|
|
|
representation['categories'] = categories
|
|
representation['tags'] = tags
|
|
return representation
|