From 30b48eb41a9515feaf7dbc5cd4eb8847371b237c Mon Sep 17 00:00:00 2001 From: François Schmidts Date: Mon, 6 Jul 2015 21:21:52 +0200 Subject: adding feed icons on feed pages --- pyaggr3g470r/lib/article_utils.py | 8 +++++--- pyaggr3g470r/templates/admin/user.html | 4 ++-- pyaggr3g470r/templates/feeds.html | 5 ++++- pyaggr3g470r/templates/inactives.html | 9 +++++++-- pyaggr3g470r/views/feed.py | 3 ++- 5 files changed, 20 insertions(+), 9 deletions(-) (limited to 'pyaggr3g470r') diff --git a/pyaggr3g470r/lib/article_utils.py b/pyaggr3g470r/lib/article_utils.py index 3c642167..79ac34f5 100644 --- a/pyaggr3g470r/lib/article_utils.py +++ b/pyaggr3g470r/lib/article_utils.py @@ -35,6 +35,8 @@ def extract_id(entry, keys=[('link', 'link'), def construct_article(entry, feed): + if hasattr(feed, 'dump'): # this way can be a sqlalchemy obj or a dict + feed = feed.dump() "Safe method to transorm a feedparser entry into an article" now = datetime.now() @@ -63,10 +65,10 @@ def construct_article(entry, feed): logger.warning("Unable to get the real URL of %s. Error: %s", article_link, error) - return {'feed_id': feed.id, - 'user_id': feed.user_id, + return {'feed_id': feed['id'], + 'user_id': feed['user_id'], 'entry_id': extract_id(entry).get('entry_id', None), - 'link': entry.get('link', feed.site_link), + 'link': entry.get('link', feed['site_link']), 'title': entry.get('title', 'No title'), 'readed': False, 'like': False, 'content': content, diff --git a/pyaggr3g470r/templates/admin/user.html b/pyaggr3g470r/templates/admin/user.html index e50741ee..21bcd6b6 100644 --- a/pyaggr3g470r/templates/admin/user.html +++ b/pyaggr3g470r/templates/admin/user.html @@ -23,7 +23,7 @@ # - {{ _('Name') }} + {{ _('Title') }} {{ _('Feed link') }} {{ _('Site link') }} {{ _('(unread) articles') }} @@ -34,7 +34,7 @@ {% for feed in user.feeds|sort(attribute="title") %} {{ loop.index }} - {{ feed.title }} + {%if feed.icon%}{%endif%}{{ feed.title }} {{ feed.link }} {{ feed.site_link }} ( {{ unread_article_count.get(feed.id, 0) }} ) {{ article_count.get(feed.id, 0) }} diff --git a/pyaggr3g470r/templates/feeds.html b/pyaggr3g470r/templates/feeds.html index 789decf5..20e0cccb 100644 --- a/pyaggr3g470r/templates/feeds.html +++ b/pyaggr3g470r/templates/feeds.html @@ -28,7 +28,10 @@ {% endif %} - {{ feed.title }} + + {% if feed.icon %}{% endif %} + {{ feed.title }} + {{ feed.site_link }} ( {{ unread_article_count.get(feed.id, 0) }} ) {{ article_count.get(feed.id, 0) }} diff --git a/pyaggr3g470r/templates/inactives.html b/pyaggr3g470r/templates/inactives.html index 6a4ff055..eb546eca 100644 --- a/pyaggr3g470r/templates/inactives.html +++ b/pyaggr3g470r/templates/inactives.html @@ -9,8 +9,13 @@
{% if inactives != [] %} {% else %} diff --git a/pyaggr3g470r/views/feed.py b/pyaggr3g470r/views/feed.py index 3556d7c7..18e110af 100644 --- a/pyaggr3g470r/views/feed.py +++ b/pyaggr3g470r/views/feed.py @@ -189,7 +189,8 @@ def process_form(feed_id=None): @feed_bp.route('/icon/', methods=['GET']) @login_required def icon(feed_id): - icon = FeedController(g.user.id).get(id=feed_id).icon + icon = FeedController(None if g.user.is_admin() else g.user.id)\ + .get(id=feed_id).icon etag = md5(icon.encode('utf8')).hexdigest() headers = {'Cache-Control': 'max-age=86400', 'ETag': etag} if request.headers.get('if-none-match') == etag: -- cgit From c2f8aad7e3b849ebad7f5487b106bdd83256d140 Mon Sep 17 00:00:00 2001 From: François Schmidts Date: Mon, 6 Jul 2015 21:49:50 +0200 Subject: important fix, the retrieved_date was always now, leading to unmatchable article (added again and again) --- pyaggr3g470r/lib/article_utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'pyaggr3g470r') diff --git a/pyaggr3g470r/lib/article_utils.py b/pyaggr3g470r/lib/article_utils.py index 79ac34f5..115b6058 100644 --- a/pyaggr3g470r/lib/article_utils.py +++ b/pyaggr3g470r/lib/article_utils.py @@ -38,7 +38,7 @@ def construct_article(entry, feed): if hasattr(feed, 'dump'): # this way can be a sqlalchemy obj or a dict feed = feed.dump() "Safe method to transorm a feedparser entry into an article" - now = datetime.now() + date = datetime.now() for date_key in ('published', 'updated'): if entry.get(date_key): @@ -72,5 +72,5 @@ def construct_article(entry, feed): 'title': entry.get('title', 'No title'), 'readed': False, 'like': False, 'content': content, - 'retrieved_date': now.isoformat(), - 'date': (date or now).isoformat()} + 'retrieved_date': date.isoformat(), + 'date': date.isoformat()} -- cgit From 8bbfd0e080ac5ef1232cca0663f77e1562c1485e Mon Sep 17 00:00:00 2001 From: François Schmidts Date: Mon, 6 Jul 2015 23:09:24 +0200 Subject: making it possible for super admin to update other's feed --- pyaggr3g470r/lib/crawler.py | 1 + pyaggr3g470r/views/api/common.py | 6 +++++- pyaggr3g470r/views/api/feed.py | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) (limited to 'pyaggr3g470r') diff --git a/pyaggr3g470r/lib/crawler.py b/pyaggr3g470r/lib/crawler.py index 8d2de15f..de557e45 100644 --- a/pyaggr3g470r/lib/crawler.py +++ b/pyaggr3g470r/lib/crawler.py @@ -143,6 +143,7 @@ class PyAggUpdater(AbstractCrawler): up_feed[key] = fresh_feed[key] if not self.feed.get('title'): up_feed['title'] = fresh_feed.get('title', '') + up_feed['user_id'] = self.feed['user_id'] logger.info('%r %r - pushing feed attrs %r', self.feed['id'], self.feed['title'], diff --git a/pyaggr3g470r/views/api/common.py b/pyaggr3g470r/views/api/common.py index b8c4dd9d..a7068807 100644 --- a/pyaggr3g470r/views/api/common.py +++ b/pyaggr3g470r/views/api/common.py @@ -143,7 +143,11 @@ class PyAggResourceExisting(PyAggAbstractResource): args = self.reqparse_args(default=False) new_values = {key: args[key] for key in set(args).intersection(self.attrs)} - self.controller.update({'id': obj_id}, new_values) + if 'user_id' in new_values and g.user.is_admin(): + controller = self.wider_controller + else: + controller = self.controller + return controller.update({'id': obj_id}, new_values), 200 def delete(self, obj_id=None): """delete a object""" diff --git a/pyaggr3g470r/views/api/feed.py b/pyaggr3g470r/views/api/feed.py index f9060263..530f3fef 100644 --- a/pyaggr3g470r/views/api/feed.py +++ b/pyaggr3g470r/views/api/feed.py @@ -16,6 +16,7 @@ from pyaggr3g470r.views.api.common import PyAggAbstractResource, \ FEED_ATTRS = {'title': {'type': str}, 'description': {'type': str}, 'link': {'type': str}, + 'user_id': {'type': int}, 'site_link': {'type': str}, 'enabled': {'type': bool, 'default': True}, 'etag': {'type': str, 'default': ''}, -- cgit