
    Gyf+                        d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	m
Z
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  G d dej                  Z G d de          Z G d dee          Zg dZ G d dee          Zd Z  G d dej                  Z! G d dej                  Z" G d dej                  Z#dS )    )get_user)BaseUserManagerAbstractBaseUser)make_password)PermissionsMixinGroup
PermissionUser)modelstransaction)gettext_lazy)Batch)timezone)	timedelta)ValidationErrorc                   H   e Zd Z ej        d          Z ej        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        d          Zd ZdS )Companyd   
max_lengthr   default r   r      Tauto_now_addauto_nowFc                     | j         S N)nameselfs    HD:\MyProjects\RESCUE_SCANNER\qr_onkar_130624\qr_onkar\accounts\models.py__str__zCompany.__str__   s
    y    N)__name__
__module____qualname__r   	CharFieldr"   IntegerFieldnumber_of_logins_allowedredirect_urlcost_per_qr_codetotal_amountDateTimeFieldcreatedupdatedBooleanField	is_active
is_deletedr&    r'   r%   r   r      s        6s+++D2v21===#6#sB???L*v*2666&6&q111L"f"555G"f"D111G##D111I$$U333J    r'   r   c                       e Zd Zd Zd ZdS )CustomAccountManagerc                 <   |                     dd           |                     dd           |                     dd           |                    d          durt          d          |                    d          durt          d           | j        ||fi |S )Nis_staffTis_superuserr5   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11555T222J''t33JKKKN++477NOOOtx@@<@@@r'   c                     |st          t          d                     | j        dd|i|}|                    |           |                                 |S )Nz You must provide an phone numberrA   r7   )r?   _modelset_passwordsave)r$   rA   rB   rC   users        r%   r@   z CustomAccountManager.create_user*   sd     	DQABBCCCtz66666(###		r'   N)r(   r)   r*   rD   r@   r7   r'   r%   r9   r9      s5        A A A    r'   r9   c                   x    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j        d          Z ej        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   rM   	on_deletenullblankr   Adminr   rT   rS      Fr   company_groupsrelated_namerT   company_user_permissionsr   r   emailrA   c                       e Zd ZdZdS )CompanyUser.MetazCompany UsersNr(   r)   r*   verbose_name_pluralr7   r'   r%   Metar^   P   s        -r'   ra   c                     | j         S r!   )r\   r#   s    r%   r&   zCompanyUser.__str__S   s
    zr'   c                     | j         r| j         j        | _        nd| _        | j        r3| j                            d          st          | j                  | _         t                      j        |i | d S )Nr   zpbkdf2_sha256$bcryptargon2)companyr"   company_namerB   
startswithr   superrI   r$   argskwargs	__class__s      r%   rI   zCompanyUser.saveV   sy    < 	# $ 1D "D= 	9!9!9:`!a!a 	9)$-88DMd%f%%%%%r'   )&r(   r)   r*   r   
EmailFieldr\   r+   r"   rA   
ForeignKeyr   SET_NULLrg   role	TextFieldaddressrB   r4   r5   r;   r6   r<   ManyToManyFieldr   groupsr	   user_permissionsr1   r2   r3   r9   objectsUSERNAME_FIELDREQUIRED_FIELDSra   r&   rI   __classcell__rn   s   @r%   rL   rL   3   s       FT***E6s+++DF4888Ef6?UYZZZG6sG<<<DfT555G  v3///H $#E222I"v"5111H$$U333J&6&u555L#V#E8HPTUUUF-v-jGaimnnn"f"555G"f"D111G""$$GNiO. . . . . . . .  & & & & & & & & &r'   rL   ))Maler}   )Femaler~   )Otherr   c                       e Zd Z ej        dd          Z ej        dd          Z 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 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          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d          Z ej        dd	          Z ej        ddd          Z ej        ddd          Z ej        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          Z& ej%        d          Z' ej(        dd          Z) ej(        d          Z* ej+        d          Z, ej+        d          Z- ej.        e/ej0        dd          Z1 ej2        e3dd          Z4 ej2        e5dd          Z6dZ7 G d d          Z8d  Z9	  fd!Z:e;d"             Z<e;d%d$            Z= xZ>S )&	Customersr   TrP   rN   r   rT   
   r}   )r   choicesr   rV      )r   rT   rS      )rT   z media/static/user_profile_image/z"static/user_profile_image/logo.png)	upload_tor   rW      Fstatus)r   verbose_namer   r   r   rQ   customers_groupsrY   customers_user_permissionsqr_codec                       e Zd ZdZdS )Customers.Metar   Nr_   r7   r'   r%   ra   r      s        )r'   ra   c                     | j         S r!   )r   r#   s    r%   r&   zCustomers.__str__   s
    |r'   c                    | j         r| j        rt          j                            | j                   j        }|s| j                            d          s~t          | j                  | _        t          j                    	                                t          d          z   | _        t          j                    	                                | _        n| j        s| j         r~t          | j                  | _        t          j                    	                                t          d          z   | _        t          j                    	                                | _         t                      j        |i | d S )Npkrd   i  days)r   rB   r   rx   r>   ri   r   r   nowdater   
valid_uptoregistration_daterj   rI   )r$   rl   rm   original_passwordrn   s       r%   rI   zCustomers.save   s2   7 
	;t} 
	; ) 1 5 5 5 A A J$ ?T]-E-EFl-m-m ? -dm < <"*,.."5"5"7"7):Q:Q:Q"Q)1)<)<)>)>& 	;47 	;)$-88DM&lnn1133iW6M6M6MMDO%-\^^%8%8%:%:D"d%f%%%%%r'   c                     t          j                                                    }| j                            |d          }|D ]}d|_        |                                 d S )NT)valid_upto__ltr5   F)r   r   r   rx   filterr5   rI   )clstodayexpired_usersrJ   s       r%   deactivate_expired_usersz"Customers.deactivate_expired_users   sd     ##%%**%4*PP! 	 	D"DNIIKKKK	 	r'      c                 r   | j                             |          }t          j                             |          }d|_        t	          j                                                    t          |dz            z   |_        |	                                 t          j                             |||           d S )Nr   Tim  r   )company_usercustomeryears_extended)rx   r>   rL   r5   r   r   r   r   r   rI   ReactivationLogcreate)r   user_idcompany_user_idyearsrJ   r   s         r%   reactivate_userzCustomers.reactivate_user   s     {'**"*../.BB",..--//)2M2M2MM		&&%  	' 	
 	
 	
 	
 	
r'   )r   )?r(   r)   r*   r   r+   r   
first_name	last_nameGENDER_CHOICESgender	DateFielddobheight_feetheight_inchesweightaddress_line1address_line2citystatepinrA   ro   r\   
ImageFieldprofile_imagerB   r   r   emergency_phone1emergency_email1emergency_name1emergency_phone2emergency_email2emergency_name2primary_physician_nameprimary_physician_contactblood_grouprs   medical_history	allergiesr4   r5   r6   r1   r2   r3   rp   r   rq   batchru   r   rv   r	   rw   ry   ra   r&   rI   classmethodr   r   r{   r|   s   @r%   r   r   g   s5       f#d;;;G!!S===J  Ct<<<IV^VTTTF
&
4
0
0
0C"&"at<<<K$F$>>>MV$777F$F$4dKKKM$F$4dKKKM6s$TBBBDF4dCCCE
&
b4
@
@
@CF$777EFD)))E%F%0R.RT T TMv3d;;;H!!4888J((t$??? (v'2TMMM(v(t$???&f&#TMMMO'v'2TMMM(v(t$???&f&#TMMMO-V-DIII 0 0Bd K K K"&"b===K&f&T222O  t,,,I $#EIIII$$U333J"f"555G"f"D111GFevTQUVVVE#V#E8JRVWWWF-v-jGckopppN* * * * * * * *  )& & & & & 
 
 [
 
 
 
 [
 
 
 
 
r'   r   c                 >    | j         }|dk    rt          d          | S )Ni   z2The maximum file size that can be uploaded is 10MB)sizer   )valuefilesizes     r%   validate_file_sizer      s(    zH(RS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dS )CustomerDocument	documents)rZ   rR   rN   Tr   zcustomer_documents/)r   
validatorsr   c                 8    | j         j         d| j        j         S )Nz - )r   r   documentr"   r#   s    r%   r&   zCustomerDocument.__str__   s     -'@@DM,>@@@r'   c                       e Zd ZdZdS )CustomerDocument.MetazCustomer DocumentsNr_   r7   r'   r%   ra   r      s        2r'   ra   N)r(   r)   r*   r   rp   r   CASCADEr   r+   doc_name	FileFieldr   r   r1   uploaded_atr&   ra   r7   r'   r%   r   r      s         v PVP^___Hv3d;;;Hv*?M_L`aaaH&&&D999KA A A3 3 3 3 3 3 3 3 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dS )r   rR   Tr   r   c                 J    | j         j         d| j        j         d| j         dS )Nz reactivated z for z years)r   r\   r   r   r   r#   s    r%   r&   zReactivationLog.__str__   s0    #)oo8MooTXTgoooor'   N)r(   r)   r*   r   rp   rL   r   r   r   r   r1   reactivated_onr,   r   r2   r3   r&   r7   r'   r%   r   r      s        $6$[FNKKKL v fnEEEH)V)t<<<N(V(**N"f"555G"f"D111Gp p p p pr'   r   c                       e Zd Z ej        eej                  Z ej                    Z	 ej        e
ej        d          Z ej        dd          Z ej        d          Z ej        d          Z fdZ xZS )	Transactionsr   transaction_updated_by)rR   rZ   TrV   r   r   c                    t          j                    5  | j        j        r3| j        xj        | j        z  c_        | j                                          t          t          |           j        |i | d d d            d S # 1 swxY w Y   d S r!   )
r   atomic_stateaddingrg   r0   amountrI   rj   r   rk   s      r%   rI   zTransactions.save  s    !! 	< 	<{! $))T[8))!!###*E,%%*D;F;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   A BB	B)r(   r)   r*   r   rp   r   r   rg   r,   r   rL   r   rs   noter1   r2   r3   rI   r{   r|   s   @r%   r   r      s        f6>BBBG V ""F.V.{fnbz{{{6$T222D"f"555G"f"D111G< < < < < < < < <r'   r   N)$django.contrib.authr   django.contrib.auth.base_userr   r   django.contrib.auth.hashersr   django.contrib.auth.modelsr   r   r	   r
   	django.dbr   r   django.utils.translationr   rF   qr_manager.modelsr   django.utilsr   datetimer   django.core.exceptionsr   Modelr   r9   rL   r   r   r   r   r   r   r7   r'   r%   <module>r      sI   ( ( ( ( ( ( K K K K K K K K 5 5 5 5 5 5 P P P P P P P P P P P P ) ) ) ) ) ) ) ) 6 6 6 6 6 6 # # # # # # ! ! ! ! ! !       2 2 2 2 2 2    fl   $    ?   (*& *& *& *& *&"$4 *& *& *&Z  l
 l
 l
 l
 l
 "2 l
 l
 l
^  
3 
3 
3 
3 
3v| 
3 
3 
3
p 
p 
p 
p 
pfl 
p 
p 
p< < < < <6< < < < < <r'   