o
    ga                     @   s   d dl mZ d dl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 dd	 ZG d
d deZG dd deZG dd dejZG dd dejZdd Ze
edd ZG dd dejZdS )    )models)BaseUserManagerAbstractBaseUser)timezone)post_migrate)receiver)failed_response)SocialAccountc                 C   s   t jj| d}|jd}|S )N)userpicture)r	   objectsget
extra_data)r
   social_accountprofile_image_url r   </var/www/html/authentication-server/authentication/models.pyget_user_profile_image	   s   r   c                   @   s   e Zd ZdddZdS )UserManagerN c              	   K   s   |st dd|st dd| |}| jd||||||d|}	|	| d|	_|	j| jd z	t|	}
|
|	_W n t	j
yG   d |	_Y nw |	j| jd |	S )NzUser must have an email address)msgzUser must have a username)usernameemail
first_name	last_name
pan_numberphone_numberF)usingr   )r   normalize_emailmodelset_password	is_activesavedbr   profile_imgr	   DoesNotExist)selfr   r   passwordr   r   r   r   extra_fieldsr
   r   r   r   r   create_user   s4   



	

zUserManager.create_user)Nr   r   r   N)__name__
__module____qualname__r)   r   r   r   r   r      s    r   c                   @   s   e Zd ZejddddZejddddZejddddZej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ddZejdddZejejd
Zejejd
ZejdejdddZejdddZe ZdZddgZG dd dZdS )User2   T)
max_lengthblanknull   )r/   uniqued      r/   Fdefault)r1      )r0   r1   usertype)	on_deleter1   r0   
   r   r   r   c                   @      e Zd ZdZdS )z	User.Metar
   Nr*   r+   r,   db_tabler   r   r   r   Meta@       r@   N)r*   r+   r,   r   	CharFieldr   r   middle_namer   
EmailFieldr   r'   BooleanFieldr!   r   r$   DateTimeFieldemail_verified_atr   now
created_at
updated_at
ForeignKeyCASCADEr:   r   r   r   USERNAME_FIELDREQUIRED_FIELDSr@   r   r   r   r   r-   +   s&    r-   c                   @   sV   e Zd ZejeejdZejddZ	ej
ddZe
 ZejddZG dd	 d	Zd
S )EmailVerification)r;      r6   T)auto_now_addFr7   c                   @   r=   )zEmailVerification.Metaemail_verificationNr>   r   r   r   r   r@   J   rA   r@   N)r*   r+   r,   r   rK   r-   rL   r
   rB   coderF   rI   
expires_atrE   is_usedr@   r   r   r   r   rO   C   s    rO   c                   @   s6   e Zd ZejddZe Zdd ZG dd dZ	dS )r:   r2   r6   c                 C   s   | j S N)type)r&   r   r   r   __str__R   s   zusertype.__str__c                   @   r=   )zusertype.Meta	user_typeNr>   r   r   r   r   r@   U   rA   r@   N)
r*   r+   r,   r   rB   rW   IntegerFieldsubtyperX   r@   r   r   r   r   r:   N   s
    r:   c                  C   sF   dddddddddg} | D ]}t jj|d d	|d	 id
 qd S )NInstitution   )rW   r[   Company   
Individual   rW   r[   )rW   defaults)r:   r   get_or_create)default_usertypesusertype_datar   r   r   insert_default_usertypeY   s   rf   c                 K   s
   t   d S rV   )rf   )senderkwargsr   r   r   insert_usertypes_on_migrationd   s   
ri   c                   @   s   e Zd ZdZdZdZedfedfedfgZeje	ej
ddZejded	Zejdd
ZejddZejddZG dd dZdS )CodeConfirmationemail_changeemail_confirmationpassword_resetzEmail ConfirmationzPassword ResetT)r;   r1      )r/   choicesr7   r6   r4   c                   @   r=   )zCodeConfirmation.Metacode_confirmationNr>   r   r   r   r   r@   x   rA   r@   N)r*   r+   r,   EMAIL_CHANGEEMAIL_CONFIRMATIONPASSWORD_RESETTYPE_CHOICESr   rK   r-   rL   r
   rB   rW   rE   pendingrS   rD   r   r@   r   r   r   r   rj   i   s    rj   N)	django.dbr   django.contrib.auth.modelsr   r   django.utilsr   django.db.models.signalsr   django.dispatchr   utils.helperr   allauth.socialaccount.modelsr	   r   r   r-   ModelrO   r:   rf   ri   rj   r   r   r   r   <module>   s     
