From aa05442dd2deda9a350e1ca33d1ece3fbdb054c6 Mon Sep 17 00:00:00 2001
From: Emmanuelle Delescolle
Date: Sat, 18 Jul 2020 19:01:41 +0200
Subject: [PATCH] :heavy_plus_sign: Add media_link field for podcast entries
---
feedreader/admin.py | 1 +
.../migrations/0002_add_media_link_field.py | 18 ++++++++++++++++++
feedreader/models.py | 4 +++-
.../templates/feedreader/entry_list.html | 5 +++++
feedreader/utils.py | 2 ++
5 files changed, 29 insertions(+), 1 deletion(-)
create mode 100644 feedreader/migrations/0002_add_media_link_field.py
diff --git a/feedreader/admin.py b/feedreader/admin.py
index b9e2661..f6f508c 100644
--- a/feedreader/admin.py
+++ b/feedreader/admin.py
@@ -47,6 +47,7 @@ class EntryAdmin(admin.ModelAdmin):
'fields': (('link',),
('title', 'feed',),
('description',),
+ ('media_link',),
('published_time', 'read_flag'),
)
}),
diff --git a/feedreader/migrations/0002_add_media_link_field.py b/feedreader/migrations/0002_add_media_link_field.py
new file mode 100644
index 0000000..4d7f188
--- /dev/null
+++ b/feedreader/migrations/0002_add_media_link_field.py
@@ -0,0 +1,18 @@
+# Generated by Django 3.0.8 on 2020-07-18 16:22
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('feedreader', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='entry',
+ name='media_link',
+ field=models.URLField(blank=True, max_length=2000, null=True),
+ ),
+ ]
diff --git a/feedreader/models.py b/feedreader/models.py
index 0c4c7ed..e447340 100644
--- a/feedreader/models.py
+++ b/feedreader/models.py
@@ -97,7 +97,6 @@ def __str__(self):
def num_unread_entries(self):
return Entry.objects.filter(feed=self, read_flag=False).count()
-
def save(self, *args, **kwargs):
"""Poll new Feed"""
try:
@@ -131,6 +130,8 @@ class Entry(models.Model):
Description of entry.
updated_time : date_time
When entry was last updated.
+ media_link: char
+ URL of linked media
"""
feed = models.ForeignKey(Feed, on_delete=models.CASCADE)
title = models.CharField(max_length=2000, blank=True, null=True)
@@ -138,6 +139,7 @@ class Entry(models.Model):
description = models.TextField(blank=True, null=True)
published_time = models.DateTimeField(auto_now_add=True)
read_flag = models.BooleanField(default=False)
+ media_link = models.URLField(max_length=2000, blank=True, null=True)
class Meta:
ordering = ['-published_time']
diff --git a/feedreader/templates/feedreader/entry_list.html b/feedreader/templates/feedreader/entry_list.html
index c87c97d..9f04de5 100644
--- a/feedreader/templates/feedreader/entry_list.html
+++ b/feedreader/templates/feedreader/entry_list.html
@@ -11,6 +11,11 @@
{% trans 'on' %} {{ entry.published_time|date:"d M Y" }} ({{ entry.published_time|timesince }} ago)
{{ entry.description|safe }}
+ {% if entry.media_link %}
+
+ {% endif %}
{% endfor %}
{% else %}
diff --git a/feedreader/utils.py b/feedreader/utils.py
index 3075bef..30d2417 100644
--- a/feedreader/utils.py
+++ b/feedreader/utils.py
@@ -198,4 +198,6 @@ def poll_feed(db_feed, verbose=False):
db_entry.description = entry.description
else:
db_entry.description = html.escape(entry.description)
+ if len(entry.enclosures) > 0:
+ db_entry.media_link = entry.enclosures[0].get('href', None)
db_entry.save()