diff --git a/fotos/models.py b/fotos/models.py index 92c643a9f792df44d0e4797924964dbc629f427b..0d69c5e829a4a21bcd82e8f1ff3cadc291c2e3e7 100644 --- a/fotos/models.py +++ b/fotos/models.py @@ -14,7 +14,7 @@ from babel.dates import format_datetime from datetime import datetime, timezone, timedelta from fotos.util import get_image_metadata, get_month_name, get_year_name, \ - normalize, free, restrict + normalize, free, restrict, getquote def float2degrees(d): i = math.floor(d) @@ -486,12 +486,26 @@ class Album(models.Model): if s == '': return empty photos = Photo.objects.all().order_by('timestamp') + phrases = [] + query = None + while '"' in s: + p = getquote(s) + if p is None: + break + s = s.replace(p, '', 1) + p = p[1:-1].strip() + if p == '': + continue + phrases.append(p) + query = Album._add_query_term(query, p) terms = s.split(' ') - before = after = query = None - sterms = [] + before = after = None + sterms = phrases try: for t in terms: - if t.startswith('before:'): + if t == '': + continue + elif t.startswith('before:'): before = Album._get_bound_time(t) elif t.startswith('after:'): after = Album._get_bound_time(t)