o
    sUf                     @   s   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
Z
G dd deZdd ZG d	d
 d
eeZG dd dejZG dd dejZG dd dejZdS )    )models)AbstractBaseUserBaseUserManagerPermissionsMixin)timezoneNc                   @   s(   e Zd Zdd ZdddZd	ddZdS )
CustomUserManagerc                 K   sX   | dd | dd |ddurtd|ddur"td| j||fi |S )Nis_staffTis_superuserz"Superuser must have is_staff=True.z&Superuser must have is_superuser=True.)
setdefaultget
ValueErrorcreate_user)selfmobile_numberpasswordextra_fields r   %/var/www/html/loop/accounts/models.pycreate_superuser   s   z"CustomUserManager.create_superuserNc                 K   s<   |st d| jdd|i|}|| |j| jd |S )NzMobile number must be setr   usingr   )r   modelset_passwordsave_db)r   r   r   r   userr   r   r   r      s   
zCustomUserManager.create_userc                 C   s2   | j |||||d}||_d|_|j| jd |S )N)	full_nameemailagegenderTr   )r   license_number	is_driverr   r   )r   r   r   r   r   r   r    driverr   r   r   create_driver   s
   zCustomUserManager.create_driverN)NNNN)__name__
__module____qualname__r   r   r#   r   r   r   r   r      s    
r   c                 C   s$   | j j}| j j}tj|||}|S r$   )_meta	app_label
model_nameospathjoin)instancefilenameapp_namer*   r,   r   r   r   file_upload_path&   s   r1   c                       s  e Zd ZejdddZejddZejdddZejdddZej	dddZ
ejdddZejdddd	Zejd
ddddZejddZe 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ddddZdZg Z fddZdd Z   Z!S )
CustomUser   T
max_lengthuniqued   r5   )r5   null)blankr9   
   )r5   r:   r9      )r5   r:   r9   r6   Fdefault)r9   r:   r6   )r9   r:   zdefault.jpeg)	upload_tor>   r9   r:   r   c                    s0   | j s| jrt | _ tt| j|i | d S r$   )token_created_atverification_tokenr   nowsuperr2   r   )r   argskwargs	__class__r   r   r   C   s   
zCustomUser.savec                 C   s   | j S r$   )r   r   r   r   r   __str__H   s   zCustomUser.__str__)"r%   r&   r'   r   	CharFieldr   
first_name	last_nameemployer
EmailFieldr   PositiveIntegerFieldr   r   r    BooleanFieldis_verifiedr   objectsr   r	   r!   	UUIDFieldrA   DateTimeFieldr@   
ImageFieldr1   profile_picUSERNAME_FIELDREQUIRED_FIELDSr   rI   __classcell__r   r   rF   r   r2   ,   s*    r2   c                   @   s@   e Zd ZejeejdZejddZ	ej
ddZejddZdS )	OTP)	on_delete   r8   Fr=   Tauto_now_addN)r%   r&   r'   r   
ForeignKeyr2   CASCADEr   rJ   otp_coderP   rQ   rT   
created_atr   r   r   r   rZ   K   s
    rZ   c                   @   s>   e Zd ZejeejddZej	ddZ
ejddZdd ZdS )	DriverLocationlocationr[   related_nameT)	geographyauto_nowc                 C      | j j d| j S Nz - )r"   r   last_known_locationrH   r   r   r   rI   W      zDriverLocation.__str__N)r%   r&   r'   r   OneToOneFieldr2   r`   r"   	geomodels
PointFieldrl   rT   	timestamprI   r   r   r   r   rc   R   s
    rc   c                   @   sL   e Zd ZejeejddZejdddZ	ej
ddZej
ddZdd	 Zd
S )Devicedevicesre      Tr4   r]   rh   c                 C   rj   rk   )r   r   device_tokenrH   r   r   r   rI   `   rm   zDevice.__str__N)r%   r&   r'   r   r_   r2   r`   r   rJ   ru   rT   rb   
updated_atrI   r   r   r   r   rr   Z   s    rr   )	django.dbr   django.contrib.auth.modelsr   r   r   django.utilsr   django.contrib.gis.dbro   r+   r   r1   r2   ModelrZ   rc   rr   r   r   r   r   <module>   s    