From 09b910454e606b0760780e2ea0518370e165ea2d Mon Sep 17 00:00:00 2001 From: Corban-Lee Jones Date: Mon, 7 Oct 2024 21:15:42 +0100 Subject: [PATCH] detail sub attributes --- apps/api/serializers.py | 31 +++++++++++++++++++++++---- apps/home/static/home/js/tables.js | 9 ++++++++ apps/home/static/home/js/tabs/subs.js | 12 +++++++++++ 3 files changed, 48 insertions(+), 4 deletions(-) diff --git a/apps/api/serializers.py b/apps/api/serializers.py index a3909a1..6163cc6 100644 --- a/apps/api/serializers.py +++ b/apps/api/serializers.py @@ -172,13 +172,13 @@ class MessageStyleSerializer(DynamicModelSerializer): def get_title_mutator_detail(self, obj: MessageStyle): request = self.context.get("request") - if request.method == "GET": + if request and request.method == "GET": return MessageMutatorSerializer(obj.title_mutator).data return {} def get_description_mutator_detail(self, obj: MessageStyle): request = self.context.get("request") - if request.method == "GET": + if request and request.method == "GET": return MessageMutatorSerializer(obj.description_mutator).data return {} @@ -219,7 +219,9 @@ class SubscriptionSerializer(DynamicModelSerializer): many=True ) channels_detail = serializers.SerializerMethodField() - # unique_rules = UniqueContentRuleSerializ er(many=True) # TODO: solve? causes issues with submission. + filters_detail = serializers.SerializerMethodField() + message_style_detail = serializers.SerializerMethodField() + unique_rules_detail = serializers.SerializerMethodField() class Meta: model = Subscription @@ -236,8 +238,11 @@ class SubscriptionSerializer(DynamicModelSerializer): "channels", "channels_detail", "filters", + "filters_detail", "message_style", - "unique_rules" + "message_style_detail", + "unique_rules", + "unique_rules_detail" ) def get_channels_detail(self, obj: Subscription): @@ -246,6 +251,24 @@ class SubscriptionSerializer(DynamicModelSerializer): return NestedDiscordChannelSerializer(obj.channels.all(), many=True).data return [] + def get_filters_detail(self, obj: Subscription): + request = self.context.get("request") + if request.method == "GET": + return ContentFilterSerializer(obj.filters.all(), many=True).data + return [] + + def get_message_style_detail(self, obj: Subscription): + request = self.context.get("request") + if request.method == "GET": + return MessageStyleSerializer(obj.message_style).data + return {} + + def get_unique_rules_detail(self, obj: Subscription): + request = self.context.get("request") + if request.method == "GET": + return UniqueContentRuleSerializer(obj.unique_rules.all(), many=True).data + return [] + def validate(self, data): server = data.get("server") or self.context.get("server") if not server: diff --git a/apps/home/static/home/js/tables.js b/apps/home/static/home/js/tables.js index a22209e..fa8e16a 100644 --- a/apps/home/static/home/js/tables.js +++ b/apps/home/static/home/js/tables.js @@ -462,6 +462,15 @@ function renderBooleanColumn(data) { return ``; } +function renderBadgeColumn(data, colour=null) { + let badge = $(`${data}`) + if (colour) { + badge[0].style.setProperty("border-color", `#${colour}`, "important"); + } + + return badge.prop("outerHTML"); +} + function renderArrayBadgesColumn(data) { let badges = $("
"); diff --git a/apps/home/static/home/js/tabs/subs.js b/apps/home/static/home/js/tabs/subs.js index 165536e..fa1fc28 100644 --- a/apps/home/static/home/js/tabs/subs.js +++ b/apps/home/static/home/js/tabs/subs.js @@ -30,6 +30,18 @@ function initSubscriptionsModule() { className: "text-center", render: data => renderArrayBadgesColumn(data.map(item => "#" + item.name)) }, + { + title: "Filters", + data: "filters_detail", + className: "text-center", + render: data => renderArrayBadgesColumn(data.map(item => item.name)) + }, + { + title: "Style", + data: "message_style_detail", + className: "text-center", + render: data => renderBadgeColumn(data.name, data.is_embed ? data.colour : null) + }, { title: "Rules", data: "unique_rules_detail",