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Úuniqueéd   ©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    