Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
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
Exemplo n.º 7
0
def advise_foisite(context):
    ip = get_client_ip(context['request'])
    return advisor.get_site(ip)
Exemplo n.º 8
0
def advise_foisite(context):
    ip = get_client_ip(context['request'])
    return advisor.get_site(ip)