- return error(request, object_name, {})
- return switch.get(object_type, error)(request, object_name, object_properties)
-
-# if request.method == 'GET':
-# return switch.get(request, object_type, object_name, object_properties)
-# elif request.method == 'POST':
-# return post(request, object_type, object_name)
-
-def platform(request, object_name, object_properties):
- query = Query().get('local:platform').filter_by('disabled', '==', '0').select(object_properties)
- return send(request, execute_query(request, query), object_properties)
-
-# Add different filters possibilities [['user.user_hrn','==','$user_hrn'],['parent_authority','==','ple.upmc']]
-def slice(request, object_name, object_properties):
- #query = Query().get('slice').filter_by('user.user_hrn', '==', '$user_hrn').select(object_properties)
- query = Query().get('slice').filter_by('parent_authority', '==', 'ple.upmc').select(object_properties)
- return send(request, execute_query(request, query), object_properties)
-
-def resource(request, object_name, object_properties):
- pass
-
-def user(request, object_name, object_properties):
- query = Query().get('user').filter_by('user_hrn', '==', '$user_hrn').select(object_properties)
- return send(request, execute_query(request, query), object_properties)
+ 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 = fields
+
+
+ def applyFilters(self, query, force_filters = False):
+ if (force_filters and not self.filters) :
+ raise Exception, "Filters required"
+ if self.filters :
+ for k, f in self.filters.iteritems() :
+ if (f[:1] == "!") :
+ query.filter_by(k, '!=', f[1:])
+ elif (f[:2] == ">=") :
+ query.filter_by(k, '>=', f[2:])
+ elif (f[:1] == ">") :
+ query.filter_by(k, '>', f[1:])
+ elif (f[:2] == "<=") :
+ query.filter_by(k, '<=', f[2:])
+ elif (f[:1] == "<") :
+ query.filter_by(k, '<', f[1:])
+ else :
+ query.filter_by(k, '==', f)
+ return query
+
+ def get(self):
+ 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)