Exemplo n.º 1
0
    def core_post(users_file, node_uid):
        '''
        creat or update users
        '''
        cli = CLI()

        reader = csv.DictReader(io.StringIO(users_file.read().decode('utf-8')))
        res = []
        users = []
        for index, row in enumerate(reader):
            username = row.get('username')
            user = User.valid_objects.filter(username=username).first()

            try:
                if user:
                    cli.update_user(user, row)
                else:
                    user = cli.create_user(row)
            except ValidationError as exc:
                raise ValidationError({index + 1: exc.detail})

            users.append(user)    # 重复导入的后果可以接受,故不处理
            res.append(UserCSVSerializer(user).data)

        if node_uid:
            node, node_subject = TreeNode.retrieve_node(node_uid)
            if node_subject == 'dept':
                cli.add_users_to_dept(users, node)
            elif node_subject == 'group':
                cli.add_users_to_group(users, node)
            else:
                raise ValueError

        return res
Exemplo n.º 2
0
    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.save()
        if 'private_email' in serializer.validated_data:
            user.origin = 4
        if 'mobile' in serializer.validated_data:
            user.origin = 3
        user.save()

        cli = CLI(user)
        cli.add_users_to_group([user], Group.get_extern_root())
        data = self.read_serializer_class(user).data
        data.update(token=user.token)
        return Response(data, status=status.HTTP_201_CREATED)
Exemplo n.º 3
0
 def _auto_create_manager_group(request, child_group):
     '''
     当创建大类时,自动创建子管理员组
     成员只有创建者一人,节点范围仅此大类,人员管理范围仅自己,应用管理范围为空
     '''
     cli = CLI()
     data = {
         'uid': gen_uid(name=uuid_utils.uuid4().hex[:6], cls=Group),
         'name': f'管理分组{child_group.name}',
         'manager_group': {
             'nodes': [child_group.node_uid],
             'users': [request.user.username],
             'scope_subject': 2,
         },
     }
     manager_group = cli.create_group(data)
     parent, _ = Group.valid_objects.get_or_create(uid='manager')
     cli.add_group_to_group(manager_group, parent)
     cli.add_users_to_group([request.user], manager_group)
Exemplo n.º 4
0
Arquivo: app.py Projeto: justpic/arkid
 def _auto_create_manager_group(request, app):
     '''
     当创建应用时,自动创建子管理员组
     成员只有创建者一人,节点管理范围为空,人员管理范围仅自己,应用管理范围仅此一个应用
     '''
     cli = CLI()
     data = {
         'uid': gen_uid(name=uuid_utils.uuid4().hex[:6], cls=Group),
         'name': f'管理应用{app.name}',
         'manager_group': {
             'apps': [app.uid],
             'users': [request.user.username],
             'scope_subject': 2,
         }
     }
     manager_group = cli.create_group(data)
     parent, _ = Group.valid_objects.get_or_create(uid='manager')
     cli.add_group_to_group(manager_group, parent)
     cli.add_users_to_group([request.user], manager_group)
Exemplo n.º 5
0
    def create(self, request, *args, **kwargs):
        '''
        qq扫码加绑定
        '''
        if not AccountConfig.get_current().support_qq_qr_register:
            return Response({'err_msg': 'qq qr register not allowed'}, HTTP_403_FORBIDDEN)

        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = self.perform_create(serializer)

        cli = CLI(user)
        cli.add_users_to_group([user], Group.get_extern_root())
        data = self.read_serializer_class(user).data
        data.update(token=user.token)
        open_id = serializer.validated_data['user_id']
        qq_user = QQUser.valid_objects.create(open_id=open_id, user=user)
        qq_user.save()
        return Response(data, status=status.HTTP_201_CREATED)