Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

import uuid 

import hmac 

from hashlib import sha1 

from rest_framework.compat import User 

from django.conf import settings 

from django.db import models 

 

 

class Token(models.Model): 

    """ 

    The default authorization token model. 

    """ 

    key = models.CharField(max_length=40, primary_key=True) 

    user = models.OneToOneField(User, related_name='auth_token') 

    created = models.DateTimeField(auto_now_add=True) 

 

    class Meta: 

        # Work around for a bug in Django: 

        # https://code.djangoproject.com/ticket/19422 

        # 

        # Also see corresponding ticket: 

        # https://github.com/tomchristie/django-rest-framework/issues/705 

        abstract = 'rest_framework.authtoken' not in settings.INSTALLED_APPS 

 

    def save(self, *args, **kwargs): 

        if not self.key: 

            self.key = self.generate_key() 

        return super(Token, self).save(*args, **kwargs) 

 

    def generate_key(self): 

        unique = uuid.uuid4() 

        return hmac.new(unique.bytes, digestmod=sha1).hexdigest() 

 

    def __unicode__(self): 

        return self.key