X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=manifold%2Fmanifoldquery.py;h=bbcc6b5df5f53551b4cd84378ab5a092c4283cf1;hb=74b3a7675c43e2884b396cd9d5febfebc6e9ff97;hp=412de67402cdb64308b532bd6b5f520ec15513da;hpb=ad6ebdd21b0be23a246af3817c886637491ee23f;p=myslice.git diff --git a/manifold/manifoldquery.py b/manifold/manifoldquery.py index 412de674..bbcc6b5d 100644 --- a/manifold/manifoldquery.py +++ b/manifold/manifoldquery.py @@ -21,7 +21,7 @@ class ManifoldQuery: self.filters=filters self.params=params self.fields=fields - # xxx this is unused for now + # xxx these are unused for now.... self.sort=sort self.limit=limit self.offset=offset @@ -31,8 +31,9 @@ class ManifoldQuery: self.subqueries = {} def __repr__ (self): - result="Q: id=%(query_uuid)s - %(action)s on %(subject)s "%self.__dict__ + result="[[Q: id=%(query_uuid)s - %(action)s on %(subject)s "%self.__dict__ result += " with %d filters, %d fields"%(len(self.filters),len(self.params)) + result += "]]" return result def to_json (self): @@ -41,7 +42,6 @@ class ManifoldQuery: s=self.subject t=self.timestamp f=json.dumps (self.filters) - print 'filters f=',f p=json.dumps (self.params) c=json.dumps (self.fields) # xxx unique can be removed, but for now we pad the js structure @@ -61,18 +61,20 @@ class ManifoldQuery: return result # this builds a ManifoldQuery object from a dict as received from javascript through its ajax request + # we use a json-encoded string - see manifold.js for the sender part # e.g. here's what I captured from the server's output - # incoming POST - def fill_from_POST (self, d): - for key in d.keys(): - for arg in ['action', 'subject', '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 + # manifoldproxy.proxy: request.POST + def fill_from_POST (self, POST_dict): + try: + json_string=POST_dict['json'] + dict=json.loads(json_string) + for (k,v) in dict.iteritems(): + setattr(self,k,v) + except: + print "Could not decode incoming ajax request as a Query, POST=",POST_dict + if (debug): + import traceback + traceback.print_exc() # not used yet .. def analyze_subqueries(self): @@ -158,3 +160,13 @@ class ManifoldQuery: self.analyzed_query = analyzed_query + + def to_dict(self): + return { + 'action': self.action, + 'fact_table': self.subject, + 'ts': self.timestamp, + 'filters': self.filters, + 'params': self.params, + 'fields': self.fields + }