b6bb1fe767
Adds tags for agnda items, adds tag filter in agenda list view, server changes, client relations, adjust agenda csv exporter
72 lines
1.8 KiB
Python
72 lines
1.8 KiB
Python
from openslides.utils.rest_api import JSONField, ModelSerializer, RelatedField
|
|
|
|
from .models import Item, ListOfSpeakers, Speaker
|
|
|
|
|
|
class SpeakerSerializer(ModelSerializer):
|
|
"""
|
|
Serializer for agenda.models.Speaker objects.
|
|
"""
|
|
|
|
class Meta:
|
|
model = Speaker
|
|
fields = ("id", "user", "begin_time", "end_time", "weight", "marked")
|
|
|
|
|
|
class RelatedItemRelatedField(RelatedField):
|
|
"""
|
|
A custom field to use for the content_object generic relationship.
|
|
"""
|
|
|
|
def to_representation(self, value):
|
|
"""
|
|
Returns info concerning the related object extracted from the api URL
|
|
of this object.
|
|
"""
|
|
return {"collection": value.get_collection_string(), "id": value.get_rest_pk()}
|
|
|
|
|
|
class ItemSerializer(ModelSerializer):
|
|
"""
|
|
Serializer for agenda.models.Item objects.
|
|
"""
|
|
|
|
content_object = RelatedItemRelatedField(read_only=True)
|
|
|
|
title_information = JSONField(read_only=True)
|
|
|
|
class Meta:
|
|
model = Item
|
|
fields = (
|
|
"id",
|
|
"item_number",
|
|
"title_information",
|
|
"comment",
|
|
"closed",
|
|
"type",
|
|
"is_internal",
|
|
"is_hidden",
|
|
"duration",
|
|
"content_object",
|
|
"weight",
|
|
"parent",
|
|
"level",
|
|
"tags",
|
|
)
|
|
|
|
|
|
class ListOfSpeakersSerializer(ModelSerializer):
|
|
"""
|
|
Serializer for agenda.models.Item objects.
|
|
"""
|
|
|
|
content_object = RelatedItemRelatedField(read_only=True)
|
|
speakers = SpeakerSerializer(many=True, read_only=True)
|
|
|
|
title_information = JSONField(read_only=True)
|
|
|
|
class Meta:
|
|
model = ListOfSpeakers
|
|
fields = ("id", "title_information", "speakers", "closed", "content_object")
|
|
read_only_fields = ("id", "title_information", "speakers", "content_object")
|