+++ /dev/null
-from django.db import models
-from django.contrib.auth.models import User
-
-KEY_SIZE = 18
-SECRET_SIZE = 32
-
-class KeyManager(models.Manager):
- '''Add support for random key/secret generation
- '''
- def generate_random_codes(self):
- key = User.objects.make_random_password(length=KEY_SIZE)
- secret = User.objects.make_random_password(length=SECRET_SIZE)
-
- while self.filter(key__exact=key, secret__exact=secret).count():
- secret = User.objects.make_random_password(length=SECRET_SIZE)
-
- return key, secret
-
-
-class ConsumerManager(KeyManager):
- def create_consumer(self, name, description=None, user=None):
- """
- Shortcut to create a consumer with random key/secret.
- """
- consumer, created = self.get_or_create(name=name)
-
- if user:
- consumer.user = user
-
- if description:
- consumer.description = description
-
- if created:
- consumer.key, consumer.secret = self.generate_random_codes()
- consumer.save()
-
- return consumer
-
- _default_consumer = None
-
-class ResourceManager(models.Manager):
- _default_resource = None
-
- def get_default_resource(self, name):
- """
- Add cache if you use a default resource.
- """
- if not self._default_resource:
- self._default_resource = self.get(name=name)
-
- return self._default_resource
-
-class TokenManager(KeyManager):
- def create_token(self, consumer, token_type, timestamp, user=None):
- """
- Shortcut to create a token with random key/secret.
- """
- token, created = self.get_or_create(consumer=consumer,
- token_type=token_type,
- timestamp=timestamp,
- user=user)
-
- if created:
- token.key, token.secret = self.generate_random_codes()
- token.save()
-
- return token
-