Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. # -*- coding: utf-8 -*-
  2. import re
  3. from django.contrib.auth.models import BaseUserManager
  4. from django.core import validators
  5. from django.db import models
  6. from django.utils.translation import gettext_lazy as _
  7. from oscar.apps.customer.abstract_models import AbstractUser
  8. class CustomUserManager(BaseUserManager):
  9. def create_user(self, username, email, password):
  10. """
  11. Creates and saves a User with the given email and password.
  12. """
  13. if not email:
  14. raise ValueError("Users must have an email address")
  15. user = self.model(
  16. email=CustomUserManager.normalize_email(email),
  17. username=username,
  18. is_active=True,
  19. )
  20. user.set_password(password)
  21. user.save(using=self._db)
  22. return user
  23. def create_superuser(self, username, email, password):
  24. u = self.create_user(username, email, password=password)
  25. u.is_admin = True
  26. u.is_staff = True
  27. u.save(using=self._db)
  28. return u
  29. class User(AbstractUser):
  30. """
  31. Custom user based on Oscar's AbstractUser
  32. """
  33. username = models.CharField(
  34. _("username"),
  35. max_length=30,
  36. unique=True,
  37. help_text=_(
  38. "Required. 30 characters or fewer. Letters, numbers and "
  39. "@/./+/-/_ characters"
  40. ),
  41. validators=[
  42. validators.RegexValidator(
  43. re.compile(r"^[\w.@+-]+$"), _("Enter a valid username."), "invalid"
  44. )
  45. ],
  46. )
  47. extra_field = models.CharField(_("Nobody needs me"), max_length=5, blank=True)
  48. objects = CustomUserManager()
  49. class Meta:
  50. app_label = "myauth"