From: Andrew Engelbrecht Date: Mon, 6 Mar 2017 23:03:05 +0000 (-0500) Subject: use case-insensitive form of tag filter on queries X-Git-Url: https://vcs.fsf.org/?p=mediagoblin-libreplanet.git;a=commitdiff_plain;h=0319c127de5bc759617fd58f4082f93cec6da56c;hp=22eeeb2ddf72526b287f66c4980af9b502061ee7 use case-insensitive form of tag filter on queries this will include videos that have the same tag with different case/capitalization. --- diff --git a/mediagoblin_libreplanet/__init__.py b/mediagoblin_libreplanet/__init__.py index 7199c4c..a8403b1 100644 --- a/mediagoblin_libreplanet/__init__.py +++ b/mediagoblin_libreplanet/__init__.py @@ -20,7 +20,7 @@ import os from mediagoblin import mg_globals from mediagoblin.tools.pluginapi import get_config, register_template_path, register_routes from mediagoblin.db.models import MediaEntry -from mediagoblin.db.util import media_entries_for_tag_slug +from lp_helper import media_entries_for_tag_slug_case_insensitive from mediagoblin.tools.pagination import Pagination from mediagoblin.tools.response import render_to_response from mediagoblin.tools.licenses import SORTED_LICENSES, SUPPORTED_LICENSES, License @@ -53,7 +53,7 @@ def lp_media_for_type(db, type, tag=None, max_items=MAX_HOME_ITEMS): if (tag == None): cursor = MediaEntry.query else: - cursor = media_entries_for_tag_slug(db, tag) + cursor = media_entries_for_tag_slug_case_insensitive(db, tag) return cursor.\ filter((MediaEntry.media_type == type) diff --git a/mediagoblin_libreplanet/lp_helper.py b/mediagoblin_libreplanet/lp_helper.py new file mode 100644 index 0000000..9e50146 --- /dev/null +++ b/mediagoblin_libreplanet/lp_helper.py @@ -0,0 +1,27 @@ +# MediaGoblin for LibrePlanet +# +# Based on code from MediaGoblin +# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS. +# Copyright (C) 2017 Andrew Engelbrecht +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +def media_entries_for_tag_slug_case_insensitive(dummy_db, tag_slug): + return MediaEntry.query \ + .join(MediaEntry.tags_helper) \ + .join(MediaTag.tag_helper) \ + .filter( + (MediaEntry.state == u'processed') + & (Tag.slug.lower() == tag_slug.lower())) + diff --git a/mediagoblin_libreplanet/views.py b/mediagoblin_libreplanet/views.py index 4163f8e..ceb96b6 100644 --- a/mediagoblin_libreplanet/views.py +++ b/mediagoblin_libreplanet/views.py @@ -16,7 +16,7 @@ from mediagoblin import mg_globals from mediagoblin.db.models import MediaEntry -from mediagoblin.db.util import media_entries_for_tag_slug +from lp_helper import media_entries_for_tag_slug_case_insensitive from mediagoblin.tools.pagination import Pagination from mediagoblin.tools.response import render_to_response from mediagoblin.decorators import uses_pagination @@ -25,7 +25,7 @@ def type_listing(media_type, title, request, page, tag=None): if (tag == None): cursor = MediaEntry.query else: - cursor = media_entries_for_tag_slug(request.db, tag) + cursor = media_entries_for_tag_slug_case_insensitive(request.db, tag) cursor = cursor.\ filter((MediaEntry.media_type == media_type)