diff options
Diffstat (limited to 'pydis_site/apps/api')
-rw-r--r-- | pydis_site/apps/api/serializers.py | 18 | ||||
-rw-r--r-- | pydis_site/apps/api/viewsets/bot/infraction.py | 6 | ||||
-rw-r--r-- | pydis_site/apps/api/viewsets/bot/nomination.py | 2 |
3 files changed, 11 insertions, 15 deletions
diff --git a/pydis_site/apps/api/serializers.py b/pydis_site/apps/api/serializers.py index a2dc68f0..ea94214f 100644 --- a/pydis_site/apps/api/serializers.py +++ b/pydis_site/apps/api/serializers.py @@ -153,12 +153,9 @@ class MessageDeletionContextSerializer(ModelSerializer): """ messages = validated_data.pop('deletedmessage_set') deletion_context = MessageDeletionContext.objects.create(**validated_data) - for message in messages: - DeletedMessage.objects.create( - deletion_context=deletion_context, - **message - ) - + DeletedMessage.objects.bulk_create( + DeletedMessage(deletion_context=deletion_context, **message) for message in messages + ) return deletion_context @@ -510,13 +507,8 @@ class ExpandedInfractionSerializer(InfractionSerializer): """Return the dictionary representation of this infraction.""" ret = super().to_representation(instance) - user = User.objects.get(id=ret['user']) - user_data = UserSerializer(user).data - ret['user'] = user_data - - actor = User.objects.get(id=ret['actor']) - actor_data = UserSerializer(actor).data - ret['actor'] = actor_data + ret['user'] = UserSerializer(instance.user).data + ret['actor'] = UserSerializer(instance.actor).data return ret diff --git a/pydis_site/apps/api/viewsets/bot/infraction.py b/pydis_site/apps/api/viewsets/bot/infraction.py index 09c05a74..8da82822 100644 --- a/pydis_site/apps/api/viewsets/bot/infraction.py +++ b/pydis_site/apps/api/viewsets/bot/infraction.py @@ -230,7 +230,11 @@ class InfractionViewSet( }) additional_filters['type__in'] = [i.strip() for i in filter_types.split(",")] - return self.queryset.filter(**additional_filters) + qs = self.queryset.filter(**additional_filters) + if self.serializer_class is ExpandedInfractionSerializer: + return qs.prefetch_related('actor', 'user') + + return qs @action(url_path='expanded', detail=False) def list_expanded(self, *args, **kwargs) -> Response: diff --git a/pydis_site/apps/api/viewsets/bot/nomination.py b/pydis_site/apps/api/viewsets/bot/nomination.py index 953513e0..d083464c 100644 --- a/pydis_site/apps/api/viewsets/bot/nomination.py +++ b/pydis_site/apps/api/viewsets/bot/nomination.py @@ -170,7 +170,7 @@ class NominationViewSet(CreateModelMixin, RetrieveModelMixin, ListModelMixin, Ge """ serializer_class = NominationSerializer - queryset = Nomination.objects.all() + queryset = Nomination.objects.all().prefetch_related('entries') filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter) filterset_fields = ('user__id', 'active') frozen_on_create = ('ended_at', 'end_reason', 'active', 'inserted_at', 'reviewed') |