def getDocs(self): is_admin = session.is_admin() doc = { "name" : self.name, "description" : self.desc, "paths" : {} } for name, obj in inspect.getmembers(self, inspect.isclass): desc = obj.desc if hasattr(obj, "desc") else "" docs = obj.docs if hasattr(obj, "docs") else [] docs = [d.lower() for d in docs] path = self.path + obj.path if hasattr(obj, "path") else "" params = obj.params if hasattr(obj, "params") else {} methods = {} for name, obj in inspect.getmembers(obj, inspect.ismethod): name = name.lower() if name in ["get", "post", "put", "delete", "head", "trace", "options"]: document = name in docs m_params = params[name] if name in params else {} if is_admin or document: methods[name] = m_params if len(methods) > 0: doc["paths"][path] = methods if len(doc["paths"]) > 0: return doc return None
def admin_func(handler, *args): if session.is_admin(): func(handler, *args) else: handler.failure(code=401)