Esempio n. 1
0
    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
Esempio n. 2
0
 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'])
Esempio n. 3
0
    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