
    f8                        d dl Z d dlmZ d dlmZmZmZmZ d dlmZ ddlT d dl	m
Z
 d dlmZ d d	lmZ d d
lmZ  G d de          Zd Z G d dee          Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d  d!ej                  Z G d" d#ej                  Z G d$ d%ej                  Z G d& d'ej                  Z G d( d)ej                  Z  G d* d+ej                  Z! G d, d-ej                  Z" G d. d/ej                  Z# G d0 d1ej                  Z$ G d2 d3ej                  Z% G d4 d5ej                  Z&dS )6    N)models)AbstractBaseUserPermissionsMixinBaseUserManagerAbstractUser)Group   )*)EmailValidator)now)datetime)timezonec                       e Zd ZddZddZdS )CustomUserManagerNc                     |st          d          |                     |          } | j        dd|i|}|                    |           |                    | j                   |S )NzThe email field must be setemail)using )
ValueErrornormalize_emailmodelset_passwordsave_db)selfr   passwordextra_fieldsusers        K/var/www/html/nettyfy-visnx/visnx-backend/Nettyfy_visnx/myprofile/models.pycreate_userzCustomUserManager.create_user   sw     	<:;;;$$U++tz88%8<88(###			!!!    c                 x    |                     dd           |                     dd            | j        ||fi |S )Nis_staffTis_superuser)
setdefaultr    )r   r   r   r   s       r   create_superuserz"CustomUserManager.create_superuser   sK    
D111555tx@@<@@@r!   N)__name__
__module____qualname__r    r&   r   r!   r   r   r      sB           A A A A A Ar!   r   c                     t           j                            d          \  }}t                                          d          }| d| | }t           j                            d|          S )Nimagez%Y%m%d%H%M%S_profile_image)ospathsplitextr   strftimejoin)instancer,   base	extension	timestampnew_filenames         r   get_timestamped_filenamer9      s^    g&&w//OD)~..I33Y3	33L7<<666r!   c                   t   e Zd Z ej        d          Z ej        ddd          Z ej        ddd          Z ej	        e
dd          Z ej        d          Z ej        d          Z ej        ddd          Z ej        d	          Z ej        d
          Z e            ZdZd Zd ZdS )
CustomUserT)unique   
max_lengthnullblank	upload_tor@   rA   defaultF   auto_now_addauto_nowr   c                 6    d                     | j                  S )Nz{} {})formatr   r   s    r   get_full_namezCustomUser.get_full_name2   s    ~~dj)))r!   c                     | j         S r'   )r   rM   s    r   get_short_namezCustomUser.get_short_name5   s
    zr!   N)r(   r)   r*   r   
EmailFieldr   	CharField
first_name	last_name
ImageFieldr9   r.   BooleanField	is_activer#   phone_noDateTimeField
created_at
updated_atr   objectsUSERNAME_FIELDrN   rP   r   r!   r   r;   r;   !   s       FT***E!!Rd$GGGJ  BTFFFI%F%0Ht[_```M##D111I"v"5111Hv24dCCCH%%4888J%%t444J!!GN* * *    r!   r;   c                      e Zd Zg 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          Z ej        ddd	          Z ej        d
edd          Z ej        d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d          ZdS )Person))Maler`   )Femalera   )Otherrb   )Prefer not to sayrc   Tr=   )r<   r?   r>   rF   r@   rA   z
person/dp/rB      r?   choicesrA   r@   zDate of Birth)verbose_namer@   rA   FrD   )rH   r@   rA   N)r(   r)   r*   GENDER_CHOICESr   rR   usernamerS   rT   contact_numberrQ   r   rU   r.   gender	DateFielddobrV   is_blacklistedopt_out	TimeField
entry_time	exit_timerY   rZ   r   r!   r   r_   r_   8   sY         N  vt;;;H!!Rd$GGGJ  BTFFFI%V%$dKKKNF4t444E%F%4tTTTMV^4VZ[[[F
&
d$
O
O
OC(V(777N!f!%000G!!t4888J  d$777I%%4TNNNJJJr!   r_   c                       e Zd Z ej        eej        d          Z ej        d          Z	 ej
        d          ZdS )	FaceImageface_images)	on_deleterelated_namezface_images/)rC   TrG   N)r(   r)   r*   r   
ForeignKeyr_   CASCADEpersonrU   r,   rY   uploaded_atr   r!   r   ru   ru   M   sS        Vvm\\\FF777E&&&D999KKKr!   ru   c                   T   e Zd Z ej        e          Z ej        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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          Z ej        d          Z ej        eej        ddd	          Z ej        eej        ddd
	          Z ej        d          ZdS )Organization2   Tr>   r?   r<   r@   rA   FrD   rG   
created_byrw   r@   rA   rx   
updated_byrI   N)r(   r)   r*   r   ManyToManyFieldr;   organization_userrR   org_typeorg_nameorg_addressorg_city	org_stateorg_countryorg_zipcode	org_phonerQ   	org_emailrV   email_notification_is_enabledrY   rZ   ry   SET_NULLr   r   r[   r   r!   r   r~   r~   R   s       ..z::v2DEEEHv2TDQQQH"&"bt4HHHKv2DEEEH  BTFFFI"&"bt4HHHK"&"bt4HHHK  BTFFFI!!Rd$GGGI$7F$7$F$F$F!%%4888J"":t[_nz{{{J"":t[_nz{{{J%%t444JJJr!   r~   c                      e Zd Z ej        e          Z ej        eej	        dd          Z
 ej        dddd          Z ej        ddd          Z ej        dddd	          Z ej        dddd	          Z ej        d
          Z ej        eej        ddd          Z ej        eej        ddd          Z ej        d          ZdS )LocationTrw   r@   rA   r   Fr   r>   	      )
max_digitsdecimal_placesr@   rA   rG   loc_created_byr   loc_updated_byrI   N)r(   r)   r*   r   r   r;   location_userry   r~   rz   organizationrR   loc_nameloc_addressDecimalField	longitudelatituderY   rZ   r   r   r   r[   r   r!   r   r   r   c   s       *F*:66M$6$\V^RV^bcccLv2UTRRRH"&"bt4HHHK##qUYZZZI"v"aTXYYYH%%4888J"":t[_n~J"":t[_n~J%%t444JJJr!   r   c                      e Zd Z ej        e          Z ej        eej	        dd          Z
 ej        eej	        dd          Z ej        dddd          Z ej        ddd          Z ej        d          Z ej        eej        ddd	          Z ej        eej        ddd
	          Z ej        d          ZdS )AreaTr   r   Fr   r>   rG   area_created_byr   area_updated_byrI   N)r(   r)   r*   r   r   r;   	area_userry   r~   rz   r   r   locationrR   	area_namearea_addressrY   rZ   r   r   r   r[   r   r!   r   r   r   o   s       &&z22I$6$\V^RV^bcccL v V^$VZ[[[H  Be$dSSSI#6#rDIIIL%%4888J"":t[_n  A  A  AJ"":t[_n  A  A  AJ%%t444JJJr!   r   c                      e Zd Z ej        e          Z ej        eej	        dd          Z
 ej        eej	        dd          Z ej        eej	        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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          Z ej        d          Z ej        eej        ddd          Z ej        eej        ddd          Z ej        d          Z dS )CameraTr   d   Fr   r=   rE   r@   rA   r>        rd   rD   rG   camera_created_byr   camera_updated_byrI   N)!r(   r)   r*   r   r   r;   camera_userry   r~   rz   r   r   r   r   arearR   camera_nameIntegerFieldfps
ip_addressrtsp_urlframe_numbersportrj   r   rV   
is_enabledrY   rZ   r   r   r   r[   r   r!   r   r   r   z   s       (&(44K$6$\V^RV^bcccL v V^$VZ[[[H6TV^$dSSSD"&"cTQUVVVK
&
rt$
?
?
?C!!St4HHHJv4d$GGGH$F$$dKKKM6Dt444Dv3TFFFHv3TFFFH$$T222J%%4888J"":t[_  oB  C  C  CJ"":t[_  oB  C  C  CJ%%t444JJJr!   r   c                      e Zd Z ej        eej        dd          Z ej        eej        dd          Z	 ej        e
ej        dd          Z ej        eej        dd          Z ej        ddd          Z ej        d          Z ej        d          Z ej        d          Z ej        eej        ddd          Z ej        eej        ddd	          Z ej        d
          ZdS )CameraEventTr     r>   rG   rD   camera_event_created_byr   camera_event_updated_byrI   N)r(   r)   r*   r   ry   r~   rz   r   r   r   r   r   r   camerarR   camera_eventrY   rZ   rV   r   is_event_detectr;   r   r   r   r[   r   r!   r   r   r      sO       $6$\V^RV^bcccL v V^$VZ[[[H6TV^$dSSSDVvdRVWWWF#6#sTJJJL%%4888J$$T222J)f)D999O"":t[_  oH  I  I  IJ"":t[_  oH  I  I  IJ%%t444JJJr!   r   c                   F   e Zd Zg dZ ej        eej        dd          Z ej        e	ej        dd          Z
 ej        eej        dd          Z ej        dedd          Z ej        e          Z ej        eej        dd          Z ej        eej        dd          Z ej        eej        dd          Z ej        d          Z ej        ddd          Z ej        d	dd
          Z ej        d          Z ej        ej                   Z!dS )Alert))Yesr   )Nor   )NotDetectedr   Tr   re   rf   rD   zalert_images/rB   r   r>   N)"r(   r)   r*   DETECTION_CHOICESr   ry   r_   r   r{   r   r   r   camera_eventsrR   detection_choicer   r;   camera_incharger~   r   r   r   r   r   rV   r   rU   framealert_messager   rY   r   r   rZ   r   r!   r   r   r      s{         
 VvtSWXXXFVvtSWXXXF%F%kV_SW_cdddM'v'2?PX\cghhh,f,Z88O$6$\V_SW_cdddL6TV_4tTTTD v V_4W[\\\H)f)D999OF/DQQQE$F$4tLLLM$$T222J%%hl;;;JJJr!   r   c                   ~    e Zd Z ej        dd          Z ej        e          Z ej	        e
j                  ZdS )AlertPersonTrackingTrd   rD   N)r(   r)   r*   r   r   tracking_idr   r   alertsrY   r   r   rZ   r   r!   r   r   r      sN        %&%4t<<<K#V#E**F%%hl;;;JJJr!   r   c                   f   e Zd Z ej        eej        dd          Z ej        e	          Z
 ej        ddd          Z ej        dd          Z ej        dd          Z ej        e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        ddd          Z ej        ej                  Z ej        e ej!        ddd          Z" ej        e ej!        ddd          Z# ej        d          Z$dS )RoiTr      r>   rd   r   r   z#00ff00)r?   rE   r@   rA   r	   FrD   roi_created_byr   roi_updated_byrI   N)%r(   r)   r*   r   ry   r   rz   r   r   r   r   rR   roi_namer   frame_number	TextFielddescription	JSONFielddictcoordinatesrq   
start_timeend_timecolorPositiveIntegerFieldpriorityrV   specific_analyticsrY   r   r   rZ   r;   r   r   r   r[   r   r!   r   r   r      s       VvdRVWWWF*F*;77Mv3DEEEH&6&D===L"&"D999K"&"4d$GGGK!!t4888JvT666HFYTQUVVVE*v*1$dKKKH,,UDQQQ%%hl;;;J"":t[_n~J"":t[_n~J%%t444JJJr!   r   c                       e Zd Z ej        e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        ej                  ZdS )QueueManagementTr   rd   r   r>   rD   N)r(   r)   r*   r   ry   r   rz   roir   currunt_queue_countaverage_waiting_timerR   recomanded_staff_adjustmentactionrY   r   r   rZ   r   r!   r   r   r      s        
&
C6>D
Q
Q
QC .&-4tDDD.6.DEEE"2&"2ctSW"X"X"XV4tDDDF%%hl;;;JJJr!   r   c                       e Zd Z ej        eej        dd          Z ej        d          Z	 ej
        ej                  ZdS )HeatMappingTr   )r@   rD   N)r(   r)   r*   r   ry   r   rz   r   r   	dwel_timerY   r   r   rZ   r   r!   r   r   r      sW        
&
C6>D
Q
Q
QC  d+++I%%hl;;;JJJr!   r   c                   H   e Zd Z ej        e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          Z ej        dd          Z ej        dd          Z ej        ej                  ZdS )DemographicDetailsTr   r   r>   rd   rD   N)r(   r)   r*   r   ry   r   rz   r   rR   	age_rangeunique_userr   total_Eventsaverage_age
median_agemode_agerY   r   r   rZ   r   r!   r   r   r      s        
&
C6>D
Q
Q
QC  Cd$GGGI"&"cDIIIK&6&D===L%&%4t<<<K$$$d;;;J"v"D999H%%hl;;;JJJr!   r   c                       e Zd Z ej        eej        dd          Z ej        dd          Z	 ej        dd          Z
 ej        ej                  ZdS )ParkingTr   rd   rD   N)r(   r)   r*   r   ry   r   rz   r   r   total_countoccupied_parkingrY   r   r   rZ   r   r!   r   r   r      sq        
&
C6>D
Q
Q
QC%&%4t<<<K*v*DAAA%%hl;;;JJJr!   r   c                       e Zd Z ej        e          Z ej        eej	                  Z
 ej        d          Z ej        d          ZdS )LinkCameraEventToCamera)rw   TrD   rG   N)r(   r)   r*   r   r   r   r   ry   r   rz   r   rV   r   rY   rZ   r   r!   r   r   r      sc        *F*;77MVv@@@F$$T222J%%4888JJJr!   r   c                       e Zd ZdZ ej        eej        dd          Z ej	        deddd          Z
 ej	        ddd          Z ej	        ddd          Z ej        d	          Z ej        d
          Z ej        d          ZdS )TelegramBotToken))Telegramr   )Whatsappr   Tr   r   r   )r?   rg   rE   r@   rA   r   r>   rG   rI   rD   N)r(   r)   r*   MESSENGER_CHOICESr   ry   r;   rz   r   rR   messenger_typechat_id	bot_tokenrY   rZ   r[   rV   r   r   r!   r   r   r      s         6Z6>tRVWWWD%V%@Q[ekovz{{{Nf$TFFFG  Dt4HHHI%%4888J%%t444J$$T222JJJr!   r   c                   4    e Zd Z ej        ddd          ZdS )DashboardRetailr   Tr>   Nr(   r)   r*   r   rR   namer   r!   r   r  r     '        6t$dCCCDDDr!   r  c                   4    e Zd Z ej        ddd          ZdS )DashboardManufacturingr   Tr>   Nr  r   r!   r   r
  r
     r  r!   r
  c                   4    e Zd Z ej        ddd          ZdS )SafetyAndCompliancer   Tr>   Nr  r   r!   r   r  r     r  r!   r  )'r/   	django.dbr   django.contrib.auth.modelsr   r   r   r   r   django.core.validatorsr   django.utils.timezoner   r   django.utilsr   r   r9   r;   Modelr_   ru   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r   r!   r   <module>r     s   				       g g g g g g g g g g g g , , , , , ,     1 1 1 1 1 1 % % % % % %       ! ! ! ! ! !A A A A A A A A7 7 7    !#3   .O O O O OV\ O O O*: : : : : : : :
5 5 5 5 56< 5 5 5"
5 
5 
5 
5 
5v| 
5 
5 
5	5 	5 	5 	5 	56< 	5 	5 	55 5 5 5 5V\ 5 5 5&5 5 5 5 5&, 5 5 5< < < < <FL < < <(< < < < <&, < < <
5 5 5 5 5&, 5 5 5$< < < < <fl < < << < < < <&, < < <
< < < < < < < << < < < <fl < < <9 9 9 9 9fl 9 9 93 3 3 3 3v| 3 3 3D D D D Dfl D D DD D D D DV\ D D DD D D D D&, D D D D Dr!   