--- /dev/null
+def parse(query):
+ words = query.split()
+
+ tags = []
+ for word in words:
+ components = word.split(':')
+ if len(components) == 1:
+ # tags are plain.
+ tags.append(word)
+ elif components[0] == "rating":
+ if components[1].isnumeric():
+ score = int(components[1])
+ else:
+ score = Rating.reverse_options.get(components[1])
+
+ if -1 <= score <= 3:
+ pass
+ # TODO: Find stuff that has this rating
+ # Rating.query.filter(Rating.s)
+
+
+
+
+ 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')