separate mutator for article title/description
This commit is contained in:
parent
d3bc768000
commit
9ae39702b8
@ -140,11 +140,15 @@ class SubscriptionSerializer_GET(DynamicModelSerializer):
|
|||||||
Serializer for the Subscription Model.
|
Serializer for the Subscription Model.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
mutators = ArticleMutatorSerializer(many=True)
|
article_title_mutators = ArticleMutatorSerializer(many=True)
|
||||||
|
article_desc_mutators = ArticleMutatorSerializer(many=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Subscription
|
model = Subscription
|
||||||
fields = ("id", "name", "url", "guild_id", "channels_count", "creation_datetime", "extra_notes", "filters", "mutators", "active")
|
fields = (
|
||||||
|
"id", "name", "url", "guild_id", "channels_count", "creation_datetime", "extra_notes",
|
||||||
|
"filters", "article_title_mutators", "article_desc_mutators", "active"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class SubscriptionSerializer_POST(DynamicModelSerializer):
|
class SubscriptionSerializer_POST(DynamicModelSerializer):
|
||||||
@ -154,7 +158,10 @@ class SubscriptionSerializer_POST(DynamicModelSerializer):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Subscription
|
model = Subscription
|
||||||
fields = ("id", "name", "url", "guild_id", "channels_count", "creation_datetime", "extra_notes", "filters", "mutators", "active")
|
fields = (
|
||||||
|
"id", "name", "url", "guild_id", "channels_count", "creation_datetime", "extra_notes",
|
||||||
|
"filters", "article_title_mutators", "article_desc_mutators", "active"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class SavedGuildSerializer(DynamicModelSerializer):
|
class SavedGuildSerializer(DynamicModelSerializer):
|
||||||
|
@ -190,7 +190,10 @@ class Subscription_ListView(generics.ListCreateAPIView):
|
|||||||
# queryset = Subscription.objects.all().order_by("-creation_datetime")
|
# queryset = Subscription.objects.all().order_by("-creation_datetime")
|
||||||
|
|
||||||
filter_backends = [filters.SearchFilter, rest_filters.DjangoFilterBackend, filters.OrderingFilter]
|
filter_backends = [filters.SearchFilter, rest_filters.DjangoFilterBackend, filters.OrderingFilter]
|
||||||
filterset_fields = ["id", "name", "url", "guild_id", "creation_datetime", "extra_notes", "filters", "mutators", "active"]
|
filterset_fields = [
|
||||||
|
"id", "name", "url", "guild_id", "creation_datetime", "extra_notes", "filters",
|
||||||
|
"article_title_mutators", "article_desc_mutators", "active"
|
||||||
|
]
|
||||||
search_fields = ["name", "extra_notes"]
|
search_fields = ["name", "extra_notes"]
|
||||||
ordering_fields = ["creation_datetime", "guild_id"]
|
ordering_fields = ["creation_datetime", "guild_id"]
|
||||||
|
|
||||||
|
@ -4,50 +4,28 @@ from django.db import migrations
|
|||||||
|
|
||||||
def add_mutators(apps, schema_editor):
|
def add_mutators(apps, schema_editor):
|
||||||
ArticleMutator = apps.get_model("home", "ArticleMutator")
|
ArticleMutator = apps.get_model("home", "ArticleMutator")
|
||||||
ArticleMutator.objects.create(name="Uwuify Title", value="UWU_TITLE")
|
ArticleMutator.objects.create(name="Uwuify", value="UWU")
|
||||||
ArticleMutator.objects.create(name="Uwuify Description", value="UWU_DESC")
|
ArticleMutator.objects.create(name="Gothic Script", value="GS")
|
||||||
ArticleMutator.objects.create(name="Gothic Script Title", value="GS_TITLE")
|
ArticleMutator.objects.create(name="Emoji Substitute", value="EMJ")
|
||||||
ArticleMutator.objects.create(name="Gothic Script Description", value="GS_DESC")
|
ArticleMutator.objects.create(name="Zalgo", value="ZGO")
|
||||||
ArticleMutator.objects.create(name="Emoji Substitute Title", value="EMJ_TITLE")
|
ArticleMutator.objects.create(name="Morse Code", value="MC")
|
||||||
ArticleMutator.objects.create(name="Emoji Substitute Description", value="EMJ_DESC")
|
ArticleMutator.objects.create(name="Binary", value="BIN")
|
||||||
ArticleMutator.objects.create(name="Zalgo Title", value="ZGO_TITLE")
|
ArticleMutator.objects.create(name="Hexadecimal", value="HEX")
|
||||||
ArticleMutator.objects.create(name="Zalgo Description", value="ZGO_DESC")
|
ArticleMutator.objects.create(name="Remove Vowels", value="RMV")
|
||||||
ArticleMutator.objects.create(name="Morse Code Title", value="MC_TITLE")
|
ArticleMutator.objects.create(name="Double Characters", value="DBL")
|
||||||
ArticleMutator.objects.create(name="Morse Code Description", value="MC_DESC")
|
ArticleMutator.objects.create(name="Randomly Inserted Emoji", value="RNE")
|
||||||
ArticleMutator.objects.create(name="Binary Title", value="BIN_TITLE")
|
ArticleMutator.objects.create(name="Pirate Speak", value="PIR")
|
||||||
ArticleMutator.objects.create(name="Binary Description", value="BIN_DESC")
|
ArticleMutator.objects.create(name="Valley Girl", value="VAL")
|
||||||
ArticleMutator.objects.create(name="Hexadecimal Title", value="HEX_TITLE")
|
ArticleMutator.objects.create(name="Degeneracy", value="DEG")
|
||||||
ArticleMutator.objects.create(name="Hexadecimal Description", value="HEX_DESC")
|
ArticleMutator.objects.create(name="Cat Speak", value="CAT")
|
||||||
ArticleMutator.objects.create(name="Remove Vowels Title", value="RMV_TITLE")
|
ArticleMutator.objects.create(name="Small Case", value="SML")
|
||||||
ArticleMutator.objects.create(name="Remove Vowels Description", value="RMV_DESC")
|
ArticleMutator.objects.create(name="L33t Sp34k", value="L3")
|
||||||
ArticleMutator.objects.create(name="Double Characters Title", value="DBL_TITLE")
|
ArticleMutator.objects.create(name="Pig Latin", value="PGL")
|
||||||
ArticleMutator.objects.create(name="Double Characters Description", value="DBL_DESC")
|
ArticleMutator.objects.create(name="Upside Down", value="UDT")
|
||||||
ArticleMutator.objects.create(name="Randomly Inserted Emoji Title", value="RNE_TITLE")
|
ArticleMutator.objects.create(name="Reversed", value="REV")
|
||||||
ArticleMutator.objects.create(name="Randomly Inserted Emoji Description", value="RNE_DESC")
|
ArticleMutator.objects.create(name="Randomise", value="RND")
|
||||||
ArticleMutator.objects.create(name="Pirate Speak Title", value="PIR_TITLE")
|
ArticleMutator.objects.create(name="Random Case", value="RNC")
|
||||||
ArticleMutator.objects.create(name="Pirate Speak Description", value="PIR_DESC")
|
ArticleMutator.objects.create(name="Gibberish", value="GIB")
|
||||||
ArticleMutator.objects.create(name="Valley Girl Title", value="VAL_TITLE")
|
|
||||||
ArticleMutator.objects.create(name="Valley Girl Description", value="VAL_DESC")
|
|
||||||
ArticleMutator.objects.create(name="Degeneracy Title", value="DEG_TITLE")
|
|
||||||
ArticleMutator.objects.create(name="Degeneracy Description", value="DEG_DESC")
|
|
||||||
ArticleMutator.objects.create(name="Cat Speak Title", value="CAT_TITLE")
|
|
||||||
ArticleMutator.objects.create(name="Cat Speak Description", value="CAT_DESC")
|
|
||||||
ArticleMutator.objects.create(name="Small Case Title", value="SML_TITLE")
|
|
||||||
ArticleMutator.objects.create(name="Small Case Description", value="SML_DESC")
|
|
||||||
ArticleMutator.objects.create(name="L33t Sp34k Title", value="L3_TITLE")
|
|
||||||
ArticleMutator.objects.create(name="L33t Sp34k Description", value="L3_DESC")
|
|
||||||
ArticleMutator.objects.create(name="Pig Latin Title", value="PGL_TITLE")
|
|
||||||
ArticleMutator.objects.create(name="Pig Latin Description", value="PGL_DESC")
|
|
||||||
ArticleMutator.objects.create(name="Upside Down Title", value="UDT_TITLE")
|
|
||||||
ArticleMutator.objects.create(name="Upside Down Description", value="UDT_DESC")
|
|
||||||
ArticleMutator.objects.create(name="Reversed Title", value="REV_TITLE")
|
|
||||||
ArticleMutator.objects.create(name="Reversed Description", value="REV_DESC")
|
|
||||||
ArticleMutator.objects.create(name="Randomise Title", value="RND_TITLE")
|
|
||||||
ArticleMutator.objects.create(name="Randomise Description", value="RND_DESC")
|
|
||||||
ArticleMutator.objects.create(name="Random Case Title", value="RNC_TITLE")
|
|
||||||
ArticleMutator.objects.create(name="Random Case Description", value="RNC_DESC")
|
|
||||||
ArticleMutator.objects.create(name="Gibberish Title", value="GIB_TITLE")
|
|
||||||
ArticleMutator.objects.create(name="Gibberish Description", value="GIB_DESC")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -0,0 +1,27 @@
|
|||||||
|
# Generated by Django 5.0.4 on 2024-06-25 08:43
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('home', '0006_alter_trackedcontent_guid_alter_trackedcontent_title'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='subscription',
|
||||||
|
name='mutators',
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='subscription',
|
||||||
|
name='article_desc_mutators',
|
||||||
|
field=models.ManyToManyField(blank=True, related_name='desc_mutated_subscriptions', to='home.articlemutator'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='subscription',
|
||||||
|
name='article_title_mutators',
|
||||||
|
field=models.ManyToManyField(blank=True, related_name='title_mutated_subscriptions', to='home.articlemutator'),
|
||||||
|
),
|
||||||
|
]
|
@ -204,7 +204,17 @@ class Subscription(models.Model):
|
|||||||
|
|
||||||
filters = models.ManyToManyField(to="home.Filter", blank=True)
|
filters = models.ManyToManyField(to="home.Filter", blank=True)
|
||||||
|
|
||||||
mutators = models.ManyToManyField(to="home.ArticleMutator", blank=True)
|
article_title_mutators = models.ManyToManyField(
|
||||||
|
to="home.ArticleMutator",
|
||||||
|
related_name="title_mutated_subscriptions",
|
||||||
|
blank=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
article_desc_mutators = models.ManyToManyField(
|
||||||
|
to="home.ArticleMutator",
|
||||||
|
related_name="desc_mutated_subscriptions",
|
||||||
|
blank=True,
|
||||||
|
)
|
||||||
|
|
||||||
active = models.BooleanField(default=True)
|
active = models.BooleanField(default=True)
|
||||||
|
|
||||||
|
@ -160,7 +160,8 @@ async function showEditSubModal(subId) {
|
|||||||
$("#subFormModal input, #subFormModal textarea").val("");
|
$("#subFormModal input, #subFormModal textarea").val("");
|
||||||
$("#subChannels").val("").change();
|
$("#subChannels").val("").change();
|
||||||
$("#subFilters").val("").change();
|
$("#subFilters").val("").change();
|
||||||
$("#subMutators").val("").change();
|
$("#subTitleMutators").val("").change();
|
||||||
|
$("#subDescMutators").val("").change();
|
||||||
$("#subActive").prop("checked", true);
|
$("#subActive").prop("checked", true);
|
||||||
$("#subImagePreview img").attr("src", "").hide();
|
$("#subImagePreview img").attr("src", "").hide();
|
||||||
$("#subImagePreview small").show();
|
$("#subImagePreview small").show();
|
||||||
@ -178,8 +179,11 @@ async function showEditSubModal(subId) {
|
|||||||
$("#subExtraNotes").val(subscription.extra_notes);
|
$("#subExtraNotes").val(subscription.extra_notes);
|
||||||
$("#subActive").prop("checked", subscription.active);
|
$("#subActive").prop("checked", subscription.active);
|
||||||
|
|
||||||
$("#subMutators").val("").change();
|
$("#subTitleMutators").val("").change();
|
||||||
$("#subMutators").val(subscription.mutators.map(mutator => mutator.id)).change();
|
$("#subTitleMutators").val(subscription.article_title_mutators.map(mutator => mutator.id)).change();
|
||||||
|
|
||||||
|
$("#subDescMutators").val("").change();
|
||||||
|
$("#subDescMutators").val(subscription.article_desc_mutators.map(mutator => mutator.id)).change();
|
||||||
|
|
||||||
const channels = await getSubChannels(subscription.id);
|
const channels = await getSubChannels(subscription.id);
|
||||||
$("#subChannels").val("").change();
|
$("#subChannels").val("").change();
|
||||||
@ -201,13 +205,15 @@ $("#subForm").on("submit", async function(event) {
|
|||||||
url = $("#subUrl").val();
|
url = $("#subUrl").val();
|
||||||
guildId = getCurrentlyActiveServer().guild_id;
|
guildId = getCurrentlyActiveServer().guild_id;
|
||||||
extraNotes = $("#subExtraNotes").val();
|
extraNotes = $("#subExtraNotes").val();
|
||||||
uwuify = $("#subUwu").prop("checked");
|
|
||||||
subChannels = $("#subChannels option:selected").toArray().map(channel => channel.value);
|
subChannels = $("#subChannels option:selected").toArray().map(channel => channel.value);
|
||||||
subFilters = $("#subFilters option:selected").toArray().map(filter => parseInt(filter.value));
|
subFilters = $("#subFilters option:selected").toArray().map(filter => parseInt(filter.value));
|
||||||
subMutators = $("#subMutators option:selected").toArray().map(mutator => parseInt(mutator.value));
|
subMutators = {
|
||||||
|
title: $("#subTitleMutators option:selected").toArray().map(mutator => parseInt(mutator.value)),
|
||||||
|
desc: $("#subDescMutators option:selected").toArray().map(mutator => parseInt(mutator.value))
|
||||||
|
}
|
||||||
active = $("#subActive").prop("checked");
|
active = $("#subActive").prop("checked");
|
||||||
|
|
||||||
var subPrimaryKey = await saveSubscription(id, name, url, guildId, extraNotes, uwuify, subFilters, subMutators, active);
|
var subPrimaryKey = await saveSubscription(id, name, url, guildId, extraNotes, subFilters, subMutators, active);
|
||||||
|
|
||||||
await deleteSubChannels(subPrimaryKey);
|
await deleteSubChannels(subPrimaryKey);
|
||||||
subChannels.forEach(async channelId => {
|
subChannels.forEach(async channelId => {
|
||||||
@ -221,15 +227,15 @@ $("#subForm").on("submit", async function(event) {
|
|||||||
$("#subFormModal").modal("hide");
|
$("#subFormModal").modal("hide");
|
||||||
});
|
});
|
||||||
|
|
||||||
async function saveSubscription(id, name, url, guildId, extraNotes, uwuify, filters, mutators, active, handleErrorMsg=true) {
|
async function saveSubscription(id, name, url, guildId, extraNotes, filters, mutators, active, handleErrorMsg=true) {
|
||||||
var formData = new FormData();
|
var formData = new FormData();
|
||||||
formData.append("name", name);
|
formData.append("name", name);
|
||||||
formData.append("url", url);
|
formData.append("url", url);
|
||||||
formData.append("guild_id", guildId);
|
formData.append("guild_id", guildId);
|
||||||
formData.append("extra_notes", extraNotes);
|
formData.append("extra_notes", extraNotes);
|
||||||
formData.append("uwuify", uwuify)
|
|
||||||
filters.forEach(filter => formData.append("filters", filter));
|
filters.forEach(filter => formData.append("filters", filter));
|
||||||
mutators.forEach(mutator => formData.append("mutators", mutator));
|
mutators.title.forEach(mutator => formData.append("article_title_mutators", mutator));
|
||||||
|
mutators.desc.forEach(mutator => formData.append("article_desc_mutators", mutator));
|
||||||
formData.append("active", active);
|
formData.append("active", active);
|
||||||
|
|
||||||
var response;
|
var response;
|
||||||
@ -507,23 +513,23 @@ async function loadChannelOptions(guildId) {
|
|||||||
async function loadMutatorOptions() {
|
async function loadMutatorOptions() {
|
||||||
|
|
||||||
// Disable input while options are loading
|
// Disable input while options are loading
|
||||||
$("#subMutators").prop("disabled", true);
|
$(".sub-mutators-field").prop("disabled", true);
|
||||||
|
|
||||||
// Delete existing options
|
// Delete existing options
|
||||||
$("#subMutators option").each(function() {
|
$(".sub-mutators-field option").each(function() {
|
||||||
if ($(this).val())
|
if ($(this).val())
|
||||||
$(this).remove();
|
$(this).remove();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Clear select2 input
|
// Clear select2 input
|
||||||
$("#subMutators").val("").change();
|
$(".sub-mutators-field").val("").change();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const mutators = await getMutators();
|
const mutators = await getMutators();
|
||||||
console.log(JSON.stringify(mutators));
|
console.log(JSON.stringify(mutators));
|
||||||
|
|
||||||
mutators.forEach(filter => {
|
mutators.forEach(filter => {
|
||||||
$("#subMutators").append($("<option>", {
|
$(".sub-mutators-field").append($("<option>", {
|
||||||
text: filter.name,
|
text: filter.name,
|
||||||
value: filter.id
|
value: filter.id
|
||||||
}));
|
}));
|
||||||
@ -535,7 +541,7 @@ async function loadMutatorOptions() {
|
|||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
// Re-enable the input
|
// Re-enable the input
|
||||||
$("#subMutators").prop("disabled", false);
|
$(".sub-mutators-field").prop("disabled", false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,15 +84,15 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-6 pe-lg-4">
|
<div class="col-lg-6 pe-lg-4">
|
||||||
<div class="mb-4">
|
<div class="mb-4">
|
||||||
<label for="subMutators" class="form-label">Title Mutators</label>
|
<label for="subTitleMutators" class="form-label">Title Mutators</label>
|
||||||
<select name="subMutators" id="subMutators" class="select-2" multiple data-dropdownparent="#subAdvancedModal" tabindex="6"></select>
|
<select name="subTitleMutators" id="subTitleMutators" class="select-2 sub-mutators-field" multiple data-dropdownparent="#subAdvancedModal" tabindex="6"></select>
|
||||||
<div class="form-text">Apply mutators to article titles.</div>
|
<div class="form-text">Apply mutators to article titles.</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-6 ps-lg-4">
|
<div class="col-lg-6 ps-lg-4">
|
||||||
<div class="mb-4">
|
<div class="mb-4">
|
||||||
<label for="subDescMutators" class="form-label">Description Mutators</label>
|
<label for="subDescMutators" class="form-label">Description Mutators</label>
|
||||||
<select name="subDescMutators" id="subDescMutators" class="select-2" multiple data-dropdownparent="#subAdvancedModal" tabindex="6"></select>
|
<select name="subDescMutators" id="subDescMutators" class="select-2 sub-mutators-field" multiple data-dropdownparent="#subAdvancedModal" tabindex="6"></select>
|
||||||
<div class="form-text">Apply mutators to article descriptions.</div>
|
<div class="form-text">Apply mutators to article descriptions.</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user