Make sure to filter wildcard queries

Fixes #640
This commit is contained in:
Joseph Schorr 2015-10-14 12:18:04 -04:00
parent e31dda35df
commit 6df7f60e4a
4 changed files with 33 additions and 17 deletions

View file

@ -1,10 +1,22 @@
from peewee import JOIN_LEFT_OUTER
from peewee import JOIN_LEFT_OUTER, Clause, SQL
from cachetools import lru_cache
from data.database import (Repository, User, Team, TeamMember, RepositoryPermission, TeamRole,
Namespace, Visibility, db_for_update)
def prefix_search(field, prefix_query):
""" Returns the wildcard match for searching for the given prefix query. """
# Escape the known wildcard characters.
prefix_query = (prefix_query
.replace('!', '!!')
.replace('%', '!%')
.replace('_', '!_')
.replace('[', '!['))
return field ** Clause(prefix_query + '%', SQL("ESCAPE '!'"))
def get_existing_repository(namespace_name, repository_name, for_update=False):
query = (Repository
.select(Repository, Namespace)