From 83f3c20fa76ff383d069ca866cb2eee92fe0c9c8 Mon Sep 17 00:00:00 2001 From: Cédric Bonhomme Date: Mon, 29 May 2017 23:15:17 +0200 Subject: It is now possible to filter bookmarks by tags. --- src/web/controllers/abstract.py | 2 ++ src/web/templates/bookmarks.html | 2 +- src/web/views/bookmark.py | 8 ++++++-- 3 files changed, 9 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/web/controllers/abstract.py b/src/web/controllers/abstract.py index 8563d5f2..47cc365f 100644 --- a/src/web/controllers/abstract.py +++ b/src/web/controllers/abstract.py @@ -50,6 +50,8 @@ class AbstractController: db_filters.add(getattr(self._db_cls, key[:-4]) != value) elif key.endswith('__in'): db_filters.add(getattr(self._db_cls, key[:-4]).in_(value)) + elif key.endswith('__contains'): + db_filters.add(getattr(self._db_cls, key[:-10]).contains(value)) elif key.endswith('__like'): db_filters.add(getattr(self._db_cls, key[:-6]).like(value)) elif key.endswith('__ilike'): diff --git a/src/web/templates/bookmarks.html b/src/web/templates/bookmarks.html index 3c4cc0db..7ccddeed 100644 --- a/src/web/templates/bookmarks.html +++ b/src/web/templates/bookmarks.html @@ -24,7 +24,7 @@

{{ bookmark.description }}
-
{{ " ".join(bookmark.tags_proxy) }}
+
{% for tag in bookmark.tags %}{{ tag.text }}{% endfor %}
{{ bookmark.time | datetime }} {% if current_user.is_authenticated %} edit diff --git a/src/web/views/bookmark.py b/src/web/views/bookmark.py index 841d7364..8736e1ca 100644 --- a/src/web/views/bookmark.py +++ b/src/web/views/bookmark.py @@ -54,10 +54,13 @@ bookmark_bp = Blueprint('bookmark', __name__, url_prefix='/bookmark') def list_(per_page, status='all'): "Lists the bookmarks." head_titles = [gettext("Bookmarks")] + filters = {} + tag = request.args.get('tag', None) + if tag: + filters['tags_proxy__contains'] = tag if current_user.is_authenticated: # query for the bookmarks of the authenticated user - filters = {} if status == 'public': filters['shared'] = True elif status == 'private': @@ -72,7 +75,8 @@ def list_(per_page, status='all'): bookmark_query = BookmarkController(current_user.id).read(**filters) else: # query for the shared bookmarks (of all users) - bookmark_query = BookmarkController().read(**{'shared': True}) + filters['shared'] = True + bookmark_query = BookmarkController().read(**filters) bookmarks = bookmark_query.order_by(desc('time')) page, per_page, offset = get_page_args() -- cgit