Skip to content

Commit

Permalink
Implement swappable User model functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
aidanlister committed Sep 5, 2014
1 parent 096a0bb commit c0720dc
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 12 deletions.
2 changes: 1 addition & 1 deletion loginurl/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
__version__ = '0.2'
__version__ = '0.2.1'

7 changes: 3 additions & 4 deletions loginurl/backends.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from django.contrib.auth.models import User
from django.contrib.auth import get_user_model

from loginurl.models import Key

Expand Down Expand Up @@ -27,7 +27,6 @@ def authenticate(self, key):

def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return get_user_model().objects.get(pk=user_id)
except get_user_model().DoesNotExist:
return None

5 changes: 3 additions & 2 deletions loginurl/models.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from __future__ import unicode_literals

from django.db import models
from django.contrib.auth.models import User
from django.contrib.auth import get_user_model
from django.utils import timezone
from django.utils.encoding import python_2_unicode_compatible
from django.conf import settings

from loginurl.utils import create_key

Expand All @@ -12,7 +13,7 @@ class Key(models.Model):
"""
A simple key store.
"""
user = models.ForeignKey(User)
user = models.ForeignKey(settings.AUTH_USER_MODEL)
key = models.CharField(max_length=40, unique=True, blank=True)
created = models.DateTimeField(auto_now_add=True)
usage_left = models.IntegerField(null=True, blank=True, default=1)
Expand Down
16 changes: 12 additions & 4 deletions loginurl/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,30 @@

from mock import Mock, patch

from django.contrib.auth.models import User
from django.contrib.auth import get_user_model
from django.utils import timezone
from django.utils.http import int_to_base36, base36_to_int
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseGone
from django.conf import settings
from django.core import management
from django.contrib.auth.tests.utils import skipIfCustomUser

from loginurl.models import Key
from loginurl import utils, backends, views

class BaseTestCase(unittest.TestCase):
def setUp(self):
Key.objects.all().delete()
User.objects.all().delete()
self.user = User.objects.create_user('test', 'test@example.com',
'password')
get_user_model().objects.all().delete()

# Attempt to run the tests, even if we're using a custom User model.
# We make the grand (if reasonable) assumption that at the very
# least the custom user will use an email/password
User = get_user_model()
if settings.AUTH_USER_MODEL == 'auth.User':
self.user = User.objects.create_user('test', 'test@example.com', 'password')
else:
self.user = User.objects.create_user(email="test@example.com", password="password")

class CreateKeyTestCase(BaseTestCase):
def testDefault(self):
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
author_email='fajran@gmail.com',
url='http://github.com/fajran/django-loginurl/',
license='BSD',
download_url='http://github.com/fajran/django-loginurl/tarball/v0.2',
download_url='http://github.com/fajran/django-loginurl/tarball/v0.2.1',
packages=['loginurl', 'loginurl.management', 'loginurl.management.commands'],
package_dir={'loginurl': 'loginurl'},
zip_safe=False,
Expand Down

0 comments on commit c0720dc

Please sign in to comment.