saved searches is going awesome. Partial work on adding them as galleries
[zzz-floof.git] / floof / lib / search.py
diff --git a/floof/lib/search.py b/floof/lib/search.py
new file mode 100644 (file)
index 0000000..3acb248
--- /dev/null
@@ -0,0 +1,33 @@
+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')