X-Git-Url: http://git.veekun.com/zzz-floof.git/blobdiff_plain/c50e600e708d2083290134440223ab65076376ee..79cb1c0d3048c165fd3b9ff287ee1fbe361f904d:/floof/controllers/search.py diff --git a/floof/controllers/search.py b/floof/controllers/search.py index 88dfbe3..63e20ec 100644 --- a/floof/controllers/search.py +++ b/floof/controllers/search.py @@ -1,28 +1,48 @@ import logging from pylons import request, response, session, tmpl_context as c -from pylons.controllers.util import abort, redirect_to +from pylons.controllers.util import abort, redirect +from pylons import url +from floof.lib import helpers as h from floof.lib.base import BaseController, render +from floof.lib.tags import parse log = logging.getLogger(__name__) -from floof.model.art import Art, Tag, TagText +from floof.model import Art, Tag, TagText +from floof.model import SavedSearch, GalleryWidget import elixir class SearchController(BaseController): def index(self): - """Search, implemented the stupid way!""" - query = request.params.get('query', '') - tags = query.split() + if request.params.get('button') == 'Save': + return self.save() - tagtexts = TagText.query.filter(TagText.text.in_(tags)) - tagtext_ids = [_.id for _ in tagtexts] + c.query = request.params.get('query', '') + c.artwork = parse(c.query, me=c.user).all() + return render('/index.mako') + + # TODO: login required + def save(self): + c.query = request.params.get('query', '') + saved_search = SavedSearch(author=c.user, string=c.query) + elixir.session.commit() + redirect(url('saved_searches')) + # TODO: do something better than this. + + + # TODO: login required + def list(self): + c.searches = c.user.searches + return render('/searches.mako') + + # TODO: login required + def display(self, id): + c.search = h.get_object_or_404(SavedSearch, id=id) + c.gallery = GalleryWidget(search=c.search, page=c.user.primary_page) + elixir.session.commit() + redirect(url(controller="users", action="view", name=c.user.name)) - # Fetch art that has all the tags - c.artwork = Art.query.join(Tag) \ - .filter(Tag.id.in_(tagtext_ids)) \ - .all() - return render('/index.mako')