aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/api/serializers.py
diff options
context:
space:
mode:
authorGravatar D0rs4n <[email protected]>2021-12-06 20:22:01 +0100
committerGravatar D0rs4n <[email protected]>2021-12-18 18:02:12 +0100
commite3a45e09041898ffd0bccd3c730524e8c673e696 (patch)
tree32ea58b71d5bf74bf89177d6e728750ba4cfec80 /pydis_site/apps/api/serializers.py
parentAdjust Filter JSON Schema (diff)
Adjust FilterList Representation
From now on the FilterList Serializer will contain a settings field with all the settings that were listed previously, on the model.
Diffstat (limited to 'pydis_site/apps/api/serializers.py')
-rw-r--r--pydis_site/apps/api/serializers.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/pydis_site/apps/api/serializers.py b/pydis_site/apps/api/serializers.py
index 864ab52e..267cf761 100644
--- a/pydis_site/apps/api/serializers.py
+++ b/pydis_site/apps/api/serializers.py
@@ -181,7 +181,7 @@ class FilterSerializer(ModelSerializer):
model = Filter
fields = (
'id', 'content', 'description', 'additional_field', 'filter_list'
- ) + SETTINGS_FIELDS
+ )
extra_kwargs = {
field: {'required': False, 'allow_null': True} for field in SETTINGS_FIELDS
} | {
@@ -194,7 +194,8 @@ class FilterSerializer(ModelSerializer):
def to_representation(self, instance: Filter) -> dict:
"""
- Provides a custom JSON representation to the Filter Serializers
+
+ Provides a custom JSON representation to the Filter Serializers.
That does not affect how the Serializer works in general.
"""
@@ -239,7 +240,7 @@ class FilterListSerializer(ModelSerializer):
"""Metadata defined for the Django REST Framework."""
model = FilterList
- fields = ('id', 'name', 'list_type', 'filters') + SETTINGS_FIELDS
+ fields = ('id', 'name', 'list_type', 'filters')
extra_kwargs = {
field: {'required': False, 'allow_null': True} for field in ALWAYS_OPTIONAL_SETTINGS
} | {
@@ -261,6 +262,16 @@ class FilterListSerializer(ModelSerializer):
),
]
+ def to_representation(self, instance: FilterList) -> dict:
+ """
+ Provides a custom JSON representation to the FilterList Serializers.
+
+ That does not affect how the Serializer works in general.
+ """
+ ret = super().to_representation(instance)
+ ret["settings"] = {name: getattr(instance, name) for name in SETTINGS_FIELDS}
+ return ret
+
class InfractionSerializer(ModelSerializer):
"""A class providing (de-)serialization of `Infraction` instances."""