From: Nick Retallack Date: Sun, 4 Oct 2009 20:20:41 +0000 (-0700) Subject: Merge branch 'tags' into search X-Git-Url: http://git.veekun.com/zzz-floof.git/commitdiff_plain/b3558ab49ac069f88ee1f1dc39e8127b2519409a?hp=4d414773b1f0106e2d8c1cbe2bb0fed28a4d02de Merge branch 'tags' into search --- diff --git a/floof/controllers/search.py b/floof/controllers/search.py new file mode 100644 index 0000000..75926e7 --- /dev/null +++ b/floof/controllers/search.py @@ -0,0 +1,35 @@ +import logging + +from pylons import request, response, session, tmpl_context as c +from pylons.controllers.util import abort, redirect_to + +from floof.lib.base import BaseController, render + +log = logging.getLogger(__name__) + +from floof.model.art import Art, Tag, TagText +import elixir + +class SearchController(BaseController): + + def index(self): + # Return a rendered template + #return render('/search.mako') + # or, return a response + return 'Hello World' + + def results(self): + """ Search, implemented the stupid way! """ + query = request.params.get('query','') + tags = query.split() + + tagtexts = TagText.query.filter(TagText.text.in_(tags)) + tagtext_ids = map(lambda x:x.id, tagtexts) + + # TODO: this is wrong. Please fix it so it returns art that has all the tags. + art_tag_pairs = elixir.session.query(Art,Tag).filter(Art.id == Tag.art_id).\ + filter(Tag.tagtext_id.in_(tagtext_ids)).all() + + # just the art please. + c.artwork = map(lambda x: x[0], art_tag_pairs) + return render('/index.mako') \ No newline at end of file diff --git a/floof/model/art.py b/floof/model/art.py index e462d0b..2c631f7 100644 --- a/floof/model/art.py +++ b/floof/model/art.py @@ -11,11 +11,9 @@ import elixir from pylons import config from floof.lib.file_storage import get_path, save_file - from floof.lib.dbhelpers import find_or_create - class Art(Entity): title = Field(Unicode(120)) original_filename = Field(Unicode(120)) @@ -71,7 +69,7 @@ class Art(Entity): class Tag(Entity): - # look into how ondelete works. It just sets a database property. + # look into how ondelete works. This just sets a database property. art = ManyToOne('Art', ondelete='cascade') tagger = ManyToOne('User') tagtext = ManyToOne('TagText') diff --git a/floof/templates/base.mako b/floof/templates/base.mako index 5034bf0..19f8455 100644 --- a/floof/templates/base.mako +++ b/floof/templates/base.mako @@ -10,6 +10,10 @@