X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=rest%2F__init__.py;h=bdf3ee0812d241bd91cb9d88bb72fd91f7f6da4d;hb=c4d5a865d69c256a54a7422417119cfcfca0b0b9;hp=c21c5ec916f13081dfc9844644fc8f5ce18ca655;hpb=2a609a565beff7c90ff6f0118285ee4995c9d6f6;p=unfold.git diff --git a/rest/__init__.py b/rest/__init__.py index c21c5ec9..bdf3ee08 100644 --- a/rest/__init__.py +++ b/rest/__init__.py @@ -27,6 +27,7 @@ class ObjectRequest(object): self.type = object_type self.name = object_name self.fields = [] + self.params = [] self.filters = {} self.options = None @@ -41,12 +42,10 @@ class ObjectRequest(object): self.filters['platform'] = '!myslice' else : self.setKey() - self.setLocalFields() def setKey(self): - print self.type # What about key formed of multiple fields??? query = Query.get('local:object').filter_by('table', '==', self.type).select('key') results = execute_query(self.request, query) @@ -67,16 +66,12 @@ class ObjectRequest(object): raise Exception, 'Manifold db error' def setFields(self, fields): - selected_fields = [] - for p in fields : - if p in self.fields : - selected_fields.append(p) - self.fields = selected_fields +# selected_fields = [] +# for p in fields : +# if p in self.fields : +# selected_fields.append(p) + self.fields = fields - # - if self.id in self.fields : - self.fields.remove(self.id) - [self.id].extend(self.fields) def applyFilters(self, query, force_filters = False): if (force_filters and not self.filters) : @@ -98,26 +93,45 @@ class ObjectRequest(object): return query def get(self): - query = Query.get(self.type).select(self.fields) + query = Query.get(self.type) + if (self.id not in self.fields) : + query.select(self.fields + [self.id]) + else : + query.select(self.fields) + query = self.applyFilters(query) return execute_query(self.request, query) - + + def create(self): + query = Query.create(self.type) + # No filters for create + if self.params : + query.set(self.params) + else: + raise Exception, "Params are required for create" + return execute_query(self.request, query) + def update(self): query = Query.update(self.type) query = self.applyFilters(query, True) + print ">>>>>",self.params + if self.params : - query.set(self.params) + query.set({ 'resource' : self.params}) +# for param in self.params : + else: raise Exception, "Params are required for update" + return execute_query(self.request, query) def delete(self): query = Query.delete(self.type) query = self.applyFilters(query, True) - if self.params : - query.set(self.params) + if self.filters : + query.set(self.filters) else: - raise Exception, "Params are required for update" + raise Exception, "Filters are required for update" return execute_query(self.request, query) def json(self): @@ -135,7 +149,7 @@ class ObjectRequest(object): for p in self.fields : d.append(r[p]) response_data['data'].append(d) - + return HttpResponse(json.dumps(response_data, cls=DecimalEncoder, default=DateEncoder), content_type="application/json") def error(msg):