def get(self): def get_data(rec): x = rec.get(self.DATA_EL, {}) x[self.SOURCE_EL] = "%s/%s" % (rec[self.META_EL][self.PATH_EL], rec[self.META_EL][self.ID_EL]) x[self.SOURCE_SLUG_EL] = x[self.SOURCE_EL].replace("/", "__") return x if self.token.slug != None: rec = g.db.find_one({self.META_PATH: self.token.path, self.META_ID: self.token.slug}) if rec != None: ret = get_data(rec) else: ret = None self.token.response = ret else: if self.query != None: self.query.update({self.META_PATH: self.token.path}) else: self.query = {self.META_PATH: self.token.path} L.debug("DBOperation:: find using query=%r" % self.query) if self.count == 0: recs = g.db.find(self.query, fields=self.fields, limit=self.limit, start=self.start) recs = [get_data(rec) for rec in recs] ret = recs else: ret = g.db.count(self.query, fields=self.fields, limit=self.limit, start=self.start) self.token.response = ret
def get(self): def get_data(rec): x = rec.get(self.DATA_EL,{}) x[self.SOURCE_EL] = "%s/%s" % (rec[self.META_EL][self.PATH_EL], rec[self.META_EL][self.ID_EL]) x[self.SOURCE_SLUG_EL] = x[self.SOURCE_EL].replace('/','__') return x if self.token.slug != None: rec = g.db.find_one( {self.META_PATH : self.token.path, self.META_ID : self.token.slug } ) if rec != None: ret = get_data(rec) else: ret = None self.token.response = ret else: if self.query != None: self.query.update({self.META_PATH : self.token.path }) else: self.query = {self.META_PATH : self.token.path } L.debug("DBOperation:: find using query=%r" % self.query) if self.count == 0: recs = g.db.find(self.query,fields=self.fields,limit=self.limit,start=self.start) recs = [ get_data(rec) for rec in recs ] ret = recs else: ret = g.db.count(self.query,fields=self.fields,limit=self.limit,start=self.start) self.token.response = ret
def process(self): if self.token.request.method in ['PUT', 'POST' ]: try: self.token.data = json.loads(self.token.data) except: self.token.data = dict( [ (k,v) for k,v in self.token.request.form.iteritems() ] ) L.debug("DataLoader:: data=%r" % self.token.data)
def process(self): method = self.token.request.method self.query = self.token.request.args.get("query", "{}") self.query = json.loads(self.query) self.query = dict([("%s.%s" % (self.DATA_EL, k), v) for k, v in self.query.iteritems()]) self.order = self.token.request.args.get("order", "[]") self.order = json.loads(self.order) self.order = [("%s.%s" % (self.DATA_EL, k), v) for k, v in self.order] self.start = self.token.request.args.get("start", 0) self.start = int(self.start) self.limit = self.token.request.args.get("limit", 1000) self.limit = int(self.limit) if self.limit == 0: self.limit = None self.fields = self.token.request.args.get("fields") if self.fields != None: self.fields = json.loads(self.fields) self.fields = ["%s.%s" % (self.DATA_EL, k) for k in self.fields] self.fields.append(self.META_EL) self.count = self.token.request.args.get("count", 0) self.count = int(self.count) L.debug("DBOperation:: method=%r" % method) L.debug("DBOperation:: path=%r slug=%r data=%r" % (self.token.path, self.token.slug, self.token.data)) if method in ["GET", "PUT", "POST", "DELETE"]: getattr(self, method.lower())() L.debug("DBOperation:: result=%s" % snip(repr(self.token.response)))
def process(self): method = self.token.request.method self.query = self.token.request.args.get('query',"{}") self.query = json.loads(self.query) self.query=dict([("%s.%s" % (self.DATA_EL,k),v) for k,v in self.query.iteritems()]) self.order = self.token.request.args.get('order',"[]") self.order = json.loads(self.order) self.order=[("%s.%s" % (self.DATA_EL,k),v) for k,v in self.order] self.start = self.token.request.args.get('start',0) self.start = int(self.start) self.limit = self.token.request.args.get('limit',1000) self.limit = int(self.limit) if self.limit == 0: self.limit = None self.fields = self.token.request.args.get('fields') if self.fields != None: self.fields = json.loads(self.fields) self.fields =[ "%s.%s" % (self.DATA_EL,k) for k in self.fields] self.fields.append(self.META_EL) self.count = self.token.request.args.get('count',0) self.count = int(self.count) L.debug("DBOperation:: method=%r" % method) L.debug("DBOperation:: path=%r slug=%r data=%r" % (self.token.path, self.token.slug, self.token.data)) if method in ['GET', 'PUT', 'POST', 'DELETE']: getattr(self,method.lower())() L.debug("DBOperation:: result=%s" % snip(repr(self.token.response)))
def process(self): for emitter in EMITTERS: E = Emitter.get_emitter(emitter) e = E(self.token) if e.condition(): L.debug("DataFormatter:: using emitter %s" % emitter) e.format() break else: emitter = "HtmlFormatter" E = Emitter.get_emitter(emitter) e = E(self.token) L.debug("DataFormatter:: using default emitter %s" % emitter) e.format() L.debug("DataFormatter:: token.response=%s (%s)" % (snip(repr(self.token.response)),self.token.content_type))
def process(self): method = self.token.request.method self.should_stop = False self.app = self.token.request.args.get('apikey', None) if self.app != None: if self.app == "admin": return if not self.validate_api(self.app): return self.user = None ## TODO: '''<<getuser>>''' if self.token.slug != None: fullpath = os.path.join(self.token.path, self.token.slug) else: fullpath = self.token.path L.debug("PermissionChecker: full_path=%r" % fullpath) fullpath = fullpath.split('/') L.debug("PermissionChecker: full_path=%r" % fullpath) perms = set() for i in range(len(fullpath)): partial_path = fullpath[0:i + 1] L.debug("PermissionChecker: partial_path=%r" % partial_path) spec = json.dumps({"ref": "/" + "/".join(partial_path)}) data = internal_find('/data/admin/permissions/', query=spec, apikey='admin') for rec in data: auth = rec.get('auth') if self.match_auth(auth): perms.update(set(rec.get('perms', set()))) L.info("PermissionChecker: rule %s, perms=%r" % (rec.get('_src'), set(rec.get('perms', set())))) if ((method == "POST" and "new" in perms) or (method == "DELETE" and "delete" in perms) or (method == "PUT" and "edit" in perms) or (method == "GET" and "read" in perms)): pass else: self.should_stop = True
def process(self): for emitter in EMITTERS: E = Emitter.get_emitter(emitter) e = E(self.token) if e.condition(): L.debug("DataFormatter:: using emitter %s" % emitter) e.format() break else: emitter = "HtmlFormatter" E = Emitter.get_emitter(emitter) e = E(self.token) L.debug("DataFormatter:: using default emitter %s" % emitter) e.format() L.debug("DataFormatter:: token.response=%s (%s)" % (snip(repr(self.token.response)), self.token.content_type))
def process(self): method = self.token.request.method self.should_stop = False self.app = self.token.request.args.get('apikey',None) if self.app != None: if self.app == "admin": return if not self.validate_api(self.app): return self.user = None ## TODO: '''<<getuser>>''' if self.token.slug != None: fullpath = os.path.join(self.token.path, self.token.slug) else: fullpath = self.token.path L.debug("PermissionChecker: full_path=%r" % fullpath) fullpath = fullpath.split('/') L.debug("PermissionChecker: full_path=%r" % fullpath) perms = set() for i in range(len(fullpath)): partial_path = fullpath[0:i+1] L.debug("PermissionChecker: partial_path=%r" % partial_path) spec = json.dumps({ "ref" : "/" + "/".join(partial_path) }) data = internal_find('/data/admin/permissions/',query=spec,apikey='admin') for rec in data: auth = rec.get('auth') if self.match_auth(auth): perms.update(set(rec.get('perms',set()))) L.info("PermissionChecker: rule %s, perms=%r" % (rec.get('_src'),set(rec.get('perms',set())))) if ( (method == "POST" and "new" in perms) or (method == "DELETE" and "delete" in perms) or (method == "PUT" and "edit" in perms) or (method == "GET" and "read" in perms) ): pass else: self.should_stop = True