U
    mh                     @   s    d dl mZ G dd deZdS )    )BaseUserManagerc                   @   s$   e Zd ZdZdddZdddZdS )	UserManagerz
    Custom User Manager for email-based authentication and user creation.
    Handles user creation with proper validation and role assignment.
    Nc                 K   s|   |st d| |}| jf d|i|}|| |j| jd tjj|d t	jj
ddd }|rxtjj||d |S )z<Create and return a regular user with an email and password.zThe Email field must be setemail)using)userT)
is_default	is_activer   role)
ValueErrornormalize_emailmodelset_passwordsave_dbZUserProfileobjectscreateRolefilterfirstUserRole)selfr   passwordextra_fieldsr   Zdefault_role r   2/var/www/html/Adtlas/src/apps/accounts/managers.pycreate_user	   s    

zUserManager.create_userc                 K   s   | dd | dd | dd |ddk	r:td|ddk	rPtd| j||f|}tjjddd	d
dddd\}}|r|jt	j
  tjj||d |S )z9Create and return a superuser with an email and password.is_staffTis_superuserr   z"Superuser must have is_staff=True.z&Superuser must have is_superuser=True.super_adminzSuper AdministratorzFull system accesssystem   )namedescription	role_typelevelr   )codedefaultsr	   )
setdefaultgetr   r   r   r   get_or_createpermissionsset
Permissionallr   )r   r   r   r   r   Z
admin_rolecreatedr   r   r   create_superuser   s*    
zUserManager.create_superuser)N)N)__name__
__module____qualname____doc__r   r0   r   r   r   r   r      s   
r   N)django.contrib.auth.modelsr   r   r   r   r   r   <module>   s   