aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2012-10-09 09:57:31 +0100
committerTom Christie2012-10-09 09:57:31 +0100
commit5c17a60176d91b8ef8fa729096fd57481de7a4ea (patch)
tree8eec620a04362380dcf2b93aa083ad1d46db6ad8
parentbeea6487b214a0e40e0688a511cce5e065568632 (diff)
downloaddjango-rest-framework-5c17a60176d91b8ef8fa729096fd57481de7a4ea.tar.bz2
Tweak authtoken
-rw-r--r--rest_framework/authentication.py2
-rw-r--r--rest_framework/authtoken/migrations/0001_initial.py6
-rw-r--r--rest_framework/authtoken/models.py6
-rw-r--r--rest_framework/tests/authentication.py1
4 files changed, 8 insertions, 7 deletions
diff --git a/rest_framework/authentication.py b/rest_framework/authentication.py
index fd597397..f8954428 100644
--- a/rest_framework/authentication.py
+++ b/rest_framework/authentication.py
@@ -126,7 +126,7 @@ class TokenAuthentication(BaseAuthentication):
except self.model.DoesNotExist:
return None
- if token.user.is_active and not getattr(token, 'revoked', False):
+ if token.user.is_active:
return (token.user, token)
# TODO: OAuthAuthentication
diff --git a/rest_framework/authtoken/migrations/0001_initial.py b/rest_framework/authtoken/migrations/0001_initial.py
index a91006b0..99d9eab9 100644
--- a/rest_framework/authtoken/migrations/0001_initial.py
+++ b/rest_framework/authtoken/migrations/0001_initial.py
@@ -11,8 +11,7 @@ class Migration(SchemaMigration):
# Adding model 'Token'
db.create_table('authtoken_token', (
('key', self.gf('django.db.models.fields.CharField')(max_length=40, primary_key=True)),
- ('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
- ('revoked', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('user', self.gf('django.db.models.fields.related.OneToOneField')(related_name='api_key', unique=True, to=orm['auth.User'])),
('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
))
db.send_create_signal('authtoken', ['Token'])
@@ -57,8 +56,7 @@ class Migration(SchemaMigration):
'Meta': {'object_name': 'Token'},
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'key': ('django.db.models.fields.CharField', [], {'max_length': '40', 'primary_key': 'True'}),
- 'revoked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
+ 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'api_key'", 'unique': 'True', 'to': "orm['auth.User']"})
},
'contenttypes.contenttype': {
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
diff --git a/rest_framework/authtoken/models.py b/rest_framework/authtoken/models.py
index fd47e6c7..f7e78ef3 100644
--- a/rest_framework/authtoken/models.py
+++ b/rest_framework/authtoken/models.py
@@ -9,8 +9,7 @@ class Token(models.Model):
The default authorization token model.
"""
key = models.CharField(max_length=40, primary_key=True)
- user = models.ForeignKey('auth.User')
- revoked = models.BooleanField(default=False)
+ user = models.OneToOneField('auth.User', related_name='api_key')
created = models.DateTimeField(auto_now_add=True)
def save(self, *args, **kwargs):
@@ -21,3 +20,6 @@ class Token(models.Model):
def generate_key(self):
unique = str(uuid.uuid4())
return hmac.new(unique, digestmod=sha1).hexdigest()
+
+ def __unicode__(self):
+ return self.key
diff --git a/rest_framework/tests/authentication.py b/rest_framework/tests/authentication.py
index 0a3b2e02..8ab4c4e4 100644
--- a/rest_framework/tests/authentication.py
+++ b/rest_framework/tests/authentication.py
@@ -149,5 +149,6 @@ class TokenAuthTests(TestCase):
def test_token_has_auto_assigned_key_if_none_provided(self):
"""Ensure creating a token with no key will auto-assign a key"""
+ self.token.delete()
token = Token.objects.create(user=self.user)
self.assertTrue(bool(token.key))