diff --git a/apps/api/serializers.py b/apps/api/serializers.py index f6bee40..3dd57fe 100644 --- a/apps/api/serializers.py +++ b/apps/api/serializers.py @@ -135,7 +135,7 @@ class SubscriptionSerializer(DynamicModelSerializer): class Meta: model = Subscription - fields = ("id", "name", "url", "guild_id", "channels_count", "creation_datetime", "extra_notes", "filters", "active") + fields = ("id", "name", "url", "guild_id", "channels_count", "creation_datetime", "extra_notes", "uwuify", "filters", "active") class SavedGuildSerializer(DynamicModelSerializer): diff --git a/apps/home/migrations/0004_subscription_uwuify.py b/apps/home/migrations/0004_subscription_uwuify.py new file mode 100644 index 0000000..b875325 --- /dev/null +++ b/apps/home/migrations/0004_subscription_uwuify.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0.4 on 2024-06-15 21:47 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0003_filter_whitelist'), + ] + + operations = [ + migrations.AddField( + model_name='subscription', + name='uwuify', + field=models.BooleanField(default=False), + ), + ] diff --git a/apps/home/migrations/0005_alter_trackedcontent_url.py b/apps/home/migrations/0005_alter_trackedcontent_url.py new file mode 100644 index 0000000..7fccba9 --- /dev/null +++ b/apps/home/migrations/0005_alter_trackedcontent_url.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0.4 on 2024-06-15 22:44 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0004_subscription_uwuify'), + ] + + operations = [ + migrations.AlterField( + model_name='trackedcontent', + name='url', + field=models.URLField(unique=True), + ), + ] diff --git a/apps/home/models.py b/apps/home/models.py index 8c0ca53..92af49e 100644 --- a/apps/home/models.py +++ b/apps/home/models.py @@ -202,6 +202,8 @@ class Subscription(models.Model): blank=True, ) + uwuify = models.BooleanField(default=False) + filters = models.ManyToManyField(to="home.Filter", blank=True) active = models.BooleanField(default=True) @@ -251,7 +253,7 @@ class TrackedContent(models.Model): title = models.CharField(max_length=128) - url = models.URLField() + url = models.URLField(unique=True) subscription = models.ForeignKey(to=Subscription, on_delete=models.CASCADE) diff --git a/apps/static/js/home/subscriptions.js b/apps/static/js/home/subscriptions.js index 1b14868..ca14dd6 100644 --- a/apps/static/js/home/subscriptions.js +++ b/apps/static/js/home/subscriptions.js @@ -149,6 +149,7 @@ async function showEditSubModal(subId) { $("#subFormModal .form-edit").hide(); $("#subChannels").val("").change(); $("#subFilters").val("").change(); + $("#subUwu").prop("checked", false); $("#subActive").prop("checked", true); $("#subImagePreview img").attr("src", "").hide(); $("#subImagePreview small").show(); @@ -161,6 +162,7 @@ async function showEditSubModal(subId) { $("#subName").val(subscription.name); $("#subUrl").val(subscription.url); $("#subExtraNotes").val(subscription.extra_notes); + $("#subUwu").prop("checked", subscription.uwuify); $("#subActive").prop("checked", subscription.active); $("#subFormModal .form-create").hide(); $("#subFormModal .form-edit").show(); @@ -185,13 +187,14 @@ $("#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)); active = $("#subActive").prop("checked"); // alert(JSON.stringify(subFilters, null, 4)); - var subPrimaryKey = await saveSubscription(id, name, url, guildId, extraNotes, subFilters, active); + var subPrimaryKey = await saveSubscription(id, name, url, guildId, extraNotes, uwuify, subFilters, active); await deleteSubChannels(subPrimaryKey); subChannels.forEach(async channelId => { @@ -205,12 +208,13 @@ $("#subForm").on("submit", async function(event) { $("#subFormModal").modal("hide"); }); -async function saveSubscription(id, name, url, guildId, extraNotes, filters, active, handleErrorMsg=true) { +async function saveSubscription(id, name, url, guildId, extraNotes, uwuify, filters, 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)); formData.append("active", active); diff --git a/apps/templates/home/includes/submodal.html b/apps/templates/home/includes/submodal.html index 2088c1f..90dc07f 100644 --- a/apps/templates/home/includes/submodal.html +++ b/apps/templates/home/includes/submodal.html @@ -39,13 +39,20 @@
Filters to apply to this subscription's content.
-
+


Inactive subscriptions wont be processed.
+
+ +
+ +
+
Uwu?
+