import logging
-from pylons import request, response, session, tmpl_context as c, h
-from pylons.controllers.util import abort, redirect_to
+from pylons import request, response, session, tmpl_context as c
+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.search import SavedSearch
+from floof.model import Art, Tag, TagText
+from floof.model import SavedSearch, GalleryWidget
import elixir
class SearchController(BaseController):
def index(self):
if request.params.get('button') == 'Save':
return self.save()
-
- c.query = request.params.get('query', '')
- tags = c.query.split()
-
- tagtexts = TagText.query.filter(TagText.text.in_(tags))
- tagtext_ids = [_.id for _ in tagtexts]
-
- # Fetch art that has all the tags
- c.artwork = Art.query.join(Tag) \
- .filter(Tag.tagtext_id.in_(tagtext_ids)) \
- .all()
+ 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_to(action="list")
+ 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)
- # TODO: create a gallery widget
-
- redirect_to(controller="users", action="view", name=c.user.name)
-
-
-
\ No newline at end of file
+ c.gallery = GalleryWidget(search=c.search, page=c.user.primary_page)
+ elixir.session.commit()
+ redirect(url(controller="users", action="view", name=c.user.name))
+
+