From e6daf32924cb31314b2fc9faf07a40c02add8636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Norman=20J=C3=A4ckel?= Date: Fri, 5 Apr 2019 10:44:12 +0200 Subject: [PATCH] Added check for double serializer class registering. Removed AssignmentShortPollSerializer. --- openslides/assignments/serializers.py | 44 --------------------------- openslides/utils/rest_api.py | 7 +++++ 2 files changed, 7 insertions(+), 44 deletions(-) diff --git a/openslides/assignments/serializers.py b/openslides/assignments/serializers.py index c60149a18..a67fa3333 100644 --- a/openslides/assignments/serializers.py +++ b/openslides/assignments/serializers.py @@ -80,25 +80,6 @@ class AssignmentOptionSerializer(ModelSerializer): return obj.poll.assignment.is_elected(obj.candidate) -class FilterPollListSerializer(ListSerializer): - """ - Customized serializer to filter polls (exclude unpublished). - """ - - def to_representation(self, data): - """ - List of object instances -> List of dicts of primitive datatypes. - - This method is adapted to filter the data and exclude unpublished polls. - """ - # Dealing with nested relationships, data can be a Manager, - # so, first get a queryset from the Manager if needed - iterable = ( - data.filter(published=True) if isinstance(data, models.Manager) else data - ) - return [self.child.to_representation(item) for item in iterable] - - class AssignmentAllPollSerializer(ModelSerializer): """ Serializer for assignment.models.AssignmentPoll objects. @@ -198,31 +179,6 @@ class AssignmentAllPollSerializer(ModelSerializer): return instance -class AssignmentShortPollSerializer(AssignmentAllPollSerializer): - """ - Serializer for assignment.models.AssignmentPoll objects. - - Serializes only short polls (excluded unpublished polls). - """ - - class Meta: - list_serializer_class = FilterPollListSerializer - model = AssignmentPoll - fields = ( - "id", - "pollmethod", - "description", - "published", - "options", - "votesabstain", - "votesno", - "votesvalid", - "votesinvalid", - "votescast", - "has_votes", - ) - - class AssignmentFullSerializer(ModelSerializer): """ Serializer for assignment.models.Assignment objects. With all polls. diff --git a/openslides/utils/rest_api.py b/openslides/utils/rest_api.py index a70943b09..e2f1665ef 100644 --- a/openslides/utils/rest_api.py +++ b/openslides/utils/rest_api.py @@ -204,6 +204,13 @@ class ModelSerializerRegisterer(SerializerMetaclass): except AttributeError: pass else: + if model_serializer_classes.get(model) is not None: + error = ( + f"Model {model} is already used for the serializer class " + f"{model_serializer_classes[model]} and cannot be registered " + f"for serializer class {serializer_class}." + ) + raise RuntimeError(error) model_serializer_classes[model] = serializer_class return serializer_class