
    rif"                     F   d dl mZmZ 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mZ d dlmZ d dlmZ d d	lmZ  G d
 de
j,                        Z G d de      Z G d dee      Z G d dee      Zd Z G d de
j,                        Z G d de
j,                        Zy)    )BaseUserManagerAbstractBaseUser)make_password)PermissionsMixinGroup
Permission)models)gettext_lazy)Batch)timezone)	timedelta)ValidationErrorc                       e Zd Z ej                  d      Z ej                  d      Z ej                  d      Z	 ej                  d      Z
 ej                  d      Z ej                  d      Zd	 Zy
)Companyd   
max_lengthr   defaultTauto_now_addauto_nowFc                     | j                   S N)nameselfs    -D:\Rescue Scanner\qr_onkar\accounts\models.py__str__zCompany.__str__   s    yy    N)__name__
__module____qualname__r	   	CharFieldr   IntegerFieldnumber_of_logins_allowedDateTimeFieldcreatedupdatedBooleanField	is_active
is_deletedr     r!   r   r   r      st    6s+D2v221="f""5G"f""D1G###D1I$$$U3Jr!   r   c                       e Zd Zd Zd Zy)CustomAccountManagerc                    |j                  dd       |j                  dd       |j                  dd       |j                  d      durt        d      |j                  d      durt        d       | j                  ||fi |S )Nis_staffTis_superuserr,   z+Superuser must be assigned to is_staff=Truez/Superuser must be assigned to is_superuser=True)
setdefaultget
ValueErrorcreate_user)r   phonepasswordother_fieldss       r   create_superuserz%CustomAccountManager.create_superuser   s    
D15T2J't3JKKN+47NOOtx@<@@r!   c                     |st        t        d             | j                  dd|i|}|j                  |       |j	                          |S )Nz You must provide an phone numberr8   r.   )r6   _modelset_passwordsave)r   r8   r9   r:   users        r   r7   z CustomAccountManager.create_user%   sJ    QABCCtzz666(#		r!   N)r"   r#   r$   r;   r7   r.   r!   r   r0   r0      s    Ar!   r0   c                       e Zd Z ej                  d      Z ej                  d      Z ej                  dd      Z ej                  e
ej                  dd      Z ej                  dd	
      Z ej                  dd      Z ej                  d      Z ej"                  d      Z ej"                  d      Z ej"                  d      Z ej"                  d      Z ej,                  edd      Z ej,                  edd      Z ej6                  d      Z ej6                  d      Z e       ZdZ dgZ! G d d      Z"d Z# fdZ$ xZ%S )CompanyUserT)unique   r      r   rD   	on_deletenullblankr   Admin)r   r   rK   rJ      Fr   company_groupsrelated_namerK   company_user_permissionsr   r   emailr8   c                       e Zd ZdZy)CompanyUser.MetazCompany UsersNr"   r#   r$   verbose_name_pluralr.   r!   r   MetarU   K   s    -r!   rX   c                     | j                   S r   )rS   r   s    r   r    zCompanyUser.__str__N   s    zzr!   c                    | j                   r| j                   j                  | _        nd| _        | j                  r5| j                  j	                  d      st        | j                        | _        t        |   |i | y )N zpbkdf2_sha256$bcryptargon2)companyr   company_namer9   
startswithr   superr@   )r   argskwargs	__class__s      r   r@   zCompanyUser.saveQ   s^    << $ 1 1D "D==!9!9:`!a)$--8DMd%f%r!   )&r"   r#   r$   r	   
EmailFieldrS   r%   r   r8   
ForeignKeyr   SET_NULLr_   role	TextFieldaddressr9   r+   r,   r2   r-   r3   ManyToManyFieldr   groupsr   user_permissionsr(   r)   r*   r0   objectsUSERNAME_FIELDREQUIRED_FIELDSrX   r    r@   __classcell__re   s   @r   rC   rC   .   s`   FT*E6s+DF48Ef6??UYZG6sG<DfT5G  v3/H $##E2I"v""51H$$$U3J&6&&u5L#V##E8HPTUF-v--jGaimn"f""5G"f""D1G"$GNiO. .& &r!   rC   c                       e Zd Z ej                  dd      Z ej                  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j                  dd      Z ej                  dd      Z ej"                  d      Z ej"                  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      Z ej4                  d      Z ej4                  d      Z ej:                  eej>                  dd      Z  ejB                  e"dd      Z# ejB                  e$dd      Z%dZ& G d d      Z'd Z(	  fdZ)e*d        Z+e*d d       Z, xZ-S )!	Customersr   TrG   )rK   rE   r   rK      z media/static/user_profile_image/z"static/user_profile_image/logo.png)	upload_tor   rN   rM      
   Fstatus)r   verbose_namer   r   r   rH   customers_groupsrP   customers_user_permissionsqr_codec                       e Zd ZdZy)Customers.Metaru   NrV   r.   r!   r   rX   r   {   s    )r!   rX   c                     | j                   S r   )r   r   s    r   r    zCustomers.__str__~   s    ||r!   c                     | j                   r| j                  rt        j                  j	                  | j                         j                  }|s| j                  j                  d      st        | j                        | _        t        j                         j                         t        d      z   | _        t        j                         j                         | _        n| j                   s| j                  rut        | j                        | _        t        j                         j                         t        d      z   | _        t        j                         j                         | _        t        | 8  |i | y )Npkr\   i  days)r   r9   ru   ro   r5   ra   r   r   nowdater   
valid_uptoregistration_daterb   r@   )r   rc   rd   original_passwordre   s       r   r@   zCustomers.save   s    77t}} ) 1 1 5 5 5 A J J$T]]-E-EFl-m -dmm <"*,,."5"5"7):Q"Q)1)<)<)>&T]])$--8DM&lln113iW6MMDO%-\\^%8%8%:D"d%f%r!   c                     t        j                         j                         }| j                  j	                  |d      }|D ]  }d|_        |j                           y )NT)valid_upto__ltr,   F)r   r   r   ro   filterr,   r@   )clstodayexpired_usersrA   s       r   deactivate_expired_usersz"Customers.deactivate_expired_users   sP     ##%**%4*P! 	D"DNIIK	r!   c                 \   | j                   j                  |      }t        j                   j                  |      }d|_        t	        j
                         j                         t        |dz        z   |_        |j                          t        j                   j                  |||       y )Nr   Tim  r   )company_usercustomeryears_extended)ro   r5   rC   r,   r   r   r   r   r   r@   ReactivationLogcreate)r   user_idcompany_user_idyearsrA   r   s         r   reactivate_userzCustomers.reactivate_user   s     {{'*"**../.B",,.--/)2MM		&&%  	' 	
r!   )   ).r"   r#   r$   r	   r%   r   rf   rS   r   r8   
ImageFieldprofile_imager9   	DateFieldr   r   emergency_phonerj   medical_history	allergiesfamily_doctor_namefamily_doctor_contactblood_groupr+   r,   r-   r(   r)   r*   rg   r   rh   batchrl   r   rm   r   rn   rp   rX   r    r@   classmethodr   r   rr   rs   s   @r   ru   ru   [   s   f#d;GFD)E6s$7DF$7E%F%%0R.RTMv3d;H!!!48J(((t$? 'f&&"DAO&f&&T2O   t,I)))SE,F,,$G"&""b=K $##EII$$$U3J"f""5G"f""D1GFevTQUVE#V##E8JRVWF-v--jGckopN* *)& 
 
 
 
r!   ru   c                 >    | j                   }|dkD  rt        d      | S )Ni   z2The maximum file size that can be uploaded is 10MB)sizer   )valuefilesizes     r   validate_file_sizer      s$    zzH(RSSLr!   c                       e Zd Z ej                  edej                        Z ej                  dd      Z	 ej                  deg      Z ej                  d      Zd	 Z G d
 d      Zy)CustomerDocument	documents)rQ   rI   rE   Trv   zcustomer_documents/)rx   
validatorsr   c                 `    | j                   j                   d| j                  j                   S )Nz - )r   r   documentr   r   s    r   r    zCustomerDocument.__str__   s)    --''(DMM,>,>+?@@r!   c                       e Zd ZdZy)CustomerDocument.MetazCustomer DocumentsNrV   r.   r!   r   rX   r      s    2r!   rX   N)r"   r#   r$   r	   rg   ru   CASCADEr   r%   doc_name	FileFieldr   r   r(   uploaded_atr    rX   r.   r!   r   r   r      sn     v  PVP^P^_Hv3d;Hv*?M_L`aH&&&&D9KA3 3r!   r   c                      e Zd Z ej                  eej                        Z ej                  eej                        Z	 ej                  d      Z ej                         Z ej                  d      Z ej                  d      Zd Zy)r   )rI   Tr   r   c                 |    | j                   j                   d| j                  j                   d| j                   dS )Nz reactivated z for z years)r   rS   r   r   r   r   s    r   r    zReactivationLog.__str__   s<    ##))*-8M8M7NeTXTgTgShhnoor!   N)r"   r#   r$   r	   rg   rC   r   r   ru   r   r(   reactivated_onr&   r   r)   r*   r    r.   r!   r   r   r      s~    $6$$[FNNKL v  fnnEH)V))t<N(V((*N"f""5G"f""D1Gpr!   r   N)django.contrib.auth.base_userr   r   django.contrib.auth.hashersr   django.contrib.auth.modelsr   r   r   	django.dbr	   django.utils.translationr
   r=   qr_manager.modelsr   django.utilsr   datetimer   django.core.exceptionsr   Modelr   r0   rC   ru   r   r   r   r.   r!   r   <module>r      s    K 5 J J  6 # !  2fll ? (*&"$4 *&ZW
 "2 W
t
3v|| 
3
pfll 
pr!   