Ejemplo n.º 1
0
    def patch(self, request, *args, **kwargs):  # pylint: disable=unused-argument
        '''
        调整子部门 [PATCH]
        目前应只需要排序和移入
        '''
        parent_dept = self.get_object()
        data = json.loads(request.body.decode('utf-8'))
        subject = data.get('subject', '')
        if subject not in ['sort', 'add']:
            raise ValidationError(
                {'subject': ['this field must be `sort` or `add`']})

        filters = {}
        if subject == 'sort':
            filters = {'parent': parent_dept}

        dept_uids = get_patch_scope(request)
        try:
            depts = Dept.get_from_pks(pks=dept_uids,
                                      pk_name='uid',
                                      raise_exception=True,
                                      **filters)
        except ObjectDoesNotExist as error:
            bad_uid = error.args[0]
            raise ValidationError(
                {'dept_uids': ['dept:{} invalid'.format(bad_uid)]})

        cli = CLI()
        if subject == 'sort':
            cli.sort_depts_in_dept(depts, parent_dept)
        elif subject == 'add':
            for dept in depts:
                cli.move_dept_to_dept(dept, parent_dept)

        return Response(DeptListSerializer(parent_dept).data)
Ejemplo n.º 2
0
 def put(self, request, uid):
     dept_ids = request.data.get('dept_ids', [])
     depts = Dept.get_from_pks(pks=dept_ids,
                               pk_name='id',
                               raise_exception=True,
                               is_del=False)
     Dept.sort_as(depts)
     return Response({'error_code': 0})
Ejemplo n.º 3
0
def get_depts_from_uids(dept_uids):
    '''
    根据dept uid按顺序返回dept list
    '''
    try:
        depts = Dept.get_from_pks(pks=dept_uids,
                                  pk_name='uid',
                                  raise_exception=True,
                                  is_del=False)
    except ObjectDoesNotExist as error:
        bad_uid = error.args[0]
        raise ValidationError(
            {'dept_uids': ['dept:{} does not exist'.format(bad_uid)]})
    return depts