Advertisement
Guest User

Untitled

a guest
May 24th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. from django.db import models
  2. from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
  3. import datetime
  4. import hashlib
  5.  
  6. class AccountManager(BaseUserManager):
  7. def create_user(self, username, password=None, **kwargs):
  8. if not username:
  9. raise ValueError('User must have a valid username!')
  10.  
  11. if not kwargs.get('email'):
  12. raise ValueError('User must have a valid email!')
  13.  
  14. timestamp = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
  15. encoded = (timestamp + kwargs.get('email')).encode('utf-8')
  16. uid = kwargs.get('role', 'u')+"-"+hashlib.sha256(encoded).hexdigest()
  17.  
  18. account = self.model(
  19. email=self.normalize_email(kwargs.get('email')),
  20. username=username,
  21. firstname=kwargs.get('firstname', None),
  22. lastname=kwargs.get('lastname', None),
  23. role=kwargs.get('role', 'u'),
  24. uid=uid
  25. )
  26.  
  27. account.set_password(password)
  28. account.save()
  29.  
  30. return account()
  31.  
  32. def create_superuser(self, username, password=None, **kwargs):
  33. account = self.create_user(username, password, kwargs)
  34. account.is_admin = True
  35. account.save()
  36.  
  37. return account
  38.  
  39. class Account(AbstractBaseUser):
  40. ROLES = (
  41. ('u', 'User'),
  42. ('m', 'Manager'),
  43. ('a', 'Administrator')
  44. )
  45.  
  46. username = models.CharField(unique=True, max_length=255)
  47. email = models.EmailField(unique=True)
  48.  
  49. firstname = models.CharField(max_length=255, blank=True)
  50. lastname = models.CharField(max_length=255, blank=True)
  51.  
  52. uid = models.CharField(max_length=500, primary_key=True, editable=False)
  53.  
  54. is_admin = models.BooleanField(default=False)
  55.  
  56. role = models.CharField(max_length=1, default='u', choices=ROLES)
  57. objects = AccountManager()
  58.  
  59. USERNAME_FIELD = 'username'
  60. REQUIRED_FIELDS = ['username']
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement