def create_operation(operation_key, handler_classes, resource_oql, modifier_id): if type(handler_classes) == str: handler_classes = [handler_classes] query = Operation.all() for handler_class in handler_classes: query.filter("handler_classes like ", "%%%s%%" % handler_class) if query.count() > 0: raise CoreError("One handler only can have one corresponding operation. The handler %s is corresponding to multiple operations." % handler_class) query = Operation.all() query.filter("operation_key =", operation_key) operation = Operation(operation_key=operation_key) operation.handler_classes = ",".join(handler_classes) operation.resource_oql = resource_oql operation.create(modifier_id) return operation
def get_operation(operation_key=None, handler_class=None): if operation_key is None and handler_class is None: raise CoreError("operation_key and handler_class can't be empty meantime.") query = Operation.all() if operation_key is not None: query.filter("operation_key =", operation_key) if handler_class is not None: query.filter("handler_classes like ", "%%%s%%" % handler_class) operation = query.get() return operation
def fetch_operations(role_id): query = Operation.all("a") query.model(RoleOperation.get_modelname(), "b", join="inner", on="a.operation_key = b.operation_key") query.filter("b.role_id =", role_id) return query.fetch()