def create_dept(self, dept_info): ''' 创建部门 ''' serializer = DeptDetailSerializer(data=dept_info) serializer.is_valid(raise_exception=True) serializer.save() dept = serializer.instance dept.order_no = Dept.get_max_order_no(parent=dept.parent) + 1 dept.save() # 批量创建组权限 # 1) 去重 perm_ids = Perm.valid_objects.values_list('pk', flat=True) exist_perm_ids = DeptPerm.valid_objects.filter( owner=serializer.instance).values_list('perm_id', flat=True) perm_ids = set(perm_ids).difference(exist_perm_ids) # 2) 批量创建 dept_perms = [ DeptPerm(owner=serializer.instance, perm_id=x) for x in perm_ids ] DeptPerm.objects.bulk_create(dept_perms) return serializer.instance
def move_dept_to_dept(self, dept, parent_dept): ''' 将一个已有部门移至另一部门下 ''' if dept == parent_dept or parent_dept.if_belong_to_dept( dept, recursive=True): raise ValidationError({'node': ['deadlock']}) dept.order_no = Dept.get_max_order_no(parent=parent_dept) + 1 dept.parent = parent_dept dept.save(update_fields=['order_no', 'parent'])
def create_dept(self, dept_info): ''' 创建部门 ''' serializer = DeptDetailSerializer(data=dept_info) serializer.is_valid(raise_exception=True) serializer.save() dept = serializer.instance dept.order_no = Dept.get_max_order_no(parent=dept.parent) + 1 dept.save() for perm in Perm.valid_objects.all(): DeptPerm.valid_objects.create(owner=serializer.instance, perm=perm) return dept