
    Bh                         d dl Z d dlmZ d dlmZmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ  G d	 d
e      Z G d dee      Zy)    N)quote)AbstractBaseUserPermissionsMixinUserManager)
validators)	send_mail)models)timezone)gettext_lazyc                       e Zd Zd Zy)CustomUserManagerc           
          t        j                         }|st        d      | j                  |      } | j                  d|||d||d|}|j                  |       |j                  | j                         |S )zW
        Creates and saves a User with the given username, email and password.
        zThe given username must be setT)usernameemailis_staff	is_activeis_superuser
last_login)using )r
   now
ValueErrornormalize_emailmodelset_passwordsave_db)	selfr   r   passwordr   r   extra_fieldsr   users	            [/home/dcms/DCMS/lib/python3.12/site-packages/cms/test_utils/project/customuserapp/models.py_create_userzCustomUserManager._create_user   s    
 lln=>>$$U+tzz *85#+t'3* )* 	(#			!    N)__name__
__module____qualname__r#   r   r$   r"   r   r      s    r$   r   c                      e Zd ZdZ ej
                   ed      dd ed       ej                   e	j                  d       ed      d      g	      Z ej                   ed
      d      Z ej                   ed      d ed            Z ej                   ed      d ed            Z ej"                  ddd      Z e       ZdZdgZ G d d      Zd Zd Zd ZddZy)Userz
    An abstract base class implementing a fully featured User model with
    admin-compliant permissions.

    Username, password and email are required. Other fields are optional.
    r   i,  TzLRequired. 300 characters or fewer. Letters, numbers and @/./+/-/_ charactersz^[\w.@+-]+$zEnter a valid username.invalid)
max_lengthunique	help_textr   zemail address)blankzstaff statusFz9Designates whether the user can log into this admin site.)defaultr-   activezeDesignates whether this user should be treated as active. Unselect this instead of deleting accounts.*   )nullr.   r/   r   c                   ,    e Zd Z ed      Z ed      Zy)	User.Metar!   usersN)r%   r&   r'   _verbose_nameverbose_name_pluralr   r$   r"   Metar4   E   s    yjr$   r9   c                 2    dt        | j                        z  S )Nz
/users/%s/)r   r   r   s    r"   get_absolute_urlzUser.get_absolute_urlI   s    eDMM222r$   c                      d| j                   z  S )zU
        Returns the first_name plus the last_name, with a space in between.
        zA user called %sr   r;   s    r"   get_full_namezUser.get_full_nameL   s     "DMM11r$   c                     | j                   S )z$Returns the short name for the user.r>   r;   s    r"   get_short_namezUser.get_short_nameR   s    }}r$   Nc                 6    t        |||| j                  g       y)z.
        Sends an email to this User.
        N)r   r   )r   subjectmessage
from_emails       r"   
email_userzUser.email_userV   s     	'7J=r$   )N)r%   r&   r'   __doc__r	   	CharFieldr6   r   RegexValidatorrecompiler   
EmailFieldr   BooleanFieldr   r   IntegerFieldmy_new_fieldr   objectsUSERNAME_FIELDREQUIRED_FIELDSr9   r<   r?   rA   rF   r   r$   r"   r)   r)   $   s     v	*#d + , &J%%jbjj&@!D]B^`ij
	H Fa0=E"v""	.5  H
 $##	(T J KI
 '6&&DbIL!GNiO) )32>r$   r)   )rJ   urllib.parser   django.contrib.auth.modelsr   r   r   django.corer   django.core.mailr   	django.dbr	   django.utilsr
   django.utils.translationr   r6   r   r)   r   r$   r"   <module>rZ      sB    	  
 # &  ! 6 (6>- 6>r$   