def add(cls, parent_id, child_id): RoleRelation.get_by(parent_id=parent_id, child_id=child_id) and abort( 400, "It's already existed") if parent_id in cls.recursive_child_ids(child_id): return abort(400, "Circulation inheritance!!!") RoleRelationCache.clean(parent_id) RoleRelationCache.clean(child_id) return RoleRelation.create(parent_id=parent_id, child_id=child_id)
def delete2(parent_id, child_id): existed = RoleRelation.get_by(parent_id=parent_id, child_id=child_id, first=True, to_dict=False) existed or abort( 400, "RoleRelation < {0} -> {1} > does not exist".format( parent_id, child_id)) existed.soft_delete()
def delete_role(cls, rid): role = Role.get_by_id(rid) or abort( 404, "Role <{0}> does not exist".format(rid)) for i in RoleRelation.get_by(parent_id=rid, to_dict=False): i.soft_delete() for i in RoleRelation.get_by(child_id=rid, to_dict=False): i.soft_delete() for i in RolePermission.get_by(rid=rid, to_dict=False): i.soft_delete() role_rebuild.apply_async(args=(list( RoleRelationCRUD.recursive_child_ids(rid)), ), queue=ACL_QUEUE) RoleCache.clean(rid) RoleRelationCache.clean(rid) role.soft_delete()
def delete(cls, _id): existed = RoleRelation.get_by_id(_id) or abort( 400, "RoleRelation <{0}> does not exist".format(_id)) child_ids = cls.recursive_child_ids(existed.child_id) for child_id in child_ids: role_rebuild.apply_async(args=(child_id, ), queue=ACL_QUEUE) RoleRelationCache.clean(existed.parent_id) RoleRelationCache.clean(existed.child_id) existed.soft_delete()
def delete2(cls, parent_id, child_id): existed = RoleRelation.get_by(parent_id=parent_id, child_id=child_id, first=True, to_dict=False) existed or abort( 400, "RoleRelation < {0} -> {1} > does not exist".format( parent_id, child_id)) child_ids = cls.recursive_child_ids(existed.child_id) for child_id in child_ids: role_rebuild.apply_async(args=(child_id, ), queue=ACL_QUEUE) RoleRelationCache.clean(existed.parent_id) RoleRelationCache.clean(existed.child_id) existed.soft_delete()
def get_child_ids(rid): res = RoleRelation.get_by(parent_id=rid, to_dict=False) return [i.child_id for i in res]
def delete(_id): existed = RoleRelation.get_by_id(_id) or abort( 400, "RoleRelation <{0}> does not exist".format(_id)) existed.soft_delete()
def add(parent_id, child_id): RoleRelation.get_by(parent_id=parent_id, child_id=child_id) and abort( 400, "It's already existed") return RoleRelation.create(parent_id=parent_id, child_id=child_id)