def pre_save(self, obj): can_save = False # If followers will be emailed then check the request user # has permissions, eg they are the owner / author of the # parent object (project, task, fundraiser). if obj.email_followers: parent_obj = obj.content_object if isinstance(parent_obj, PROJECT_MODEL) or \ isinstance(parent_obj, FUNDRAISER_MODEL): can_save = parent_obj.owner == self.request.user elif isinstance(parent_obj, TASK_MODEL): can_save = parent_obj.author == self.request.user else: can_save = True if not can_save: raise exceptions.PermissionDenied() # Set the author / editor and ip address for the request if not obj.author: obj.author = self.request.user else: obj.editor = self.request.user obj.ip_address = get_client_ip(self.request)
def perform_create(self, serializer): self.check_object_permissions( self.request, serializer.Meta.model(author=self.request.user, **serializer.validated_data)) serializer.save(author=self.request.user, ip_address=get_client_ip(self.request))
def process_response(self, request, response): """ Log a message for each failed login attempt. """ if reverse('admin:login') == request.path and request.method == 'POST' and response.status_code != 302: authorization_logger.error('Authorization failed: {username} {ip}'.format( ip=get_client_ip(request), username=request.POST.get('username') )) if reverse('token-auth') == request.path and request.method == 'POST' and response.status_code != 200: try: data = json.loads(request.body) except ValueError: data = request.POST authorization_logger.error('Authorization failed: {username} {ip}'.format( ip=get_client_ip(request), username=data.get('email') )) return response
def post(self, request, *args, **kwargs): serializer = self.serializer_class(data=request.data, context={'request': request}) serializer.is_valid(raise_exception=True) ip = get_client_ip(request) reset(ip=ip) return response.Response(status=status.HTTP_201_CREATED)
def pre_save(self, obj): """ Set the voter. Check that a user has not voted before """ try: self.get_queryset().get(voter=self.request.user, project=obj.project) raise exceptions.ParseError(["You cannot vote twice"]) except Vote.DoesNotExist: pass obj.voter = self.request.user obj.ip_address = get_client_ip(self.request)
def process_response(self, request, response): """ Log a message for each failed login attempt. """ if reverse( 'admin:login' ) == request.path and request.method == 'POST' and response.status_code != 302: error = 'Authorization failed: {username} {ip}'.format( ip=get_client_ip(request), username=request.POST.get('username')) authorization_logger.error(error) if reverse( 'token-auth' ) == request.path and request.method == 'POST' and response.status_code != 200: try: data = json.loads(request.body) except ValueError: data = request.POST error = 'Authorization failed: {username} {ip}'.format( ip=get_client_ip(request), username=data.get('email')) authorization_logger.error(error) return response
def locked_out(request): if request.POST: form = AxesCaptchaForm(request.POST) if form.is_valid(): ip = get_client_ip(request) reset(ip=ip) return HttpResponseRedirect(reverse('admin:login')) else: form = AxesCaptchaForm() return render( request, 'admin/locked_out.html', dict(form=form), )
def to_internal_value(self, data): result = super(CaptchaField, self).to_internal_value(data) try: captcha = client.submit(recaptcha_response=result, private_key=settings.RECAPTCHA_PRIVATE_KEY, remoteip=get_client_ip( self.context['request'])) except HTTPError: # Catch timeouts, etc raise serializers.ValidationError( self.error_messages["captcha_error"], code="captcha_error") if not captcha.is_valid or not validate_host( captcha.extra_data['hostname'], settings.ALLOWED_HOSTS): raise serializers.ValidationError('Captcha value is not valid') return result
def perform_create(self, serializer): """ Set the voter. Check that a user has not voted before """ serializer.save(ip_address=get_client_ip(self.request))
def perform_update(self, serializer): serializer.save(editor=self.request.user, ip_address=get_client_ip(self.request))
def perform_create(self, serializer): serializer.save(author=self.request.user, ip_address=get_client_ip(self.request))
def get_user_data(self): user = self.order_payment.order.user ip_address = get_client_ip() if user: user_data = { 'id': user.id, 'first_name': user.first_name or 'Unknown', 'last_name': user.last_name or 'Unknown', 'email': user.email, 'ip_address': ip_address, } else: user_data = { 'id': 1, 'first_name': 'Nomen', 'last_name': 'Nescio', 'email': settings.CONTACT_EMAIL, 'ip_address': ip_address } if user and hasattr(user, 'address'): street = user.address.line1.split(' ') if street[-1] and any(char.isdigit() for char in street[-1]): user_data['house_number'] = street.pop(-1) user_data['street'] = ' '.join(street) else: user_data['house_number'] = 'Unknown' if user.address.line1: user_data['street'] = user.address.line1 else: user_data['street'] = 'Unknown' if user.address.postal_code: user_data['postal_code'] = user.address.postal_code else: user_data['postal_code'] = 'Unknown' if user.address.city: user_data['city'] = user.address.city else: user_data['city'] = 'Unknown' if user.address.country and hasattr(user.address.country, 'alpha2_code'): user_data['country'] = user.address.country.alpha2_code elif get_country_code_by_ip(ip_address): user_data['country'] = get_country_code_by_ip(ip_address) else: user_data['country'] = 'NL' else: user_data['postal_code'] = 'Unknown' user_data['street'] = 'Unknown' user_data['city'] = 'Unknown' country = get_country_code_by_ip(ip_address) if country: user_data['country'] = country else: user_data['country'] = 'NL' user_data['house_number'] = 'Unknown' if not user_data['country']: user_data['country'] = 'NL' user_data['company'] = '' user_data['kvk_number'] = '' user_data['vat_number'] = '' user_data['house_number_addition'] = '' user_data['state'] = '' return user_data
def test_get_client_ip_extra_spaces(self): request = RequestFactory().get( '/', HTTP_X_FORWARDED_FOR='8.8.8.8, 127.0.0.1 ') ip = get_client_ip(request) self.assertEqual(ip, '127.0.0.1')
def pre_save(self, obj): obj.author = self.request.user obj.ip_address = get_client_ip(self.request)
def get_user_data(self): user = self.order_payment.order.user ip_address = get_client_ip() if user: user_data = { 'id': user.id, 'first_name': user.first_name or 'Unknown', 'last_name': user.last_name or 'Unknown', 'email': user.email, 'ip_address': ip_address, } else: user_data = { 'id': 1, 'first_name': 'Nomen', 'last_name': 'Nescio', 'email': properties.CONTACT_EMAIL, 'ip_address': ip_address } default_country_code = getattr(properties, 'DEFAULT_COUNTRY_CODE') if user and hasattr(user, 'address'): street = user.address.line1.split(' ') if street[-1] and any(char.isdigit() for char in street[-1]): user_data['house_number'] = street.pop(-1) if len(street): user_data['street'] = ' '.join(street) else: user_data['street'] = 'Unknown' else: user_data['house_number'] = 'Unknown' if user.address.line1: user_data['street'] = user.address.line1 else: user_data['street'] = 'Unknown' if user.address.postal_code: user_data['postal_code'] = user.address.postal_code else: user_data['postal_code'] = 'Unknown' if user.address.city: user_data['city'] = user.address.city else: user_data['city'] = 'Unknown' if user.address.country and hasattr(user.address.country, 'alpha2_code'): user_data['country'] = user.address.country.alpha2_code else: user_data['country'] = default_country_code else: user_data['postal_code'] = 'Unknown' user_data['street'] = 'Unknown' user_data['city'] = 'Unknown' user_data['country'] = default_country_code user_data['house_number'] = 'Unknown' if not user_data['country']: user_data['country'] = default_country_code user_data['company'] = '' user_data['kvk_number'] = '' user_data['vat_number'] = '' user_data['house_number_addition'] = '' user_data['state'] = '' return user_data
def pre_save(self, obj): if not obj.author: obj.author = self.request.user else: obj.editor = self.request.user obj.ip_address = get_client_ip(self.request)
def test_get_client_ip(self): request = RequestFactory().get('/', HTTP_REMOTE_ADDR='127.0.0.1') ip = get_client_ip(request) self.assertEqual(ip, '127.0.0.1')