managers.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. """
  2. This module provides class definition to manage User objects.
  3. Available classes:
  4. - UserManager: interface through which database query operations are
  5. provided to model.
  6. """
  7. from django.contrib.auth.models import BaseUserManager
  8. class UserManager(BaseUserManager):
  9. """
  10. Interface through which database query operations are provided to
  11. User model.
  12. """
  13. def _create_user(self, email, password, is_staff, is_superuser,
  14. **extra_fields):
  15. """
  16. Creates and saves an active User with the given email and password.
  17. """
  18. if not email:
  19. raise ValueError('Users must have an email address')
  20. email = self.normalize_email(email)
  21. name = ''
  22. if is_superuser:
  23. name='Super User'
  24. user = self.model(email=email, age=0, name=name,
  25. is_staff=is_staff, is_active=True,
  26. is_superuser=is_superuser, **extra_fields)
  27. user.set_password(password)
  28. user.save(using=self._db)
  29. return user
  30. def create_user(self, email, password=None, **extra_fields):
  31. """
  32. Function to create an user
  33. """
  34. return self._create_user(email, password, False, False,
  35. **extra_fields)
  36. def create_superuser(self, email, password, **extra_fields):
  37. """
  38. Function to create an superuser
  39. """
  40. return self._create_user(email, password, True, True,
  41. **extra_fields)