image fetch attribute
This commit is contained in:
parent
59a0a87ec7
commit
f3abe9289a
@ -147,7 +147,7 @@ class SubscriptionSerializer_GET(DynamicModelSerializer):
|
|||||||
model = Subscription
|
model = Subscription
|
||||||
fields = (
|
fields = (
|
||||||
"id", "name", "url", "guild_id", "channels_count", "creation_datetime", "extra_notes",
|
"id", "name", "url", "guild_id", "channels_count", "creation_datetime", "extra_notes",
|
||||||
"filters", "article_title_mutators", "article_desc_mutators", "embed_colour", "active"
|
"filters", "article_title_mutators", "article_desc_mutators", "article_fetch_image", "embed_colour", "active"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -160,7 +160,7 @@ class SubscriptionSerializer_POST(DynamicModelSerializer):
|
|||||||
model = Subscription
|
model = Subscription
|
||||||
fields = (
|
fields = (
|
||||||
"id", "name", "url", "guild_id", "channels_count", "creation_datetime", "extra_notes",
|
"id", "name", "url", "guild_id", "channels_count", "creation_datetime", "extra_notes",
|
||||||
"filters", "article_title_mutators", "article_desc_mutators", "embed_colour", "active"
|
"filters", "article_title_mutators", "article_desc_mutators", "article_fetch_image", "embed_colour", "active"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -183,7 +183,7 @@ class TrackedContentSerializer_GET(DynamicModelSerializer):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = TrackedContent
|
model = TrackedContent
|
||||||
fields = ("id", "guid", "title", "url", "subscription", "blocked", "creation_datetime")
|
fields = ("id", "guid", "title", "url", "subscription", "channel_id", "blocked", "creation_datetime")
|
||||||
|
|
||||||
class TrackedContentSerializer_POST(DynamicModelSerializer):
|
class TrackedContentSerializer_POST(DynamicModelSerializer):
|
||||||
"""
|
"""
|
||||||
@ -192,4 +192,4 @@ class TrackedContentSerializer_POST(DynamicModelSerializer):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = TrackedContent
|
model = TrackedContent
|
||||||
fields = ("id", "guid", "title", "url", "subscription", "blocked", "creation_datetime")
|
fields = ("id", "guid", "title", "url", "subscription", "channel_id", "blocked", "creation_datetime")
|
||||||
|
@ -403,7 +403,7 @@ class TrackedContent_ListView(generics.ListCreateAPIView):
|
|||||||
queryset = TrackedContent.objects.all().order_by("-creation_datetime")
|
queryset = TrackedContent.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 = ["guid", "title", "url", "subscription", "subscription__guild_id", "blocked", "creation_datetime"]
|
filterset_fields = ["guid", "title", "url", "subscription", "subscription__guild_id", "channel_id", "blocked", "creation_datetime"]
|
||||||
|
|
||||||
read_serializer_class = TrackedContentSerializer_GET
|
read_serializer_class = TrackedContentSerializer_GET
|
||||||
write_serializer_class = TrackedContentSerializer_POST
|
write_serializer_class = TrackedContentSerializer_POST
|
||||||
|
@ -0,0 +1,34 @@
|
|||||||
|
# Generated by Django 5.0.4 on 2024-07-05 13:29
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('home', '0011_remove_trackedcontent_unique_guid_guild_id_pair_and_more'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveConstraint(
|
||||||
|
model_name='trackedcontent',
|
||||||
|
name='unique guid & guild_id pair',
|
||||||
|
),
|
||||||
|
migrations.RemoveConstraint(
|
||||||
|
model_name='trackedcontent',
|
||||||
|
name='unique url & guild_id pair',
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='subscription',
|
||||||
|
name='article_fetch_image',
|
||||||
|
field=models.BooleanField(default=True, help_text='Will the resulting article have an image?'),
|
||||||
|
),
|
||||||
|
migrations.AddConstraint(
|
||||||
|
model_name='trackedcontent',
|
||||||
|
constraint=models.UniqueConstraint(fields=('guid', 'channel_id'), name='unique guid & channel_id pair'),
|
||||||
|
),
|
||||||
|
migrations.AddConstraint(
|
||||||
|
model_name='trackedcontent',
|
||||||
|
constraint=models.UniqueConstraint(fields=('url', 'channel_id'), name='unique url & channel_id pair'),
|
||||||
|
),
|
||||||
|
]
|
@ -230,6 +230,11 @@ class Subscription(models.Model):
|
|||||||
blank=True
|
blank=True
|
||||||
)
|
)
|
||||||
|
|
||||||
|
article_fetch_image = models.BooleanField(
|
||||||
|
default=True,
|
||||||
|
help_text="Will the resulting article have an image?"
|
||||||
|
)
|
||||||
|
|
||||||
active = models.BooleanField(default=True)
|
active = models.BooleanField(default=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -280,6 +285,8 @@ class TrackedContent(models.Model):
|
|||||||
|
|
||||||
subscription = models.ForeignKey(to=Subscription, on_delete=models.CASCADE)
|
subscription = models.ForeignKey(to=Subscription, on_delete=models.CASCADE)
|
||||||
|
|
||||||
|
channel_id = models.CharField(max_length=128)
|
||||||
|
|
||||||
blocked = models.BooleanField(default=False)
|
blocked = models.BooleanField(default=False)
|
||||||
|
|
||||||
creation_datetime = models.DateTimeField(
|
creation_datetime = models.DateTimeField(
|
||||||
@ -287,8 +294,6 @@ class TrackedContent(models.Model):
|
|||||||
editable=False
|
editable=False
|
||||||
)
|
)
|
||||||
|
|
||||||
channel_id = models.CharField(max_length=128)
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
||||||
verbose_name = "tracked content"
|
verbose_name = "tracked content"
|
||||||
|
@ -148,6 +148,7 @@ $("#subTable").on("change", ".sub-toggle-active", async function () {
|
|||||||
desc: sub.article_desc_mutators.map(mutator => mutator.id)
|
desc: sub.article_desc_mutators.map(mutator => mutator.id)
|
||||||
},
|
},
|
||||||
sub.embed_colour,
|
sub.embed_colour,
|
||||||
|
sub.article_fetch_image,
|
||||||
active,
|
active,
|
||||||
handleErrorMsg=false
|
handleErrorMsg=false
|
||||||
);
|
);
|
||||||
@ -195,6 +196,7 @@ async function showEditSubModal(subId) {
|
|||||||
// $("#subImagePreview small").show();
|
// $("#subImagePreview small").show();
|
||||||
|
|
||||||
$("#subResetEmbedColour").click();
|
$("#subResetEmbedColour").click();
|
||||||
|
$("#subArticleFetchImage").prop("checked", true);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$("#subFormModal .form-create, #subAdvancedModal .form-create").hide();
|
$("#subFormModal .form-create, #subAdvancedModal .form-create").hide();
|
||||||
@ -223,6 +225,7 @@ async function showEditSubModal(subId) {
|
|||||||
$("#subFilters").val(subscription.filters).change();
|
$("#subFilters").val(subscription.filters).change();
|
||||||
|
|
||||||
subSetHexColour(`#${subscription.embed_colour}`);
|
subSetHexColour(`#${subscription.embed_colour}`);
|
||||||
|
$("#subArticleFetchImage").prop("checked", subscription.article_fetch_image);
|
||||||
}
|
}
|
||||||
|
|
||||||
$("#subId").val(subId);
|
$("#subId").val(subId);
|
||||||
@ -244,9 +247,10 @@ $("#subForm").on("submit", async function(event) {
|
|||||||
desc: $("#subDescMutators option:selected").toArray().map(mutator => parseInt(mutator.value))
|
desc: $("#subDescMutators option:selected").toArray().map(mutator => parseInt(mutator.value))
|
||||||
}
|
}
|
||||||
subEmbedColour = $("#subEmbedColour").val().split("#")[1];
|
subEmbedColour = $("#subEmbedColour").val().split("#")[1];
|
||||||
|
articleFetchImage = $("#subArticleFetchImage").prop("checked")
|
||||||
active = $("#subActive").prop("checked");
|
active = $("#subActive").prop("checked");
|
||||||
|
|
||||||
var subPrimaryKey = await saveSubscription(id, name, url, guildId, extraNotes, subFilters, subMutators, subEmbedColour, active);
|
var subPrimaryKey = await saveSubscription(id, name, url, guildId, extraNotes, subFilters, subMutators, subEmbedColour, articleFetchImage, active);
|
||||||
|
|
||||||
if (!subPrimaryKey) {
|
if (!subPrimaryKey) {
|
||||||
alert("prevented /subscriptions/false/subchannels");
|
alert("prevented /subscriptions/false/subchannels");
|
||||||
@ -265,7 +269,7 @@ $("#subForm").on("submit", async function(event) {
|
|||||||
$("#subFormModal").modal("hide");
|
$("#subFormModal").modal("hide");
|
||||||
});
|
});
|
||||||
|
|
||||||
async function saveSubscription(id, name, url, guildId, extraNotes, filters, mutators, embedColour, active, handleErrorMsg=true) {
|
async function saveSubscription(id, name, url, guildId, extraNotes, filters, mutators, embedColour, articleFetchImage, 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);
|
||||||
@ -275,6 +279,7 @@ async function saveSubscription(id, name, url, guildId, extraNotes, filters, mut
|
|||||||
mutators.title.forEach(mutator => formData.append("article_title_mutators", mutator));
|
mutators.title.forEach(mutator => formData.append("article_title_mutators", mutator));
|
||||||
mutators.desc.forEach(mutator => formData.append("article_desc_mutators", mutator));
|
mutators.desc.forEach(mutator => formData.append("article_desc_mutators", mutator));
|
||||||
formData.append("embed_colour", embedColour);
|
formData.append("embed_colour", embedColour);
|
||||||
|
formData.append("article_fetch_image", articleFetchImage)
|
||||||
formData.append("active", active);
|
formData.append("active", active);
|
||||||
|
|
||||||
var response;
|
var response;
|
||||||
|
@ -123,6 +123,15 @@
|
|||||||
<div class="form-text">Colour of each article's embed in Discord.</div>
|
<div class="form-text">Colour of each article's embed in Discord.</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-lg-6 ps-lg-4">
|
||||||
|
<div class="form-switch ps-0">
|
||||||
|
<label for="subArticleFetchImage" class="form-check-label mb-2">Fetch & Embed Article Images?</label>
|
||||||
|
<br>
|
||||||
|
<input type="checkbox" id="subArticleFetchImage" name="subArticleFetchImage" class="form-check-input ms-0 mt-0" tabindex="6">
|
||||||
|
<br>
|
||||||
|
<div class="form-text">Not all articles have images, but should PYRSS try to find and attach them to the embed?</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer px-4">
|
<div class="modal-footer px-4">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user