clean up
[unfold.git] / engine / manifoldquery.py
index b8f594e..ce9f3ea 100644 (file)
@@ -36,10 +36,31 @@ class ManifoldQuery:
         # xxx unique can be removed, but for now we pad the js structure
         unique=0
 
+        aq = self.analyzed_query.to_json() if self.analyzed_query else 'null'
         # subqueries is a dictionary method:query
-        sq=", ".join ( [ "'%s':%s" % (method, subquery.to_json())
+        if not self.subqueries: 
+            sq="{}"
+        else:
+            sq=", ".join ( [ "'%s':%s" % (method, subquery.to_json())
                       for (method, subquery) in self.subqueries.iteritems()])
+            sq="{%s}"%sq
         
-        aq = self.analyzed_query.to_json() if self.analyzed_query else 'null'
+        return """ new Query('%(a)s', '%(m)s', '%(t)s', %(f)s, %(p)s, %(c)s, %(unique)s, '%(uuid)s', %(aq)s, %(sq)s)"""%locals()
+    
+    # 4amine
+    # xxx
+    # this should build an object from a dict as received from javascript
+    # to see an example just look at the server's output
+    # incoming POST <QueryDict: {u'query[method]': [u'slice'], u'query[fields][]': [u'slice_hrn'], u'query[ts]': [u'latest'], u'query[action]': [u'get']}>
+    def fill_from_dict (self, d):
+        print d
+        for key in d.keys():
+           for arg in ['action', 'method', 'filters', 'fields', 'timestamp', 'params']:
+                if arg in key:
+                    # dirty hack around fields; fields must be a list
+                    if arg == 'fields': 
+                        setattr(self, arg, [d[key]])
+                    else: 
+                        setattr(self, arg, d[key])
+                    break
         
-        return "new Query('%(a)s', '%(m)s', '%(t)s', %(f)s, %(p)s, %(c)s, %(unique)s, '%(uuid)s', %(aq)s, {{%(sq)s}})"%locals()