display embed colour and mutators
All checks were successful
Build and Push Docker Image / build (push) Successful in 16s
All checks were successful
Build and Push Docker Image / build (push) Successful in 16s
This commit is contained in:
parent
7cd47165a9
commit
64b4e95bd1
@ -146,6 +146,9 @@ class MessageMutatorSerializer(DynamicModelSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class MessageStyleSerializer(DynamicModelSerializer):
|
class MessageStyleSerializer(DynamicModelSerializer):
|
||||||
|
title_mutator = serializers.SerializerMethodField()
|
||||||
|
description_mutator = serializers.SerializerMethodField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = MessageStyle
|
model = MessageStyle
|
||||||
fields = (
|
fields = (
|
||||||
@ -153,6 +156,7 @@ class MessageStyleSerializer(DynamicModelSerializer):
|
|||||||
"server",
|
"server",
|
||||||
"name",
|
"name",
|
||||||
"is_embed",
|
"is_embed",
|
||||||
|
"colour",
|
||||||
"is_hyperlinked",
|
"is_hyperlinked",
|
||||||
"show_author",
|
"show_author",
|
||||||
"show_timestamp",
|
"show_timestamp",
|
||||||
@ -164,6 +168,18 @@ class MessageStyleSerializer(DynamicModelSerializer):
|
|||||||
)
|
)
|
||||||
read_only_fields = ("auto_created",)
|
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 UniqueContentRuleSerializer(DynamicModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -17,19 +17,21 @@ from .models import (
|
|||||||
@admin.register(Server)
|
@admin.register(Server)
|
||||||
class ServerAdmin(admin.ModelAdmin):
|
class ServerAdmin(admin.ModelAdmin):
|
||||||
list_display = ["id", "name", "icon_hash", "active"]
|
list_display = ["id", "name", "icon_hash", "active"]
|
||||||
|
list_display_links = ["name"]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(ContentFilter)
|
@admin.register(ContentFilter)
|
||||||
class ContentFilterAdmin(admin.ModelAdmin):
|
class ContentFilterAdmin(admin.ModelAdmin):
|
||||||
list_display = [
|
list_display = [
|
||||||
"id",
|
"id",
|
||||||
"server",
|
|
||||||
"name",
|
"name",
|
||||||
|
"server",
|
||||||
"match",
|
"match",
|
||||||
"matching_algorithm",
|
"matching_algorithm",
|
||||||
"is_insensitive",
|
"is_insensitive",
|
||||||
"is_whitelist"
|
"is_whitelist"
|
||||||
]
|
]
|
||||||
|
list_display_links = ["name"]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(MessageMutator)
|
@admin.register(MessageMutator)
|
||||||
@ -39,6 +41,7 @@ class MessageMutatorAdmin(admin.ModelAdmin):
|
|||||||
"name",
|
"name",
|
||||||
"value"
|
"value"
|
||||||
]
|
]
|
||||||
|
list_display_links = ["name"]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(MessageStyle)
|
@admin.register(MessageStyle)
|
||||||
@ -48,6 +51,7 @@ class MessageStyleAdmin(admin.ModelAdmin):
|
|||||||
"name",
|
"name",
|
||||||
"server",
|
"server",
|
||||||
"is_embed",
|
"is_embed",
|
||||||
|
"colour",
|
||||||
"is_hyperlinked",
|
"is_hyperlinked",
|
||||||
"show_author",
|
"show_author",
|
||||||
"show_timestamp",
|
"show_timestamp",
|
||||||
@ -57,24 +61,26 @@ class MessageStyleAdmin(admin.ModelAdmin):
|
|||||||
"description_mutator",
|
"description_mutator",
|
||||||
"auto_created"
|
"auto_created"
|
||||||
]
|
]
|
||||||
|
list_display_links = ["name"]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(DiscordChannel)
|
@admin.register(DiscordChannel)
|
||||||
class DiscordChannelAdmin(admin.ModelAdmin):
|
class DiscordChannelAdmin(admin.ModelAdmin):
|
||||||
list_display = [
|
list_display = [
|
||||||
"id",
|
"id",
|
||||||
"server",
|
|
||||||
"name",
|
"name",
|
||||||
|
"server",
|
||||||
"is_nsfw"
|
"is_nsfw"
|
||||||
]
|
]
|
||||||
|
list_display_links = ["name"]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Subscription)
|
@admin.register(Subscription)
|
||||||
class Subscription(admin.ModelAdmin):
|
class Subscription(admin.ModelAdmin):
|
||||||
list_display = [
|
list_display = [
|
||||||
"id",
|
"id",
|
||||||
"server",
|
|
||||||
"name",
|
"name",
|
||||||
|
"server",
|
||||||
"url",
|
"url",
|
||||||
"created_at",
|
"created_at",
|
||||||
"updated_at",
|
"updated_at",
|
||||||
@ -82,6 +88,7 @@ class Subscription(admin.ModelAdmin):
|
|||||||
"active",
|
"active",
|
||||||
"message_style"
|
"message_style"
|
||||||
]
|
]
|
||||||
|
list_display_links = ["name"]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Content)
|
@admin.register(Content)
|
||||||
@ -104,3 +111,4 @@ class UniqueContentRule(admin.ModelAdmin):
|
|||||||
"name",
|
"name",
|
||||||
"value"
|
"value"
|
||||||
]
|
]
|
||||||
|
list_display_links = ["name"]
|
||||||
|
@ -115,4 +115,14 @@ table.dataTable > thead > tr > th, table.dataTable > thead > tr > td {
|
|||||||
|
|
||||||
div.dt-container.dt-empty-footer tbody > tr:last-child > * {
|
div.dt-container.dt-empty-footer tbody > tr:last-child > * {
|
||||||
border-bottom: 1px solid var(--bs-border-color);
|
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;
|
||||||
}
|
}
|
@ -462,6 +462,28 @@ function renderArrayBadgesColumn(data) {
|
|||||||
return badges.html();
|
return badges.html();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function renderHexColourColumn(data, type, row) {
|
||||||
|
if (!row.is_embed) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
const hexWithHashtag = `#${data}`.toUpperCase();
|
||||||
|
|
||||||
|
let icon = $("<div>");
|
||||||
|
icon.addClass("table-cell-hex");
|
||||||
|
icon.css("background-color", hexWithHashtag);
|
||||||
|
|
||||||
|
return $(`<span data-bs-toggle="tooltip" data-bs-title="${hexWithHashtag}">${icon.prop("outerHTML")}</span>`).tooltip()[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderMutatorColumn(data) {
|
||||||
|
if (!("id" in data)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
return $(`<span class="badge text-bg-secondary rounded-1">${data.name}</span>`).prop("outerHTML");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// region Get Table Parts
|
// region Get Table Parts
|
||||||
|
|
||||||
|
@ -24,6 +24,12 @@ function initMessageStylesModule() {
|
|||||||
className: "text-center",
|
className: "text-center",
|
||||||
render: renderBooleanColumn
|
render: renderBooleanColumn
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: "Embed Colour",
|
||||||
|
data: "colour",
|
||||||
|
className: "text-center",
|
||||||
|
render: renderHexColourColumn
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: "Is Hyperlinked",
|
title: "Is Hyperlinked",
|
||||||
data: "is_hyperlinked",
|
data: "is_hyperlinked",
|
||||||
@ -56,11 +62,13 @@ function initMessageStylesModule() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Title Mutator",
|
title: "Title Mutator",
|
||||||
data: "title_mutator"
|
data: "title_mutator",
|
||||||
|
render: renderMutatorColumn
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Description Mutator",
|
title: "Description Mutator",
|
||||||
data: "description_mutator"
|
data: "description_mutator",
|
||||||
|
render: renderMutatorColumn
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Editable",
|
title: "Editable",
|
||||||
|
@ -18,7 +18,16 @@
|
|||||||
<div class="form-text">Human-readable name for this entry.</div>
|
<div class="form-text">Human-readable name for this entry.</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-6 ps-lg-4"></div>
|
<div class="col-lg-6 ps-lg-4">
|
||||||
|
<div class="mb-4">
|
||||||
|
<div class="colour-input"
|
||||||
|
data-id="styleEmbedColour"
|
||||||
|
data-label="Embed Colour"
|
||||||
|
data-helptext="Colour of the embed (if enabled)."
|
||||||
|
data-defaultcolour="#3498db">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="col-lg-6 pe-lg-4">
|
<div class="col-lg-6 pe-lg-4">
|
||||||
<div class="form-check form-switch mb-4">
|
<div class="form-check form-switch mb-4">
|
||||||
<label for="styleIsEmbed" class="form-check-label">Use an Embed</label>
|
<label for="styleIsEmbed" class="form-check-label">Use an Embed</label>
|
||||||
|
@ -66,7 +66,7 @@
|
|||||||
<div class="form-check form-switch">
|
<div class="form-check form-switch">
|
||||||
<label for="subActive" class="form-check-label">Enabled</label>
|
<label for="subActive" class="form-check-label">Enabled</label>
|
||||||
<input type="checkbox" id="subActive" name="subActive" class="form-check-input" data-field="active" tabindex="8" data-default="true">
|
<input type="checkbox" id="subActive" name="subActive" class="form-check-input" data-field="active" tabindex="8" data-default="true">
|
||||||
<div class="form-text d-none">Disabled Subscriptions are ignored.</div>
|
<div class="form-text"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user