def subscribe_email(request, newsletter): form = SubscribeRequestForm(data=request.POST, newsletter=newsletter, ip=get_client_ip(request)) if form.is_valid(): subscription = form.save() subscription.send_activation_email(action='subscribe') return True return False
def subscribe_email(request, newsletter): form = SubscribeRequestForm( data=request.POST, newsletter=newsletter, ip=get_client_ip(request) ) if form.is_valid(): subscription = form.save() subscription.send_activation_email(action='subscribe') return True return False
def too_many_actions(request, action, threshold=3, increment=False): ip_address = get_client_ip(request) cache_key = 'fds:limit_action:%s:%s' % (action, ip_address) count = cache.get(cache_key, 0) if increment: if count == 0: cache.set(cache_key, 1, timeout=60 * 60) else: try: cache.incr(cache_key) except ValueError: pass return count > threshold
def suspicious_ip(request): target_countries = settings.FROIDE_CONFIG.get('target_countries', None) if target_countries is None: return False try: g = GeoIP2() ip = get_client_ip(request) if ip == '127.0.0.1': # Consider suspicious return True info = g.country(ip) if info['country_code'] not in target_countries: return True except Exception as e: logger.warning(e) return False
def start_payment(request, token, variant): order = get_object_or_404(Order, token=token) if order.is_fully_paid(): return redirect(order.get_success_url()) defaults = { 'total': order.amount, 'delivery': Decimal('0.0'), 'tax': Decimal('0.0'), 'currency': settings.DEFAULT_CURRENCY, 'billing_first_name': order.first_name, 'billing_last_name': order.last_name, 'billing_address_1': order.street_address_1, 'billing_address_2': order.street_address_2, 'billing_city': order.city, 'billing_postcode': order.postcode, 'billing_country_code': order.country, 'billing_email': order.user_email, 'description': order.description, 'customer_ip_address': get_client_ip(request) } if variant not in [code for code, dummy_name in CHECKOUT_PAYMENT_CHOICES]: raise Http404('%r is not a valid payment variant' % (variant,)) with transaction.atomic(): payment, created = Payment.objects.filter( Q(status=PaymentStatus.WAITING) | Q(status=PaymentStatus.INPUT) ).get_or_create( variant=variant, order=order, defaults=defaults ) try: form = payment.get_form(data=None) except RedirectNeeded as redirect_to: return redirect(str(redirect_to)) default_template = 'froide_payment/payment/default.html' template = 'froide_payment/payment/%s.html' % variant ctx = { 'form': form, 'payment': payment, 'order': order, } return render(request, [template, default_template], ctx)
def get_city_from_request(request): if GeoIP2 is None: return ip = get_client_ip(request) if not ip: logger.warning('No IP found on request: %s', request) return try: g = GeoIP2() except Exception as e: logger.exception(e) return try: result = g.city(ip) except Exception as e: logger.exception(e) return if result and result.get('latitude'): return result
def advise_foisite(context): ip = get_client_ip(context['request']) return advisor.get_site(ip)
def advise_foisite(context): ip = get_client_ip(context['request']) return advisor.get_site(ip)