From 82eeab4b74bbdf9d461a4a586eb3e34b78debb15 Mon Sep 17 00:00:00 2001 From: Cédric Bonhomme Date: Tue, 30 May 2017 14:37:56 +0200 Subject: Improved UI for bookmarks. It is now possible to search bookmarks through titles and descriptions. --- src/web/controllers/abstract.py | 7 +--- src/web/templates/bookmarks.html | 70 +++++++++++++++++++++++++++------------- src/web/views/bookmark.py | 5 +++ 3 files changed, 54 insertions(+), 28 deletions(-) diff --git a/src/web/controllers/abstract.py b/src/web/controllers/abstract.py index ae39dff7..47cc365f 100644 --- a/src/web/controllers/abstract.py +++ b/src/web/controllers/abstract.py @@ -51,12 +51,7 @@ class AbstractController: elif key.endswith('__in'): db_filters.add(getattr(self._db_cls, key[:-4]).in_(value)) elif key.endswith('__contains'): - db_filters.add(or_( - getattr(self._db_cls, key[:-10]) \ - .contains(value.lower()), - getattr(self._db_cls, key[:-10]) \ - .contains(value.upper()) - )) + 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 71a8056d..33a35252 100644 --- a/src/web/templates/bookmarks.html +++ b/src/web/templates/bookmarks.html @@ -14,27 +14,53 @@ {% endif %} - {{ pagination.links }} - - {{ pagination.links }} +
+
+
+
+
+ + +
+
+
+
+
+
+
+ {{ pagination.links }} +
+
+
+
+
+
    + {% for bookmark in bookmarks %} +
  • + +

    + {{ bookmark.title }} +

    +

    +

    {{ bookmark.description }}
    +
    {% for tag in bookmark.tags %}{{ tag.text }} {% endfor %}
    + {{ bookmark.time | datetime }} + {% if current_user.is_authenticated %} + edit + delete + {% endif %} +

    + +
  • + {% endfor %} +
+
+
+
+
+
+ {{ pagination.links }} +
+
{% endblock %} diff --git a/src/web/views/bookmark.py b/src/web/views/bookmark.py index 8736e1ca..69a094ac 100644 --- a/src/web/views/bookmark.py +++ b/src/web/views/bookmark.py @@ -58,6 +58,11 @@ def list_(per_page, status='all'): tag = request.args.get('tag', None) if tag: filters['tags_proxy__contains'] = tag + query = request.args.get('query', None) + if query: + query = '%' + query + '%' + filters['__or__'] = {'title__ilike': query, 'description__ilike': query} + if current_user.is_authenticated: # query for the bookmarks of the authenticated user -- cgit