include channels details in subscription serializer
This commit is contained in:
parent
709b650f2e
commit
2da4018483
@ -171,16 +171,37 @@ class UniqueContentRuleSerializer(DynamicModelSerializer):
|
||||
fields = ("id", "name", "value")
|
||||
|
||||
|
||||
class DiscordChannelField(serializers.PrimaryKeyRelatedField):
|
||||
def to_internal_value(self, data):
|
||||
try:
|
||||
data = int(data)
|
||||
except (TypeError, ValueError):
|
||||
self.fail("invalid", pk_value=data)
|
||||
|
||||
return super().to_internal_value(data)
|
||||
|
||||
def to_representation(self, value):
|
||||
return str(value.pk)
|
||||
|
||||
|
||||
class NestedDiscordChannelSerializer(DynamicModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = DiscordChannel
|
||||
fields = ("id", "name", "is_nsfw")
|
||||
|
||||
|
||||
class SubscriptionSerializer(DynamicModelSerializer):
|
||||
filters = serializers.PrimaryKeyRelatedField(
|
||||
queryset=ContentFilter.objects.all(),
|
||||
many=True
|
||||
)
|
||||
channels = serializers.PrimaryKeyRelatedField(
|
||||
channels = DiscordChannelField(
|
||||
queryset=DiscordChannel.objects.all(),
|
||||
many=True
|
||||
)
|
||||
# unique_rules = UniqueContentRuleSerializer(many=True) # TODO: solve? causes issues with submission.
|
||||
channels_detail = serializers.SerializerMethodField()
|
||||
# unique_rules = UniqueContentRuleSerializ er(many=True) # TODO: solve? causes issues with submission.
|
||||
|
||||
class Meta:
|
||||
model = Subscription
|
||||
@ -195,11 +216,18 @@ class SubscriptionSerializer(DynamicModelSerializer):
|
||||
"active",
|
||||
"publish_threshold",
|
||||
"channels",
|
||||
"channels_detail",
|
||||
"filters",
|
||||
"message_style",
|
||||
"unique_rules"
|
||||
)
|
||||
|
||||
def get_channels_detail(self, obj: Subscription):
|
||||
request = self.context.get("request")
|
||||
if request.method == "GET":
|
||||
return NestedDiscordChannelSerializer(obj.channels.all(), many=True).data
|
||||
return []
|
||||
|
||||
def validate(self, data):
|
||||
server = data.get("server") or self.context.get("server")
|
||||
if not server:
|
||||
|
Loading…
x
Reference in New Issue
Block a user