def handle_object(self, obj): if type(obj) == dict and len(obj.keys()) == 1 and obj.has_key('_ref'): L.info("ReferenceFetcher: Attempting to fetch %r" % obj) url = obj['_ref'] if url.strip() == '': return None data = None try: data = internal_find(url, follow=False, lang=self.token.lang) if data != None: return data except Exception: L.exception("ReferenceFetcher: Failed to fetch %r" % obj) elif type(obj) == dict: return dict([(k, self.handle_object(v)) for k, v in obj.iteritems()]) elif type(obj) == list: return [self.handle_object(el) for el in obj] return obj
def handle_object(self,obj): if type(obj) == dict and len(obj.keys())==1 and obj.has_key('_ref'): L.info("ReferenceFetcher: Attempting to fetch %r" % obj) url = obj['_ref'] if url.strip() == '': return None data = None try: data = internal_find(url,follow=False,lang=self.token.lang) if data != None: return data except Exception: L.exception("ReferenceFetcher: Failed to fetch %r" % obj) elif type(obj) == dict: return dict([ (k,self.handle_object(v)) for k,v in obj.iteritems()]) elif type(obj) == list: return [ self.handle_object(el) for el in obj] return obj
def before_request(): g.db = DB() g.app = app g.user = None if 'openid' in session: openid_key = urllib.quote(urllib.quote(session['openid'],safe='')) user = internal_find('/data/admin/users/%s' % openid_key) if user != None: g.user = user
def before_request(): g.db = DB() g.app = app g.user = None if 'openid' in session: openid_key = urllib.quote(urllib.quote(session['openid'], safe='')) user = internal_find('/data/admin/users/%s' % openid_key) if user != None: g.user = user
def before_request(): g.db = DB() g.app = app g.user = None if 'openid' in session: openid_key = session['openid'].encode('hex') user = internal_find('/data/admin/users/%s' % openid_key) if user != None: g.user = user
def create_or_login(resp): session['openid'] = resp.identity_url openid_key = urllib.quote(urllib.quote(session['openid'],safe='')) user = internal_find('/data/admin/users/%s' % openid_key) if user != None: L.info(u'Successfully signed in fullname=%s, email=%s (%r)' % (resp.fullname, resp.email, resp.__dict__)) else: data = { "fullname" : resp.fullname, "email" : resp.email, "key" : openid_key } user = internal_save('/data/admin/users/%s' % openid_key, data) L.info(u'Successfully created fullname=%s, email=%s (%r)' % (resp.fullname, resp.email, resp.__dict__)) g.user = user return redirect(oid.get_next_url())
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 condition(self): format = self.token.get_request_format() if not (format == None or format.startswith('template')): return False try: templates = internal_find( self.token.path, fields=["templates"] ).get("templates",{}) except: return False self.template_name = ("%s:" % format).split(':')[1] if self.template_name == "": if self.token.slug != None: self.template = templates.get('detail') else: self.template = templates.get('list') else: self.template = templates.get('%s' % self.template_name) return self.template != None
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 create_or_login(resp): session['openid'] = resp.identity_url openid_key = urllib.quote(urllib.quote(session['openid'], safe='')) user = internal_find('/data/admin/users/%s' % openid_key) if user != None: L.info(u'Successfully signed in fullname=%s, email=%s (%r)' % (resp.fullname, resp.email, resp.__dict__)) else: data = { "fullname": resp.fullname, "email": resp.email, "key": openid_key } user = internal_save('/data/admin/users/%s' % openid_key, data) L.info(u'Successfully created fullname=%s, email=%s (%r)' % (resp.fullname, resp.email, resp.__dict__)) g.user = user return redirect(oid.get_next_url())
def condition(self): format = self.token.get_request_format() if not (format == None or format.startswith('template')): return False try: templates = internal_find(self.token.path, fields=["templates" ]).get("templates", {}) except: return False self.template_name = ("%s:" % format).split(':')[1] if self.template_name == "": if self.token.slug != None: self.template = templates.get('detail') else: self.template = templates.get('list') else: self.template = templates.get('%s' % self.template_name) return self.template != None
def format(self): real_path = self.token.path[:-len(self.STATIC_SUFFIX)] statics = internal_find( real_path, fields=["static-files"] ).get("static-files",{}) self.token.content_type, self.token.response = statics.get(self.token.slug.replace('.','__'),("text/html","")) self.token.response = self.token.response.decode('base64')