Merge branch 'master' of git@veekun.com:floof
[zzz-floof.git] / floof / controllers / search.py
index 3b6faef..f87ddae 100644 (file)
@@ -1,14 +1,16 @@
 import logging
 
 from pylons import request, response, session, tmpl_context as c, h
 import logging
 
 from pylons import request, response, session, tmpl_context as c, h
-from pylons.controllers.util import abort, redirect_to
+from pylons.controllers.util import abort, redirect
+from pylons import url
 
 from floof.lib.base import BaseController, render
 
 from floof.lib.base import BaseController, render
+from floof.lib.search import do_search
 
 log = logging.getLogger(__name__)
 
 
 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):
 import elixir
 
 class SearchController(BaseController):
@@ -16,40 +18,30 @@ class SearchController(BaseController):
     def index(self):
         if request.params.get('button') == 'Save':
             return self.save()
     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 = do_search(c.query)
         return render('/index.mako')
         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()
     # 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: do something better than this.
-        
-    
+
+
     # TODO: login required
     def list(self):
         c.searches = c.user.searches
         return render('/searches.mako')
     # 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: 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))
+
+