From a7bc8c0d55e6e14b5c1ecad05e3eeee50d263a26 Mon Sep 17 00:00:00 2001 From: Ken Cochrane Date: Sat, 3 Jan 2015 11:09:30 -0500 Subject: [PATCH] added landscape.io and some fixes it found --- README.md | 2 +- defender/.landscape.yaml | 7 +++++++ defender/models.py | 6 ++++++ defender/test_settings.py | 4 +++- defender/tests.py | 9 +++++++++ defender/travis_settings.py | 3 ++- defender/utils.py | 4 ++-- 7 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 defender/.landscape.yaml diff --git a/README.md b/README.md index e90781a..368d5be 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ the goal is to do those things very well, and have full unit tests with docs. Build status ------------ -[![Build Status](https://travis-ci.org/kencochrane/django-defender.svg)](https://travis-ci.org/kencochrane/django-defender) [![Coverage Status](https://img.shields.io/coveralls/kencochrane/django-defender.svg)](https://coveralls.io/r/kencochrane/django-defender) +[![Build Status](https://travis-ci.org/kencochrane/django-defender.svg)](https://travis-ci.org/kencochrane/django-defender) [![Coverage Status](https://img.shields.io/coveralls/kencochrane/django-defender.svg)](https://coveralls.io/r/kencochrane/django-defender)[![Code Health](https://landscape.io/github/kencochrane/django-defender/master/landscape.svg)](https://landscape.io/github/kencochrane/django-defender/master) Goals for 0.1 ============= diff --git a/defender/.landscape.yaml b/defender/.landscape.yaml new file mode 100644 index 0000000..645700e --- /dev/null +++ b/defender/.landscape.yaml @@ -0,0 +1,7 @@ +doc-warnings: yes +test-warnings: no +strictness: veryhigh +max-line-length: 80 +uses: + - django +autodetect: yes diff --git a/defender/models.py b/defender/models.py index 2836901..2f38395 100644 --- a/defender/models.py +++ b/defender/models.py @@ -30,3 +30,9 @@ class AccessAttempt(models.Model): class Meta: ordering = ['-attempt_time'] + + def __unicode__(self): + """ unicode value for this model """ + return u"{0} @ {1} | {2}".format(self.username, + self.attempt_time, + self.login_valid) diff --git a/defender/test_settings.py b/defender/test_settings.py index d959cf0..a515e37 100644 --- a/defender/test_settings.py +++ b/defender/test_settings.py @@ -1,3 +1,5 @@ +import os + DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', @@ -28,7 +30,7 @@ INSTALLED_APPS = [ 'defender', ] -SECRET_KEY = 'too-secret-for-test' +SECRET_KEY = os.environ.get('SECRET_KEY', 'too-secret-for-test') LOGIN_REDIRECT_URL = '/admin' diff --git a/defender/tests.py b/defender/tests.py index 5329dbf..eda3e9d 100644 --- a/defender/tests.py +++ b/defender/tests.py @@ -17,6 +17,7 @@ from django.http import HttpRequest from .connection import parse_redis_url from . import utils from . import config +from models import AccessAttempt mocked_redis = mockredis.mock_strict_redis_client() @@ -287,6 +288,14 @@ class AccessAttemptTest(TestCase): response = self.client.get(ADMIN_LOGIN_URL) self.assertContains(response, self.PERMANENT_LOCKED_MESSAGE) + def test_login_attempt_model(self): + """ test the login model""" + + response = self._login() + self.assertContains(response, LOGIN_FORM_KEY) + self.assertEquals(AccessAttempt.objects.count(), 1) + self.assertIsNotNone(AccessAttempt.objects.all()[0]) + def test_is_valid_ip(self): """ Test the is_valid_ip() method """ diff --git a/defender/travis_settings.py b/defender/travis_settings.py index 66be4e4..89bdaa0 100644 --- a/defender/travis_settings.py +++ b/defender/travis_settings.py @@ -1,3 +1,4 @@ +import os DATABASES = { 'default': { @@ -29,7 +30,7 @@ INSTALLED_APPS = [ 'defender', ] -SECRET_KEY = 'too-secret-for-test' +SECRET_KEY = os.environ.get('SECRET_KEY', 'too-secret-for-test') LOGIN_REDIRECT_URL = '/admin' diff --git a/defender/utils.py b/defender/utils.py index 529f0bc..d2f8214 100644 --- a/defender/utils.py +++ b/defender/utils.py @@ -20,7 +20,7 @@ def is_valid_ip(ip_address): valid = True try: socket.inet_aton(ip_address.strip()) - except: + except (socket.error, AttributeError): valid = False return valid @@ -61,7 +61,7 @@ def get_ip_address_from_request(request): remote_addr): ip_address = remote_addr.strip() if not ip_address: - ip_address = '127.0.0.1' + ip_address = '127.0.0.1' return ip_address