Ejemplo n.º 1
0
 def patch(self, request, pk):
     user = User.objects.get(pk=pk)
     serializer = UserSerializer(user, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_200_OK)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 2
0
    def post(self, request, *args, **kwargs):
        if not request.user.is_authenticated:
            return JsonResponse({'Status': False, 'Error': 'Log in required'}, status=403)
        # проверяем обязательные аргументы

        if 'password' in request.data:
            errors = {}
            # проверяем пароль на сложность
            try:
                validate_password(request.data['password'])
            except Exception as password_error:
                error_array = []
                # noinspection PyTypeChecker
                for item in password_error:
                    error_array.append(item)
                return JsonResponse({'Status': False, 'Errors': {'password': error_array}})
            else:
                request.user.set_password(request.data['password'])

        # проверяем остальные данные
        user_serializer = UserSerializer(request.user, data=request.data, partial=True)
        if user_serializer.is_valid():
            print(user_serializer)
            user_serializer.save()
            return JsonResponse({'Status': True})
        else:
            return JsonResponse({'Status': False, 'Errors': user_serializer.errors})
Ejemplo n.º 3
0
    def post(self, request, format=None):
        result = {}
        try:
            data = request.data
            account = data.get('account')
            email = data.get('email')
            mobile = data.get('mobile')
            password = data.get('password')

            # 创建者id
            if request.user.id is None:
                data['creater_id'] = data.get("creater_id")
            else:
                data['creater_id'] = request.user.id

            if not account:
                data['account'] = mobile

            if 'name' not in data.keys() or data.get('name') == '':
                data['name'] = account

            data['updater_id'] = data['creater_id']
            data['is_delete'] = False
            data['password'] = make_password(password)

            users = User.objects.filter(username=account, is_delete=0)
            if users.exists():
                result['msg'] = '新增失败:用户名已存在'
                result['success'] = False
                return Response(result, status.HTTP_400_BAD_REQUEST)
            elif User.objects.filter(email=email, is_delete=0).exists():
                result['msg'] = '新增失败:邮箱已存在'
                result['success'] = False
                return Response(result, status.HTTP_400_BAD_REQUEST)
            elif User.objects.filter(mobile=mobile, is_delete=0).exists():
                result['msg'] = '新增失败:手机号已存在'
                result['success'] = False
                return Response(result, status.HTTP_400_BAD_REQUEST)

            try:
                serializer = UserSerializer(data=data)
                serializer.is_valid(raise_exception=True)
                serializer.save()
            except Exception as e:
                result['msg'] = '新增失败:%s' % e
                result['success'] = False
                return Response(result, status.HTTP_400_BAD_REQUEST)

            result['msg'] = '新增成功'
            result['success'] = True
            result['data'] = serializer.data
            return Response(result, status.HTTP_200_OK)
        except Exception as e:
            result['msg'] = '%s' % e
            result['success'] = False
            return Response(result, status.HTTP_500_INTERNAL_SERVER_ERROR)
Ejemplo n.º 4
0
 def post(self, request):
     serializer = UserSerializer(data=request.data)
     if serializer.is_valid():
         user = User.objects.all().filter(userName=request.data["userName"])
         if User.objects.filter(userName=request.data["userName"]).exists():
             return Response({"error": "Username already taken"})
         else:
             serializer.save()
             return Response({"success": serializer.data})
     return Response(serializer.errors, status=status_HTTP_404_BAD_REQUEST)
Ejemplo n.º 5
0
    def post(self, request, format=None):
        result = {}
        try:
            data = request.data
            account = data.get('account')
            email = data.get('email')
            mobile = data.get('mobile')
            job_number = data.get('job_number')

            data['creater_id'] = request.user.id
            data['updater_id'] = data['creater_id']
            data['is_delete'] = False
            data['password'] = make_password('123456')

            users = User.objects.filter(username=account, is_delete=0)
            if users.exists():
                result['msg'] = '新增失败:用户帐号已存在'
                result['success'] = False
                return Response(result, status.HTTP_200_OK)
            elif User.objects.filter(email=email, is_delete=0).exists():
                result['msg'] = '新增失败:邮箱已存在'
                result['success'] = False
                return Response(result, status.HTTP_200_OK)
            elif User.objects.filter(mobile=mobile, is_delete=0).exists():
                result['msg'] = '新增失败:手机号已存在'
                result['success'] = False
                return Response(result, status.HTTP_200_OK)
            elif User.objects.filter(job_number=job_number,
                                     is_delete=0).exists():
                result['msg'] = '新增失败:工号已存在'
                result['success'] = False
                return Response(result, status.HTTP_200_OK)

            try:
                serializer = UserSerializer(data=data)
                serializer.is_valid(raise_exception=True)
                serializer.save()
            except Exception as e:
                result['msg'] = '新增失败:%s' % e
                result['success'] = False
                return Response(result, status.HTTP_400_BAD_REQUEST)

            result_data = serializer.data
            result_data['roles'] = []
            result_data['groups'] = []
            result['msg'] = '新增成功'
            result['success'] = True
            result['data'] = result_data
            return Response(result, status.HTTP_200_OK)
        except Exception as e:
            result['msg'] = '%s' % e
            result['success'] = False
            return Response(result, status.HTTP_500_INTERNAL_SERVER_ERROR)
Ejemplo n.º 6
0
    def post(self, request):
        data = request.data
        serializer = UserSerializer(data=data)
        if serializer.is_valid():
            user = serializer.save()
            profile = user.profile
            token, created = Token.objects.get_or_create(user=user)

            return Response({
                'user': {
                    "id": user.id,
                    "username": user.username,
                    "email": user.email,
                    "first_name": user.first_name,
                    "last_name": user.last_name,
                    "last_login": user.last_login,
                    "gender": profile.gender,
                    "country": profile.country,
                    "birthday": profile.birthday
                },
                'meta': {
                    'token': token.key
                }
            })
        else:
            response = Response(serializer.errors,
                                status=status.HTTP_400_BAD_REQUEST)
            return response
Ejemplo n.º 7
0
    def post(self, request, *args, **kwargs):

        # проверяем обязательные аргументы
        if {'first_name', 'last_name', 'email', 'password', 'company', 'position'}.issubset(request.data):
            errors = {}

            # проверяем пароль на сложность

            try:
                validate_password(request.data['password'])
            except Exception as password_error:
                error_array = []
                # noinspection PyTypeChecker
                for item in password_error:
                    error_array.append(item)
                return JsonResponse({'Status': False, 'Errors': {'password': error_array}})
            else:
                # проверяем данные для уникальности имени пользователя

                request.data.update({})
                user_serializer = UserSerializer(data=request.data)
                if user_serializer.is_valid():
                    # сохраняем пользователя
                    user = user_serializer.save()
                    user.set_password(request.data['password'])
                    user.save()
                    new_user_registered.send(sender=self.__class__, user_id=user.id)
                    return JsonResponse({'Status': True})
                else:

                    return JsonResponse({'Status': False, 'Errors': user_serializer.errors})

        return JsonResponse({'Status': False, 'Errors': 'Не указаны все необходимые аргументы'})
Ejemplo n.º 8
0
    def put(self, request, *args, **kwargs):
        # Проверка авторизован ли пользователь
        if not request.user.is_authenticated:
            return JsonResponse({
                'Status': False,
                'Errors': 'Пользователь не авторизован'
            })

        # Изменение данных
        serializer = UserSerializer(request.user,
                                    data=request.data,
                                    partial=True)
        if serializer.is_valid():
            serializer.save()
            return JsonResponse({'Status': True, 'Info': serializer.data})
        else:
            return JsonResponse({'Status': False, 'Errors': serializer.errors})
Ejemplo n.º 9
0
 def patch(self, request, pk):
     user = User.objects.get(pk=pk)
     user_data = request.data['user']
     serializer = UserSerializer(data=user_data, instance=user)
     if serializer.is_valid():
         user = serializer.save()
         return Response({'message': 'Success'})
     else:
         return Response(serializer.errors,
                         status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 10
0
def create_user(request):
    validated_data=JSONParser().parse(request)
    if(validated_data['password']!=validated_data['password2']):
        return JsonResponse("Passwords donot match",safe=False)
    elif(User.objects.filter(email=validated_data['email']).exists()):
        return JsonResponse("There exists an account with this email",safe=False)
    elif(User.objects.filter(username=validated_data['username']).exists()):
        return JsonResponse("There exists an account with this username",safe=False)
    else:
        try:
            new_data={}
            new_data['username']=validated_data['username']
            new_data['password']=validated_data['password']
            new_data['email']=validated_data['email']
        except:
            return JsonResponse("failed",safe=False)
        user_serializer=UserSerializer(data=new_data)
        if user_serializer.is_valid():
            user_serializer.save()
            return JsonResponse("success",safe=False)
        return JsonResponse("Invalid credentials",safe=False)
Ejemplo n.º 11
0
    def put(self, request, *args, **kwargs):
        try:
            user = User.objects.get(pk=kwargs["pk"])
        except User.DoesNotExist:
            return HttpResponse(status=404)

        data = JSONParser().parse(request)

        # Set to existing hash if password is null.
        if data["password"] is None:
            data["password"] = getattr(user, "password")

        serializer = UserSerializer(user, data=data)

        success_status=False

        if serializer.is_valid():
            success_status=True
            serializer.save()
        else:
            print(serializer.errors)

        if "roles" in data:
            user_id = serializer.data["id"]
            allowed_roles = AllowedRole.objects.filter(user_id=user_id)
            for role in data["roles"]:
                if role not in list(allowed_roles.values_list('role_id', flat=True)):
                    user = User.objects.get(pk=user_id)
                    roles = Role.objects.get(pk=role)
                    AllowedRole.objects.create(user_id=user, role_id=roles)
            for i in allowed_roles:
                if i.role_id.id not in data["roles"]:
                    i.delete()

        if success_status:
            return JsonResponse(serializer.data, status=status.HTTP_200_OK)

        return JsonResponse(serializer.errors, status=status.HTTP_406_NOT_ACCEPTABLE)
Ejemplo n.º 12
0
    def post(self, request, **kwargs):
        data = JSONParser().parse(request)
        print(data)
        serializer = UserSerializer(data=data)

        success_status=False

        if serializer.is_valid():
            success_status=True
            serializer.save()
        else:
            pass

        if "roles" in data:
            user_id = serializer.data["id"]
            for role_id in data["roles"]:
                user = User.objects.get(pk=user_id)
                role = Role.objects.get(pk=role_id)
                AllowedRole.objects.create(user_id=user, role_id=role)

        if success_status:
            return Response(serializer.data, status=status.HTTP_201_CREATED)

        return JsonResponse(serializer.errors, status=status.HTTP_406_NOT_ACCEPTABLE)
Ejemplo n.º 13
0
    def post(self, request, *args, **kwargs):
        errors_dict = {}
        required_fields = ['password', 'password_repeat', 'email', 'username']

        for field_name in required_fields:
            # Проверка наличия необходимых аргументов
            field = request.data.get(field_name)
            if not field:
                errors_dict[field_name] = 'Необходимо заполнить.'

            # Проверка пароля
            if field_name == 'password':
                try:
                    validate_password(request.data['password'])
                except Exception as e:
                    errors_list = []
                    for error in e:
                        activate('ru')
                        errors_list.append(_(error))
                    errors_dict['password'] = errors_list

            # Проверка повтора пароля на совпадение с паролем
            elif field_name == 'password_repeat':
                if request.data['password']:
                    if not request.data['password'] == request.data[
                            'password_repeat']:
                        errors_dict['password_repeat'] = 'Пароли не совпадают.'
                else:
                    errors_dict[
                        'password_repeat'] = 'Сначала придумайте пароль.'

            # Проверка уникальности логина
            elif field_name == 'username':
                if User.objects.filter(username=request.data['username']):
                    errors_dict[
                        'username'] = '******'

            # Проверка уникальности email
            elif field_name == 'email':
                if User.objects.filter(email=request.data['email']):
                    errors_dict[
                        'email'] = 'Пользоваетль с таким email уже существует.'

        # Если словарь с ошибками не пуст, то отправляем его ответ
        if errors_dict:
            return JsonResponse({'Status': False, 'Errors': errors_dict})

        # Если ошибок нет, то соханяем пользователя, создаем для него токен авторизации
        serializer = UserSerializer(data=request.data)
        if serializer.is_valid():
            # Сохранение пользователя
            user = serializer.save()
            user.set_password(request.data['password'])
            if 'firstname' in request.data:
                user.first_name = request.data['firstname']
            if 'lastname' in request.data:
                user.last_name = request.data['lastname']
            user.save()

            # Создание токена
            Token.objects.get_or_create(user=user)

            return JsonResponse({'Status': True})
        else:
            return JsonResponse({'Status': False, 'Errors': serializer.errors})
Ejemplo n.º 14
0
    def patch(self, request, format=None):
        result = {}
        try:
            data = request.data
            if request.user.id == data.get('id') and 'is_active' in data.keys(
            ) and not data.get('is_active'):
                result['msg'] = '操作失败,不能禁用自身账号'
                result['success'] = False
                return Response(result, status.HTTP_400_BAD_REQUEST)

            # 修改者id
            if request.user.id is None:
                data['updater_id'] = data.get("updater_id")
            else:
                data['updater_id'] = request.user.id

            obj = User.objects.filter(id=data.get('id')).first()
            del data['id']
            if obj:
                account = data.get('account')
                email = data.get('email')
                mobile = data.get('mobile')
                users = User.objects.exclude(id=obj.id).filter(
                    username=account, is_delete=0)
                if users.exists():
                    result['msg'] = '修改失败:用户名已存在'
                    result['success'] = False
                    return Response(result, status.HTTP_400_BAD_REQUEST)
                elif User.objects.exclude(id=obj.id).filter(
                        email=email, is_delete=0).exists():
                    result['msg'] = '修改失败:邮箱已存在'
                    result['success'] = False
                    return Response(result, status.HTTP_400_BAD_REQUEST)
                elif User.objects.exclude(id=obj.id).filter(
                        mobile=mobile, is_delete=0).exists():
                    result['msg'] = '修改失败:手机号已存在'
                    result['success'] = False
                    return Response(result, status.HTTP_400_BAD_REQUEST)

                try:
                    serializer = UserSerializer(obj, data=data, partial=True)
                    serializer.is_valid(raise_exception=True)
                    serializer.save()
                except Exception as e:
                    result['msg'] = '修改失败:%s' % e
                    result['success'] = False
                    return Response(result, status.HTTP_400_BAD_REQUEST)

                result['msg'] = '修改成功'
                result['success'] = True

                temp_data = {}
                data_keys = list(data.keys())
                data_keys.append('update_time')
                for key in data_keys:
                    temp_data[key] = serializer.data.get(key)
                result['data'] = temp_data
                return Response(result, status.HTTP_200_OK)
            else:
                result['msg'] = '修改失败,用户不存在'
                result['success'] = False
                return Response(request, status.HTTP_404_NOT_FOUND)
        except Exception as e:
            result['msg'] = '%s' % e
            result['success'] = False
            return Response(result, status.HTTP_500_INTERNAL_SERVER_ERROR)
Ejemplo n.º 15
0
 def post(self, request):
     serializer = UserSerializer(data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)