Exemple #1
0
def lockout_response(request):
    context = {
        'failure_limit': FAILURE_LIMIT,
        'username': request.POST.get(USERNAME_FORM_FIELD, '')
    }

    if request.is_ajax():
        if COOLOFF_TIME:
            context.update({'cooloff_time': iso8601(COOLOFF_TIME)})

        return HttpResponse(
            json.dumps(context),
            content_type='application/json',
            status=403,
        )

    elif LOCKOUT_TEMPLATE:
        if COOLOFF_TIME:
            context.update({'cooloff_time': iso8601(COOLOFF_TIME)})

        return render(request, LOCKOUT_TEMPLATE, context, status=403)

    elif LOCKOUT_URL:
        return HttpResponseRedirect(LOCKOUT_URL)

    else:
        msg = 'Account locked: too many login attempts. {0}'
        if COOLOFF_TIME:
            msg = msg.format('Please try again later.')
        else:
            msg = msg.format('Contact an admin to unlock your account.')

        return HttpResponse(msg, status=403)
Exemple #2
0
def lockout_response(request):
    context = {
        'failure_limit': FAILURE_LIMIT,
        'username': request.POST.get(USERNAME_FORM_FIELD, '')
    }

    if request.is_ajax():
        if COOLOFF_TIME:
            context.update({'cooloff_time': iso8601(COOLOFF_TIME)})

        return HttpResponse(
            json.dumps(context),
            content_type='application/json',
            status=403,
        )

    elif LOCKOUT_TEMPLATE:
        if COOLOFF_TIME:
            context.update({'cooloff_time': iso8601(COOLOFF_TIME)})

        return render(request, LOCKOUT_TEMPLATE, context, status=403)

    elif LOCKOUT_URL:
        return HttpResponseRedirect(LOCKOUT_URL)

    else:
        msg = 'Account locked: too many login attempts. {0}'
        if COOLOFF_TIME:
            msg = msg.format('Please try again later.')
        else:
            msg = msg.format('Contact an admin to unlock your account.')

        return HttpResponse(msg, status=403)
Exemple #3
0
    def test_iso8601(self):
        """
        Test iso8601 correctly translates datetime.timdelta to ISO 8601 formatted duration.
        """

        expected = {
            timedelta(days=1, hours=25, minutes=42, seconds=8):
                'P2DT1H42M8S',
            timedelta(days=7, seconds=342):
                'P7DT5M42S',
            timedelta(days=0, hours=2, minutes=42):
                'PT2H42M',
            timedelta(hours=20, seconds=42):
                'PT20H42S',
            timedelta(seconds=300):
                'PT5M',
            timedelta(seconds=9005):
                'PT2H30M5S',
            timedelta(minutes=9005):
                'P6DT6H5M',
            timedelta(days=15):
                'P15D'
        }

        for delta, iso_duration in expected.items():
            with self.subTest(iso_duration):
                self.assertEqual(iso8601(delta), iso_duration)
def lockout_response(request):
    context = {
        'failure_limit': settings.AXES_FAILURE_LIMIT,
        'username': request.POST.get(settings.AXES_USERNAME_FORM_FIELD, '')
    }

    cool_off = settings.AXES_COOLOFF_TIME
    if cool_off:
        if isinstance(cool_off, (int, float)):
            cool_off = timedelta(hours=cool_off)

        context.update({
            'cooloff_time': iso8601(cool_off)
        })

    if request.is_ajax():
        return HttpResponse(
            json.dumps(context),
            content_type='application/json',
            status=403,
        )

    elif settings.AXES_LOCKOUT_TEMPLATE:
        return render(
            request, settings.AXES_LOCKOUT_TEMPLATE, context, status=403
        )

    elif settings.AXES_LOCKOUT_URL:
        return HttpResponseRedirect(settings.AXES_LOCKOUT_URL)

    return HttpResponse(get_lockout_message(), status=403)
Exemple #5
0
def lockout_response(request):
    context = {
        'failure_limit': Settings.objects.first().failure_limit,
        'username': get_client_username(request) or ''
    }

    cool_off = settings.AXES_COOLOFF_TIME
    if cool_off:
        if isinstance(cool_off, (int, float)):
            cool_off = timedelta(hours=cool_off)

        context.update({'cooloff_time': iso8601(cool_off)})

    if request.is_ajax():
        return HttpResponse(
            json.dumps(context),
            content_type='application/json',
            status=403,
        )

    elif settings.AXES_LOCKOUT_TEMPLATE:
        return render(request,
                      settings.AXES_LOCKOUT_TEMPLATE,
                      context,
                      status=403)

    elif settings.AXES_LOCKOUT_URL:
        return HttpResponseRedirect(settings.AXES_LOCKOUT_URL)

    return HttpResponse(get_lockout_message(), status=403)
Exemple #6
0
 def test_iso8601(self):
     """Tests iso8601 correctly translates datetime.timdelta to ISO 8601
     formatted duration."""
     EXPECTED = {
         datetime.timedelta(days=1, hours=25, minutes=42, seconds=8):
         'P2DT1H42M8S',
         datetime.timedelta(days=7, seconds=342): 'P7DT5M42S',
         datetime.timedelta(days=0, hours=2, minutes=42): 'PT2H42M',
         datetime.timedelta(hours=20, seconds=42): 'PT20H42S',
         datetime.timedelta(seconds=300): 'PT5M',
         datetime.timedelta(seconds=9005): 'PT2H30M5S',
         datetime.timedelta(minutes=9005): 'P6DT6H5M',
         datetime.timedelta(days=15): 'P15D'
     }
     for timedelta, iso_duration in six.iteritems(EXPECTED):
         self.assertEqual(iso8601(timedelta), iso_duration)
Exemple #7
0
    def test_iso8601(self):
        """
        Test iso8601 correctly translates datetime.timdelta to ISO 8601 formatted duration.
        """

        expected = {
            timedelta(days=1, hours=25, minutes=42, seconds=8): 'P2DT1H42M8S',
            timedelta(days=7, seconds=342): 'P7DT5M42S',
            timedelta(days=0, hours=2, minutes=42): 'PT2H42M',
            timedelta(hours=20, seconds=42): 'PT20H42S',
            timedelta(seconds=300): 'PT5M',
            timedelta(seconds=9005): 'PT2H30M5S',
            timedelta(minutes=9005): 'P6DT6H5M',
            timedelta(days=15): 'P15D'
        }

        for delta, iso_duration in expected.items():
            with self.subTest(iso_duration):
                self.assertEqual(iso8601(delta), iso_duration)
Exemple #8
0
def lockout_response(request):
    context = {
        'failure_limit': settings.AXES_FAILURE_LIMIT,
        'username': request.POST.get(settings.AXES_USERNAME_FORM_FIELD, '')
    }

    cool_off = settings.AXES_COOLOFF_TIME
    if cool_off:
        if (isinstance(cool_off, int) or isinstance(cool_off, float)):
            cool_off = timedelta(hours=cool_off)

        context.update({
            'cooloff_time': iso8601(cool_off)
        })

    if request.is_ajax():
        return HttpResponse(
            json.dumps(context),
            content_type='application/json',
            status=403,
        )

    elif settings.AXES_LOCKOUT_TEMPLATE:
        return render(
            request, settings.AXES_LOCKOUT_TEMPLATE, context, status=403
        )

    elif settings.AXES_LOCKOUT_URL:
        return HttpResponseRedirect(settings.AXES_LOCKOUT_URL)

    else:
        msg = 'Account locked: too many login attempts. {0}'
        if settings.AXES_COOLOFF_TIME:
            msg = msg.format('Please try again later.')
        else:
            msg = msg.format('Contact an admin to unlock your account.')

        return HttpResponse(msg, status=403)
Exemple #9
0
 def test_iso8601(self):
     """Tests iso8601 correctly translates datetime.timdelta to ISO 8601
     formatted duration."""
     EXPECTED = {
         datetime.timedelta(days=1, hours=25, minutes=42, seconds=8):
             'P2DT1H42M8S',
         datetime.timedelta(days=7, seconds=342):
             'P7DT5M42S',
         datetime.timedelta(days=0, hours=2, minutes=42):
             'PT2H42M',
         datetime.timedelta(hours=20, seconds=42):
             'PT20H42S',
         datetime.timedelta(seconds=300):
             'PT5M',
         datetime.timedelta(seconds=9005):
             'PT2H30M5S',
         datetime.timedelta(minutes=9005):
             'P6DT6H5M',
         datetime.timedelta(days=15):
             'P15D'
     }
     for timedelta, iso_duration in six.iteritems(EXPECTED):
         self.assertEqual(iso8601(timedelta), iso_duration)