query with lowercase tags + use dashes in tags

i don't recall where exactly i was seeing an issue with tag case before,
but if one queries with exclusively lowercase tags, then uppercase tags
will be included too. note that the reverse is not true.
master
Andrew Engelbrecht 8 years ago
parent bfedf48a07
commit a356d74359
  1. 8
      mediagoblin_libreplanet/__init__.py
  2. 29
      mediagoblin_libreplanet/lp_helper.py
  3. 3
      mediagoblin_libreplanet/views.py

@ -21,7 +21,6 @@ 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
@ -40,8 +39,11 @@ MAX_HOME_ITEMS = 20
MAX_HOME_FEATURED_ITEMS = 10
MAX_HOME_LP_ITEMS = 10
# make tags lowercase and use dashes in place of spaces.
# uppercase tags will be included by the lowercase form.
FEATURED_TAG = "featured"
LATEST_LP_VIDEO_TAG = "LibrePlanet 2016 video"
LATEST_LP_VIDEO_TAG = "libreplanet-2016-video"
_log = logging.getLogger(__name__)
@ -57,8 +59,6 @@ def lp_media_for_type(db, type, tag=None, max_items=MAX_HOME_ITEMS):
if (tag == None):
cursor = MediaEntry.query
else:
## case insensitive tag search is not working yet -- sudoman
#cursor = media_entries_for_tag_slug_case_insensitive(db, tag)
cursor = media_entries_for_tag_slug(db, tag)
return cursor.\

@ -1,29 +0,0 @@
# MediaGoblin for LibrePlanet
#
# Based on code from MediaGoblin
# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
# Copyright (C) 2017 Andrew Engelbrecht <andrew@fsf.org>
#
# 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 <http://www.gnu.org/licenses/>.
from mediagoblin.db.models import MediaEntry, Tag, MediaTag
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())) # Tag.slug.lower() currently doesn't work.

@ -17,7 +17,6 @@
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
@ -26,8 +25,6 @@ def type_listing(media_type, title, request, page, tag=None):
if (tag == None):
cursor = MediaEntry.query
else:
## case insensitive tag search is not working yet -- sudoman
#cursor = media_entries_for_tag_slug_case_insensitive(request.db, tag)
cursor = media_entries_for_tag_slug(request.db, tag)
cursor = cursor.\

Loading…
Cancel
Save