You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

models.py 2.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. """
  2. Sample user/profile models for testing. These aren't enabled by default in the
  3. sandbox
  4. """
  5. from django.db import models
  6. from django.utils import timezone
  7. from oscar.core import compat
  8. from oscar.apps.customer import abstract_models
  9. class Profile(models.Model):
  10. """
  11. Dummy profile model used for testing
  12. """
  13. user = models.OneToOneField(compat.AUTH_USER_MODEL, related_name="profile")
  14. MALE, FEMALE = 'M', 'F'
  15. choices = (
  16. (MALE, 'Male'),
  17. (FEMALE, 'Female'))
  18. gender = models.CharField(max_length=1, choices=choices,
  19. verbose_name='Gender')
  20. age = models.PositiveIntegerField(verbose_name='Age')
  21. # A simple extension of the core User model for Django 1.5
  22. try:
  23. from django.contrib.auth.models import (
  24. AbstractUser, BaseUserManager, AbstractBaseUser)
  25. except ImportError:
  26. pass
  27. else:
  28. class ExtendedUserModel(AbstractUser):
  29. twitter_username = models.CharField(max_length=255, unique=True)
  30. class CustomUserManager(BaseUserManager):
  31. def create_user(self, email, password=None):
  32. now = timezone.now()
  33. email = BaseUserManager.normalize_email(email)
  34. user = self.model(email=email, last_login=now)
  35. user.set_password(password)
  36. user.save(using=self._db)
  37. return user
  38. def create_superuser(self, email, password):
  39. return self.create_user(email, password)
  40. # A user model which doesn't extend AbstractUser
  41. class CustomUserModel(AbstractBaseUser):
  42. name = models.CharField(max_length=255, blank=True)
  43. email = models.EmailField(unique=True)
  44. twitter_username = models.CharField(max_length=255, unique=True)
  45. USERNAME_FIELD = 'email'
  46. objects = CustomUserManager()
  47. def __unicode__(self):
  48. return self.email
  49. def get_full_name(self):
  50. return self.name
  51. get_short_name = get_full_name
  52. # A simple extension of the core Oscar User model
  53. class ExtendedOscarUserModel(abstract_models.AbstractUser):
  54. twitter_username = models.CharField(max_length=255, unique=True)