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)
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})
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)
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)
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)
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
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': 'Не указаны все необходимые аргументы'})
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})
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)
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)
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)
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)
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})
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)
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)