diff --git a/apps/api/serializers.py b/apps/api/serializers.py index e2b25c3..60f802c 100644 --- a/apps/api/serializers.py +++ b/apps/api/serializers.py @@ -146,6 +146,9 @@ class MessageMutatorSerializer(DynamicModelSerializer): class MessageStyleSerializer(DynamicModelSerializer): + title_mutator = serializers.SerializerMethodField() + description_mutator = serializers.SerializerMethodField() + class Meta: model = MessageStyle fields = ( @@ -153,6 +156,7 @@ class MessageStyleSerializer(DynamicModelSerializer): "server", "name", "is_embed", + "colour", "is_hyperlinked", "show_author", "show_timestamp", @@ -164,6 +168,18 @@ class MessageStyleSerializer(DynamicModelSerializer): ) read_only_fields = ("auto_created",) + def get_title_mutator(self, obj: MessageStyle): + request = self.context.get("request") + if request.method == "GET": + return MessageMutatorSerializer(obj.title_mutator).data + return [] + + def get_description_mutator(self, obj: MessageStyle): + request = self.context.get("request") + if request.method == "GET": + return MessageMutatorSerializer(obj.description_mutator).data + return [] + class UniqueContentRuleSerializer(DynamicModelSerializer): class Meta: diff --git a/apps/home/admin.py b/apps/home/admin.py index f1d3742..34f8f81 100644 --- a/apps/home/admin.py +++ b/apps/home/admin.py @@ -17,19 +17,21 @@ from .models import ( @admin.register(Server) class ServerAdmin(admin.ModelAdmin): list_display = ["id", "name", "icon_hash", "active"] + list_display_links = ["name"] @admin.register(ContentFilter) class ContentFilterAdmin(admin.ModelAdmin): list_display = [ "id", - "server", "name", + "server", "match", "matching_algorithm", "is_insensitive", "is_whitelist" ] + list_display_links = ["name"] @admin.register(MessageMutator) @@ -39,6 +41,7 @@ class MessageMutatorAdmin(admin.ModelAdmin): "name", "value" ] + list_display_links = ["name"] @admin.register(MessageStyle) @@ -48,6 +51,7 @@ class MessageStyleAdmin(admin.ModelAdmin): "name", "server", "is_embed", + "colour", "is_hyperlinked", "show_author", "show_timestamp", @@ -57,24 +61,26 @@ class MessageStyleAdmin(admin.ModelAdmin): "description_mutator", "auto_created" ] + list_display_links = ["name"] @admin.register(DiscordChannel) class DiscordChannelAdmin(admin.ModelAdmin): list_display = [ "id", - "server", "name", + "server", "is_nsfw" ] + list_display_links = ["name"] @admin.register(Subscription) class Subscription(admin.ModelAdmin): list_display = [ "id", - "server", "name", + "server", "url", "created_at", "updated_at", @@ -82,6 +88,7 @@ class Subscription(admin.ModelAdmin): "active", "message_style" ] + list_display_links = ["name"] @admin.register(Content) @@ -104,3 +111,4 @@ class UniqueContentRule(admin.ModelAdmin): "name", "value" ] + list_display_links = ["name"] diff --git a/apps/home/static/home/css/tables.css b/apps/home/static/home/css/tables.css index 6d864cc..186932d 100644 --- a/apps/home/static/home/css/tables.css +++ b/apps/home/static/home/css/tables.css @@ -115,4 +115,14 @@ table.dataTable > thead > tr > th, table.dataTable > thead > tr > td { div.dt-container.dt-empty-footer tbody > tr:last-child > * { border-bottom: 1px solid var(--bs-border-color); +} + + +/* Cell Data Types */ + +.table-cell-hex { + margin: 0 auto; + width: 25px; + height: 25px; + border-radius: 0.25rem; } \ No newline at end of file diff --git a/apps/home/static/home/js/tables.js b/apps/home/static/home/js/tables.js index 15113f1..469077e 100644 --- a/apps/home/static/home/js/tables.js +++ b/apps/home/static/home/js/tables.js @@ -462,6 +462,28 @@ function renderArrayBadgesColumn(data) { return badges.html(); } +function renderHexColourColumn(data, type, row) { + if (!row.is_embed) { + return ""; + } + + const hexWithHashtag = `#${data}`.toUpperCase(); + + let icon = $("