Removed some reliance on the logged-in user.
[zzz-floof.git] / floof / lib / tags.py
index 134ba6f..2a9beaf 100644 (file)
@@ -3,14 +3,14 @@ import elixir
 from dbhelpers import find_or_create
 import re
 
-from pylons import c
-
-def parse(search_string):
+def parse(search_string, me):
     """Parses a search query, and returns a query object on Art.
 
     Queries can contain:
     - Regular tags: foo
     - User relations: by:kalu, of:eevee, for:ootachi
+    - User relations relative to some user: by:me
+      Note that this necessitates a `me` parameter.
 
     Later:
     - Negative versions of anything above: -by:eevee, -dongs
@@ -28,11 +28,12 @@ def parse(search_string):
             # This is a special tag; at the moment, by/for/of to indicate
             # related users
             prefix, tag = tag.split(':', 1)
-            if tag == 'me':
-                tag = c.user.name
 
-            # XXX what to do if this fails?  abort?  return empty query?
-            target_user = User.get_by(name=tag)
+            if tag == 'me':
+                target_user = me
+            else:
+                # XXX what to do if this fails?  abort?  return empty query?
+                target_user = User.get_by(name=tag)
 
             if prefix == 'by':
                 rel = ArtUserType.BY
@@ -57,7 +58,7 @@ def parse(search_string):
 
     return q
 
-def add_tags(art, tag_string, user):
+def add_tags(art, tag_string, adding_user, me):
     """Takes a string that looks like a tag query, and effectively modifies the
     art's tags to match it.
     """