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.
|
||||
"""
|
||||
|
||||
mutators = ArticleMutatorSerializer(many=True)
|
||||
article_title_mutators = ArticleMutatorSerializer(many=True)
|
||||
article_desc_mutators = ArticleMutatorSerializer(many=True)
|
||||
|
||||
class Meta:
|
||||
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):
|
||||
@ -154,7 +158,10 @@ class SubscriptionSerializer_POST(DynamicModelSerializer):
|
||||
|
||||
class Meta:
|
||||
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):
|
||||
|
@ -190,7 +190,10 @@ class Subscription_ListView(generics.ListCreateAPIView):
|
||||
# queryset = Subscription.objects.all().order_by("-creation_datetime")
|
||||
|
||||
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"]
|
||||
ordering_fields = ["creation_datetime", "guild_id"]
|
||||
|
||||
|
@ -4,50 +4,28 @@ from django.db import migrations
|
||||
|
||||
def add_mutators(apps, schema_editor):
|
||||
ArticleMutator = apps.get_model("home", "ArticleMutator")
|
||||
ArticleMutator.objects.create(name="Uwuify Title", value="UWU_TITLE")
|
||||
ArticleMutator.objects.create(name="Uwuify Description", value="UWU_DESC")
|
||||
ArticleMutator.objects.create(name="Gothic Script Title", value="GS_TITLE")
|
||||
ArticleMutator.objects.create(name="Gothic Script Description", value="GS_DESC")
|
||||
ArticleMutator.objects.create(name="Emoji Substitute Title", value="EMJ_TITLE")
|
||||
ArticleMutator.objects.create(name="Emoji Substitute Description", value="EMJ_DESC")
|
||||
ArticleMutator.objects.create(name="Zalgo Title", value="ZGO_TITLE")
|
||||
ArticleMutator.objects.create(name="Zalgo Description", value="ZGO_DESC")
|
||||
ArticleMutator.objects.create(name="Morse Code Title", value="MC_TITLE")
|
||||
ArticleMutator.objects.create(name="Morse Code Description", value="MC_DESC")
|
||||
ArticleMutator.objects.create(name="Binary Title", value="BIN_TITLE")
|
||||
ArticleMutator.objects.create(name="Binary Description", value="BIN_DESC")
|
||||
ArticleMutator.objects.create(name="Hexadecimal Title", value="HEX_TITLE")
|
||||
ArticleMutator.objects.create(name="Hexadecimal Description", value="HEX_DESC")
|
||||
ArticleMutator.objects.create(name="Remove Vowels Title", value="RMV_TITLE")
|
||||
ArticleMutator.objects.create(name="Remove Vowels Description", value="RMV_DESC")
|
||||
ArticleMutator.objects.create(name="Double Characters Title", value="DBL_TITLE")
|
||||
ArticleMutator.objects.create(name="Double Characters Description", value="DBL_DESC")
|
||||
ArticleMutator.objects.create(name="Randomly Inserted Emoji Title", value="RNE_TITLE")
|
||||
ArticleMutator.objects.create(name="Randomly Inserted Emoji Description", value="RNE_DESC")
|
||||
ArticleMutator.objects.create(name="Pirate Speak Title", value="PIR_TITLE")
|
||||
ArticleMutator.objects.create(name="Pirate Speak Description", value="PIR_DESC")
|
||||
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")
|
||||
ArticleMutator.objects.create(name="Uwuify", value="UWU")
|
||||
ArticleMutator.objects.create(name="Gothic Script", value="GS")
|
||||
ArticleMutator.objects.create(name="Emoji Substitute", value="EMJ")
|
||||
ArticleMutator.objects.create(name="Zalgo", value="ZGO")
|
||||
ArticleMutator.objects.create(name="Morse Code", value="MC")
|
||||
ArticleMutator.objects.create(name="Binary", value="BIN")
|
||||
ArticleMutator.objects.create(name="Hexadecimal", value="HEX")
|
||||
ArticleMutator.objects.create(name="Remove Vowels", value="RMV")
|
||||
ArticleMutator.objects.create(name="Double Characters", value="DBL")
|
||||
ArticleMutator.objects.create(name="Randomly Inserted Emoji", value="RNE")
|
||||
ArticleMutator.objects.create(name="Pirate Speak", value="PIR")
|
||||
ArticleMutator.objects.create(name="Valley Girl", value="VAL")
|
||||
ArticleMutator.objects.create(name="Degeneracy", value="DEG")
|
||||
ArticleMutator.objects.create(name="Cat Speak", value="CAT")
|
||||
ArticleMutator.objects.create(name="Small Case", value="SML")
|
||||
ArticleMutator.objects.create(name="L33t Sp34k", value="L3")
|
||||
ArticleMutator.objects.create(name="Pig Latin", value="PGL")
|
||||
ArticleMutator.objects.create(name="Upside Down", value="UDT")
|
||||
ArticleMutator.objects.create(name="Reversed", value="REV")
|
||||
ArticleMutator.objects.create(name="Randomise", value="RND")
|
||||
ArticleMutator.objects.create(name="Random Case", value="RNC")
|
||||
ArticleMutator.objects.create(name="Gibberish", value="GIB")
|
||||
|
||||
|
||||
|
||||
|
@ -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)
|
||||
|
||||
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)
|
||||
|
||||
|
@ -160,7 +160,8 @@ async function showEditSubModal(subId) {
|
||||
$("#subFormModal input, #subFormModal textarea").val("");
|
||||
$("#subChannels").val("").change();
|
||||
$("#subFilters").val("").change();
|
||||
$("#subMutators").val("").change();
|
||||
$("#subTitleMutators").val("").change();
|
||||
$("#subDescMutators").val("").change();
|
||||
$("#subActive").prop("checked", true);
|
||||
$("#subImagePreview img").attr("src", "").hide();
|
||||
$("#subImagePreview small").show();
|
||||
@ -178,8 +179,11 @@ async function showEditSubModal(subId) {
|
||||
$("#subExtraNotes").val(subscription.extra_notes);
|
||||
$("#subActive").prop("checked", subscription.active);
|
||||
|
||||
$("#subMutators").val("").change();
|
||||
$("#subMutators").val(subscription.mutators.map(mutator => mutator.id)).change();
|
||||
$("#subTitleMutators").val("").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);
|
||||
$("#subChannels").val("").change();
|
||||
@ -201,13 +205,15 @@ $("#subForm").on("submit", async function(event) {
|
||||
url = $("#subUrl").val();
|
||||
guildId = getCurrentlyActiveServer().guild_id;
|
||||
extraNotes = $("#subExtraNotes").val();
|
||||
uwuify = $("#subUwu").prop("checked");
|
||||
subChannels = $("#subChannels option:selected").toArray().map(channel => channel.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");
|
||||
|
||||
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);
|
||||
subChannels.forEach(async channelId => {
|
||||
@ -221,15 +227,15 @@ $("#subForm").on("submit", async function(event) {
|
||||
$("#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();
|
||||
formData.append("name", name);
|
||||
formData.append("url", url);
|
||||
formData.append("guild_id", guildId);
|
||||
formData.append("extra_notes", extraNotes);
|
||||
formData.append("uwuify", uwuify)
|
||||
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);
|
||||
|
||||
var response;
|
||||
@ -507,23 +513,23 @@ async function loadChannelOptions(guildId) {
|
||||
async function loadMutatorOptions() {
|
||||
|
||||
// Disable input while options are loading
|
||||
$("#subMutators").prop("disabled", true);
|
||||
$(".sub-mutators-field").prop("disabled", true);
|
||||
|
||||
// Delete existing options
|
||||
$("#subMutators option").each(function() {
|
||||
$(".sub-mutators-field option").each(function() {
|
||||
if ($(this).val())
|
||||
$(this).remove();
|
||||
});
|
||||
|
||||
// Clear select2 input
|
||||
$("#subMutators").val("").change();
|
||||
$(".sub-mutators-field").val("").change();
|
||||
|
||||
try {
|
||||
const mutators = await getMutators();
|
||||
console.log(JSON.stringify(mutators));
|
||||
|
||||
mutators.forEach(filter => {
|
||||
$("#subMutators").append($("<option>", {
|
||||
$(".sub-mutators-field").append($("<option>", {
|
||||
text: filter.name,
|
||||
value: filter.id
|
||||
}));
|
||||
@ -535,7 +541,7 @@ async function loadMutatorOptions() {
|
||||
}
|
||||
finally {
|
||||
// Re-enable the input
|
||||
$("#subMutators").prop("disabled", false);
|
||||
$(".sub-mutators-field").prop("disabled", false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -84,15 +84,15 @@
|
||||
<div class="row">
|
||||
<div class="col-lg-6 pe-lg-4">
|
||||
<div class="mb-4">
|
||||
<label for="subMutators" class="form-label">Title Mutators</label>
|
||||
<select name="subMutators" id="subMutators" class="select-2" multiple data-dropdownparent="#subAdvancedModal" tabindex="6"></select>
|
||||
<label for="subTitleMutators" class="form-label">Title Mutators</label>
|
||||
<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>
|
||||
</div>
|
||||
<div class="col-lg-6 ps-lg-4">
|
||||
<div class="mb-4">
|
||||
<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>
|
||||
</div>
|
||||
|
Loading…
x
Reference in New Issue
Block a user