aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCédric Bonhomme <cedric@cedricbonhomme.org>2016-09-20 15:08:47 +0200
committerCédric Bonhomme <cedric@cedricbonhomme.org>2016-09-20 15:08:47 +0200
commite60087e68546a8a9b483e09a78f4389fcc9ebc4e (patch)
treeacd780e7255d7de48a5519bc815c0e90f08d98b3
parentDraft for a public user profile page. (diff)
downloadnewspipe-e60087e68546a8a9b483e09a78f4389fcc9ebc4e.tar.gz
newspipe-e60087e68546a8a9b483e09a78f4389fcc9ebc4e.tar.bz2
newspipe-e60087e68546a8a9b483e09a78f4389fcc9ebc4e.zip
Few improvemnts for the tag cloud of the user's profile pages.
-rwxr-xr-xsrc/web/lib/misc_utils.py4
-rw-r--r--src/web/templates/feed_list.html52
-rw-r--r--src/web/templates/feed_list_simple.html22
-rw-r--r--src/web/templates/profile_public.html4
-rw-r--r--src/web/views/user.py10
5 files changed, 56 insertions, 36 deletions
diff --git a/src/web/lib/misc_utils.py b/src/web/lib/misc_utils.py
index 07cb6ed5..ea0b18ce 100755
--- a/src/web/lib/misc_utils.py
+++ b/src/web/lib/misc_utils.py
@@ -272,8 +272,8 @@ def tag_cloud(tags):
Generates a tags cloud.
"""
tags.sort(key=operator.itemgetter(0))
- return '\n'.join([('<font size=%d><a href="/search?query=%s" title="Count: %s">%s</a></font>' % \
- (min(1 + count * 7 / max([tag[1] for tag in tags]), 7), word, format(count, ',d'), word)) \
+ return '\n'.join([('<font size=%d>%s</font>' % \
+ (min(1 + count * 7 / max([tag[1] for tag in tags]), 7), word)) \
for (word, count) in tags])
if __name__ == "__main__":
diff --git a/src/web/templates/feed_list.html b/src/web/templates/feed_list.html
index 04543e4c..f8e3551e 100644
--- a/src/web/templates/feed_list.html
+++ b/src/web/templates/feed_list.html
@@ -4,45 +4,37 @@
<thead>
<tr>
<th>#</th>
- {% if current_user.is_authenticated and current_user.id == user.id %}
- <th>{{ _('Status') }}</th>
- {% endif %}
+ <th>{{ _('Status') }}</th>
<th>{{ _('Title') }}</th>
<th>{{ _('Site') }}</th>
- {% if current_user.is_authenticated and current_user.id == user.id %}
- <th>{{ _('Articles') }}</th>
- <th>{{ _('Actions') }}</th>
- {% endif %}
+ <th>{{ _('Articles') }}</th>
+ <th>{{ _('Actions') }}</th>
</tr>
</thead>
<tbody>
{% for feed in feeds %}
- <tr {% if not feed.enabled and current_user.is_authenticated %}class="warning"{% endif %}>
+ <tr {% if not feed.enabled %}class="warning"{% endif %}>
<td>{{ loop.index }}</td>
- {% if current_user.is_authenticated and current_user.id == user.id %}
- <td>
- {% if feed.enabled %}
- <i class="glyphicon glyphicon-eye-open" title="{{ _('Feed enabled') }}"></i>
- {% else %}
- <i class="glyphicon glyphicon-eye-close" title="{{ _('Feed disabled') }}"></i>
- {% endif %}
- {% if feed.error_count >= conf.DEFAULT_MAX_ERROR %}
- <i class="glyphicon glyphicon-exclamation-sign" title="{{ _('Feed encountered too much errors.') }}"></i>
- {% endif %}
- </td>
- {% endif %}
+ <td>
+ {% if feed.enabled %}
+ <i class="glyphicon glyphicon-eye-open" title="{{ _('Feed enabled') }}"></i>
+ {% else %}
+ <i class="glyphicon glyphicon-eye-close" title="{{ _('Feed disabled') }}"></i>
+ {% endif %}
+ {% if feed.error_count >= conf.DEFAULT_MAX_ERROR %}
+ <i class="glyphicon glyphicon-exclamation-sign" title="{{ _('Feed encountered too much errors.') }}"></i>
+ {% endif %}
+ </td>
<td>{% if feed.icon_url %}<img src="{{ url_for('icon.icon', url=feed.icon_url) }}" width="16px" />&nbsp;{% endif %}{{ feed.title }}</td>
<td><a href="{{ feed.site_link }}">{{ feed.site_link }}</a></td>
- {% if current_user.is_authenticated and current_user.id == user.id %}
- <td>( {{ unread_article_count.get(feed.id, 0) }} ) {{ article_count.get(feed.id, 0) }}</td>
- <td>
- <a href="{{ url_for("feed.feed", feed_id=feed.id) }}"><i class="glyphicon glyphicon-info-sign" title="{{ _('Information') }}"></i></a>
- <a href="{{ url_for("feed.form", feed_id=feed.id) }}"><i class="glyphicon glyphicon-edit" title="{{ _('Edit this feed') }}"></i></a>
- <a href="{{ url_for("feed.duplicates", feed_id=feed.id) }}"><i class="glyphicon glyphicon-book" title="{{ _('Duplicate articles') }}"></i></a>
- <a href="{{ url_for("feed.delete", feed_id=feed.id) }}"><i class="glyphicon glyphicon-remove" title="{{ _('Delete this feed') }}" onclick="return confirm('{{ _('You are going to delete this feed.') }}');"></i></a>
- </td>
- {% endif %}
- </tr>
+ <td>( {{ unread_article_count.get(feed.id, 0) }} ) {{ article_count.get(feed.id, 0) }}</td>
+ <td>
+ <a href="{{ url_for("feed.feed", feed_id=feed.id) }}"><i class="glyphicon glyphicon-info-sign" title="{{ _('Information') }}"></i></a>
+ <a href="{{ url_for("feed.form", feed_id=feed.id) }}"><i class="glyphicon glyphicon-edit" title="{{ _('Edit this feed') }}"></i></a>
+ <a href="{{ url_for("feed.duplicates", feed_id=feed.id) }}"><i class="glyphicon glyphicon-book" title="{{ _('Duplicate articles') }}"></i></a>
+ <a href="{{ url_for("feed.delete", feed_id=feed.id) }}"><i class="glyphicon glyphicon-remove" title="{{ _('Delete this feed') }}" onclick="return confirm('{{ _('You are going to delete this feed.') }}');"></i></a>
+ </td>
+ </tr>
{% endfor %}
</tbody>
</table>
diff --git a/src/web/templates/feed_list_simple.html b/src/web/templates/feed_list_simple.html
new file mode 100644
index 00000000..976c3631
--- /dev/null
+++ b/src/web/templates/feed_list_simple.html
@@ -0,0 +1,22 @@
+{% if feeds.count() != 0 %}
+<div class="table-responsive">
+ <table class="table table-striped">
+ <thead>
+ <tr>
+ <th>#</th>
+ <th>{{ _('Title') }}</th>
+ <th>{{ _('Site') }}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for feed in feeds %}
+ <tr>
+ <td>{{ loop.index }}</td>
+ <td>{% if feed.icon_url %}<img src="{{ url_for('icon.icon', url=feed.icon_url) }}" width="16px" />&nbsp;{% endif %}{{ feed.title }}</td>
+ <td><a href="{{ feed.site_link }}">{{ feed.site_link }}</a></td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+</div>
+{% endif %}
diff --git a/src/web/templates/profile_public.html b/src/web/templates/profile_public.html
index 04beee8e..0b12b8df 100644
--- a/src/web/templates/profile_public.html
+++ b/src/web/templates/profile_public.html
@@ -9,8 +9,10 @@
</div>
</div>
+ <div>{{ tag_cloud|safe }}</div>
+
<h2>Feeds</h2>
- {% include "feed_list.html" %}
+ {% include "feed_list_simple.html" %}
</div><!-- /.container -->
{% endblock %}
diff --git a/src/web/views/user.py b/src/web/views/user.py
index bd12010c..01e26325 100644
--- a/src/web/views/user.py
+++ b/src/web/views/user.py
@@ -27,12 +27,16 @@ def profile_public(nickname=None):
user = user_contr.get(nickname=nickname)
if not user.is_public_profile:
return redirect(url_for('home'))
- art_contr = ArticleController(user.id)
+
+ word_size = 6
+ articles = ArticleController(user.id).read().all()
+ top_words = misc_utils.top_words(articles, n=50, size=int(word_size))
+ tag_cloud = misc_utils.tag_cloud(top_words)
+
return render_template('profile_public.html',
user=user,
feeds=user.feeds,
- unread_article_count=art_contr.count_by_category(readed=False),
- article_count=art_contr.count_by_category())
+ tag_cloud=tag_cloud)
@user_bp.route('/management', methods=['GET', 'POST'])
@login_required
bgstack15