
    P1i                     t    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  G d de
      Z G d d	e      Zy
)    )models
connectiontransaction)AbstractUser)gettext_lazy)BaseUserManager)timezonec                   $    e Zd ZdZd ZddZd Zy)UserManagerTc                     |st        d      |j                  d      st        d       | j                  dd|i|}|j                  |       |j	                  | j
                         |S )NzUsers require a phone fieldemailzUsers require an email fieldphone)using )
ValueErrorgetmodelset_passwordsave_db)selfr   passwordextra_fieldsusers        0/home/cursorai/projects/iching/main/user/user.py_create_userzUserManager._create_user
   sh    :;;(;<<tzz666(#			!    Nc                 r    |j                  dd       |j                  dd        | j                  ||fi |S )Nis_staffFis_superuser)
setdefaultr   r   r   r   r   s       r   create_userzUserManager.create_user   s<    
E26 t  ALAAr   c                     |j                  dd       |j                  dd       |j                  d      durt        d      |j                  d      durt        d       | j                  ||fi |S )Nr   Tr    z"Superuser must have is_staff=True.z&Superuser must have is_superuser=True.)r!   r   r   r   r"   s       r   create_superuserzUserManager.create_superuser   sz    
D15J't3ABBN+47EFF t  ALAAr   )N)__name__
__module____qualname__use_in_migrationsr   r#   r%   r   r   r   r   r      s    B
	Br   r   c                      e Zd ZdZ ej
                  dd      Z ej                   ed      dd      Z	 ej
                  dd      Z
g dZ ej
                  d	ed
d      Z ej                  dddd      Z ej                  ddd      Z ej
                  dd      Z ej                  dd      Z ej                  dd      Z ej                  dd      Z ej                  dd      Z e       ZdZdgZ G d d      Zd Zy)UserN   T)
max_lengthuniquez
Sponsor ID)nullblank2   ))Mu   男)Fu   女)Nu	   不指定   r4   u   性别)r-   choicesdefaultverbose_namezLast ActivezUser last active date and time)r/   r0   r8   	help_textFu   临时用户uB   标识这是一个临时创建的用户账户，等待正式注册)r7   r8   r9      idle)r-   r7   r   r   c                       e Zd ZddgZy)	User.Meta)can_receive_ai_report_emailsz%Can receive AI analysis report emails)can_manage_ai_reportsz*Can manage and resolve AI analysis reportsN)r&   r'   r(   permissionsr   r   r   Metar=   S   s    US
r   rA   c                 \    t        j                         | _        | j                  dg       y)z#Update the last active date to now.last_active_date)update_fieldsN)r	   nowrC   r   )r   s    r   update_last_activezUser.update_last_activeY   s"     (		!3 4	5r   )r&   r'   r(   usernamer   	CharFieldr   IntegerField_refr   GENDER_CHOICESgenderDateTimeFieldrC   BooleanFieldis_temporary_usergroup_relations_stategroup_relations_started_atgroup_relations_updated_atgroup_relations_error_atgroup_relations_last_retry_atr   objectsUSERNAME_FIELDREQUIRED_FIELDSrA   rF   r   r   r   r+   r+   $   s>   HF48E &

aoD
ECF48EN
 V	F ,v++"2	 ,++#V -F,,FK!5!5!54t!L!5!5!54t!L3v33TJ$8F$8$8d$$O!mGNiO
 
6r   r+   N)	django.dbr   r   r   django.contrib.auth.modelsr   django.utils.translationr   rJ   django.contrib.auth.base_userr   django.utilsr	   r   r+   r   r   r   <module>r^      s1    5 5 3 6 9 !B/ B:86< 86r   