
    .gR                     l   d dl mZ d dlmZ ddlT d dlmZ d dlmZm	Z	 d dl
mZ d dlm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           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/ d0ej                  Z# G d1 d2ej                  Z$d3S )4    )serializers)validate_password   )*)ObjectDoesNotExist)Group
Permission)Q)settingsc                   (    e Zd Z G d d          ZdS )GroupSerializerc                       e Zd ZeZddgZdS )GroupSerializer.MetaidnameN)__name__
__module____qualname__r   modelfields     P/var/www/html/nettyfy-visnx/visnx-backend/Nettyfy_visnx/myprofile/serializers.pyMetar   
   s        r   r   Nr   r   r   r   r   r   r   r   r   	   s<                           r   r   c                   (    e Zd Z G d d          ZdS )GroupUserSerializerc                       e Zd ZeZg dZdS )GroupUserSerializer.Meta)r   
first_name	last_nameemailNr   r   r   
CustomUserr   r   r   r   r   r   r      s        ;;;r   r   Nr   r   r   r   r   r      s<        < < < < < < < < < <r   r   c                       e Zd Z ej        ddeg          Z ej                    Z ej                    Z	 G d d          Z
d Zd Zd ZdS )	CustomUserSerializerT)
write_onlyrequired
validatorsc                       e Zd ZeZdZdS )CustomUserSerializer.Meta__all__Nr#   r   r   r   r   r+      s        r   r   c                 t    |j                                         r|j                                         j        nd S N)groupsexistsfirstr   selfobjs     r   
get_groupszCustomUserSerializer.get_groups   s1    *-**;*;*=*=Gsz!!&&4Gr   c                 p    |j         r.t          |j         d          rt          j        |j         j        z   S d S )Nurl)profile_imagehasattrr   URLr7   r2   s     r   get_profile_imagez&CustomUserSerializer.get_profile_image   s9     	6):E!B!B 	6< 1 555tr   c                    | j                             d          }| j                             d          }| j                             d          }| j                             d          }|st          j        ddi          |st          j        ddi          |st          j        ddi          t          j                            |d         ||	          }|                    |           |                                 |S )
Npasswordgroupr    r!   zGroup is requiredzFirst Name is requiredzLast Name is requiredr"   )r"   r    r!   )	initial_datagetr   ValidationErrorr$   objectscreateset_passwordsave)r3   validated_datar=   r>   r    r!   users          r   rC   zCustomUserSerializer.create%   s   $((44!%%g..&**<88
%))+66	 	N-w8K.LMMM 	X-|=U.VWWW 	V-{<S.TUUU!((1HT^ir(ss(###		r   N)r   r   r   r   	CharFieldr   r=   SerializerMethodFieldr/   r8   r   r5   r;   rC   r   r   r   r&   r&      s        ${$tQbPcdddH.[.00F5K577M       H H H      r   r&   c                       e Zd Z ej                    Z ej                    Z ej                    Z G d d          Zd Z	d Z
d ZdS )OrganizationSerializerc                       e Zd ZeZg dZdS )OrganizationSerializer.Meta)r   org_nameorganization_userorg_addressorg_city	org_stateorg_countryorg_zipcode	org_phone	org_emailemail_notification_is_enabled
created_at
created_by
updated_by
updated_atN)r   r   r   Organizationr   r   r   r   r   r   rM   :   s$        : : :r   r   c                     |j                                                             d                              d          }t          |d          j        S NT)is_superusersuper_admin)groups__name)many)rO   allexcluder   data)r3   r4   	org_userss      r   get_organization_userz,OrganizationSerializer.get_organization_user@   sO    )--//77t7LLTTdqTrr	"94888==r   c                     |j         r_t          |j                   j        }|d         r|d         r|d         dz   |d         z   S |d         r|d         S |d         r|d         S d S d S Nr    r!    rY   r&   re   r3   r4   created_by_users      r   get_created_byz%OrganizationSerializer.get_created_byC       > 		23>BBGO|, 1M &|4s:_[=YYY . &|44 - &{33ttr   c                     |j         r_t          |j                   j        }|d         r|d         r|d         dz   |d         z   S |d         r|d         S |d         r|d         S d S d S ri   rZ   r&   re   r3   r4   updated_by_users      r   get_updated_byz%OrganizationSerializer.get_updated_byO   ro   r   N)r   r   r   r   rI   rO   rY   rZ   r   rg   rn   rt   r   r   r   rK   rK   6   s        99;;2244J2244J: : : : : : : :> > >      r   rK   c                       e Zd Z ej                    Z ej        dd          Z ej                    Z ej                    Z	 G d d          Z
d Zd Zd Zd	S )
LocationSerializerorganization.org_nameTsource	read_onlyc                       e Zd ZeZg dZdS )LocationSerializer.Meta)r   loc_nameorganization_idrN   loc_address	longitudelatituderY   rX   rZ   r[   location_user_detailsN)r   r   r   Locationr   r   r   r   r   r   r|   a   s'         v  v  vr   r   c                     |j                                                             d                              d          }t          |d          j        S r^   )location_userrc   rd   r   re   )r3   r4   	loc_userss      r   get_location_user_detailsz,LocationSerializer.get_location_user_detailse   sO    %))++3343HHPP`mPnn	"94888==r   c                     |j         r_t          |j                   j        }|d         r|d         r|d         dz   |d         z   S |d         r|d         S |d         r|d         S d S d S ri   rk   rl   s      r   rn   z!LocationSerializer.get_created_byh   ro   r   c                     |j         r_t          |j                   j        }|d         r|d         r|d         dz   |d         z   S |d         r|d         S |d         r|d         S d S d S ri   rq   rr   s      r   rt   z!LocationSerializer.get_updated_byt   ro   r   N)r   r   r   r   rI   r   rH   rN   rY   rZ   r   r   rn   rt   r   r   r   rv   rv   \   s        =K=??${$,CtTTTH2244J2244Jv v v v v v v v> > >      r   rv   c                       e Zd Z ej                    Z ej        dd          Z ej        dd          Z ej        dd          Z	 ej                    Z
 ej                    Z G d d          Zd Zd	 Zd
 ZdS )AreaSerializerlocation.loc_nameTrx   zlocation.organization.idzlocation.organization.org_namec                       e Zd ZeZg dZdS )AreaSerializer.Meta)r   	area_namer~   rN   location_idr}   area_addressrY   rX   rZ   r[   area_user_detailsN)r   r   r   Arear   r   r   r   r   r   r      s'         t  t  tr   r   c                     |j                                                             d                              d          }t          |d          j        S r^   )	area_userrc   rd   r   re   )r3   r4   
area_userss      r   get_area_user_detailsz$AreaSerializer.get_area_user_details   sN    ]&&((000EEMM]jMkk
":D999>>r   c                     |j         r_t          |j                   j        }|d         r|d         r|d         dz   |d         z   S |d         r|d         S |d         r|d         S d S d S ri   rk   rl   s      r   rn   zAreaSerializer.get_created_by   ro   r   c                     |j         r_t          |j                   j        }|d         r|d         r|d         dz   |d         z   S |d         r|d         S |d         r|d         S d S d S ri   rq   rr   s      r   rt   zAreaSerializer.get_updated_by   ro   r   N)r   r   r   r   rI   r   rH   r}   r~   rN   rY   rZ   r   r   rn   rt   r   r   r   r   r      s        99;;${$,?4PPPH+k+3MY]^^^O${$,LX\]]]H2244J2244Jt t t t t t t t? ? ?      r   r   c                   l   e Zd Z ej                    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                    Z ej                    Z G d	 d
          Zd Zd Zd ZdS )CameraSerializerzorganization.idTrx   rw   zlocation.idr   zarea.idarea.area_namec                       e Zd ZeZg dZdS )CameraSerializer.Meta)r   camera_namer~   rN   r   r}   area_idr   portframe_numbersrY   rX   rZ   r[   fps
ip_addressrtsp_url
is_enabledcamera_user_detailsNr   r   r   Camerar   r   r   r   r   r   r      s'             r   r   c                     |j                                                             d                              d          }t          |d          j        S r^   )camera_userrc   rd   r   re   )r3   r4   	cam_userss      r   get_camera_user_detailsz(CameraSerializer.get_camera_user_details   sN    O''))111FFNN^kNll	"94888==r   c                     |j         r_t          |j                   j        }|d         r|d         r|d         dz   |d         z   S |d         r|d         S |d         r|d         S d S d S ri   rk   rl   s      r   rn   zCameraSerializer.get_created_by   ro   r   c                     |j         r_t          |j                   j        }|d         r|d         r|d         dz   |d         z   S |d         r|d         S |d         r|d         S d S d S ri   rq   rr   s      r   rt   zCameraSerializer.get_updated_by   ro   r   N)r   r   r   r   rI   r   rH   r~   rN   r   r}   r   r   rY   rZ   r   r   rn   rt   r   r   r   r   r      s1       ;+;==+k+3DPTUUUO${$,CtTTTH'+'}MMMK${$,?4PPPH#k#9EEEG%%-=NNNI2244J2244J       > > >      r   r   c                   (    e Zd Z G d d          ZdS )%CameraListWithoutPaginationSerializerc                       e Zd ZeZddgZdS )*CameraListWithoutPaginationSerializer.Metar   r   Nr   r   r   r   r   r      s        }%r   r   Nr   r   r   r   r   r      s<        & & & & & & & & & &r   r   c                       e Zd Z ej        dd          Z ej        dd          Z ej        dd          Z ej        dd          Z ej	                    Z
 ej	                    Z G d d          Zd	 Zd
 ZdS )CameraEventSerializerrw   Trx   r   r   camera.camera_namec                       e Zd ZeZg dZdS )CameraEventSerializer.Meta)r   camera_eventorganizationorganization_namelocationlocation_namearear   camerar   r   rY   rX   rZ   r[   N)r   r   r   CameraEventr   r   r   r   r   r   r      s'         Q  Q  Qr   r   c                     |j         r_t          |j                   j        }|d         r|d         r|d         dz   |d         z   S |d         r|d         S |d         r|d         S d S d S ri   rk   rl   s      r   rn   z$CameraEventSerializer.get_created_by   ro   r   c                     |j         r_t          |j                   j        }|d         r|d         r|d         dz   |d         z   S |d         r|d         S |d         r|d         S d S d S ri   rq   rr   s      r   rt   z$CameraEventSerializer.get_updated_by   ro   r   N)r   r   r   r   rH   r   r   r   r   rI   rY   rZ   r   rn   rt   r   r   r   r   r      s        --5LX\]]])K)1DPTUUUM%%-=NNNI'+'/CtTTTK2244J2244JQ Q Q Q Q Q Q Q      r   r   c                       e Zd Z ej        dd          Z eddd          Z ej                    Z	 ej                    Z
 G d d          Zd Zd	 Zd
S )RoiSerializerr   Trx   camera_events)rb   rz   ry   c                       e Zd ZeZg dZdS )RoiSerializer.Meta)r   roi_namecamera_events_datar   r   frame_numbercoordinates
start_timeend_timecolorrY   rX   rZ   r[   N)r   r   r   Roir   r   r   r   r   r   r     s'         D  D  Dr   r   c                     |j         r_t          |j                   j        }|d         r|d         r|d         dz   |d         z   S |d         r|d         S |d         r|d         S d S d S ri   rk   rl   s      r   rn   zRoiSerializer.get_created_by  ro   r   c                     |j         r_t          |j                   j        }|d         r|d         r|d         dz   |d         z   S |d         r|d         S |d         r|d         S d S d S ri   rq   rr   s      r   rt   zRoiSerializer.get_updated_by  ro   r   N)r   r   r   r   rH   r   r   r   rI   rY   rZ   r   rn   rt   r   r   r   r   r   	  s        '+'/CtTTTK..DDSbccc2244J2244JD D D D D D D D      r   r   c                   Z    e Zd Z ej        d          Z ej                    Zd Zd ZdS )StatusResponseSerializersuccess)defaultc                     t          di |S )Nr   )StatusResponse)r3   rF   s     r   rC   zStatusResponseSerializer.create/  s    /////r   c                     |                     d|j                  |_        |                     d|j                  |_        |S )Nstatusmessage)r@   r   r   )r3   instancerF   s      r   updatezStatusResponseSerializer.update2  s;    (,,XxGG)--i9IJJr   N)	r   r   r   r   rH   r   r   rC   r   r   r   r   r   r   +  sW        "["9555F#k#%%G0 0 0    r   r   c                       e Zd ZddZdS )r   r   Operation successfulc                 "    || _         || _        d S r.   )r   r   )r3   r   r   s      r   __init__zStatusResponse.__init__8  s    r   N)r   r   )r   r   r   r   r   r   r   r   r   7  s(             r   r   c                       e Z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
                    Z G d d	          Zd
 ZdS )AlertSerializerrw   Trx   r   camera_events.camera_eventr   r   c                       e Zd ZeZg dZdS )AlertSerializer.Meta)r   r   r   detection_choicer   camera_events_nameframer   r   r   alert_messager   rX   Nr   r   r   Alertr   r   r   r   r   r   r   D  s'         I  I  Ir   r   c                     |j         rNt          |j         d          r9| j                            d          }|                    |j         j                  S d S Nr7   requestr   r9   contextr@   build_absolute_urir7   r3   r4   r   s      r   	get_framezAlertSerializer.get_frameH  Q    9 	=E22 	=l&&y11G--cim<<<tr   N)r   r   r   r   rH   r   r   r   r   r   rI   r   r   r   r   r   r   r   r   =  s        --5LX\]]]'+'/CtTTTK..6R^bccc)K)1DPTUUUM%%-=NNNI-K-//EI I I I I I I I    r   r   c                       e Zd Z ej        dd          Z ej        dd          Z ej                    Z G d d          Z	d Z
dS )	VideoUploadSerializerr   Trx   r   c                       e Zd ZeZg dZdS )VideoUploadSerializer.Meta)r   rX   r   r   r   r   r   r   Nr   r   r   r   r   r   S  s        xxxr   r   c                     |j         rNt          |j         d          r9| j                            d          }|                    |j         j                  S d S r   r   r   s      r   r   zVideoUploadSerializer.get_frameW  r   r   N)r   r   r   r   rH   r   r   rI   r   r   r   r   r   r   r   r   O  s        ..6R^bccc'+'/CtTTTK-K-//Ey y y y y y y y    r   r   c                       e Zd Z ej        dd          Z ej        dd          Z ej        dd          Z ej        dd          Z G d d          Z	d	S )
QueueManagementSerializer roi.camera.organization.org_nameTrx   roi.camera.area.area_nameroi.camera.location.loc_nameroi.camera.camera_namec                       e Zd ZeZg dZdS )QueueManagementSerializer.Meta)
r   r   r   r   r   currunt_queue_countaverage_waiting_timerecomanded_staff_adjustmentactionrX   N)r   r   r   QueueManagementr   r   r   r   r   r   r  c  s'         @  @  @r   r   N)
r   r   r   r   rH   r   r   r   r   r   r   r   r   r   r   ]  s        --7Ygklll%%/JX\]]]I)K)3Q_cdddM'+'1IW[\\\K@ @ @ @ @ @ @ @ @ @r   r   c                       e Z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	 G d d	          Z
d
S )HeatMappingSerializerr   Trx   r   r   r   roi.roi_namec                       e Zd ZeZg dZdS )HeatMappingSerializer.Meta)r   r   r   r   r   roir   	dwel_timeN)r   r   r   HeatMappingr   r   r   r   r   r   r  n  s        uuur   r   Nr   r   r   r   rH   r   r   r   r   r   r   r   r   r   r  r  g  s        --7Ygklll%%/JX\]]]I)K)3Q_cdddM'+'1IW[\\\K${$NdKKKHv v v v v v v v v vr   r  c                       e Z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	 G d d	          Z
d
S )DemographicDetailsSerializerr   Trx   r   r   r   r	  c                       e Zd ZeZg dZdS )!DemographicDetailsSerializer.Meta)r   r   r   r   r   r   	age_rangeunique_usertotal_Eventsaverage_age
median_agemode_ageN)r   r   r   DemographicDetailsr   r   r   r   r   r   r  z  s'        " y  y  yr   r   Nr  r   r   r   r  r  r  s        --7Ygklll%%/JX\]]]I)K)3Q_cdddM'+'1IW[\\\K${$NdKKKHy y y y y y y y y yr   r  c                       e Zd Z ej        dd          Z ej        dd          Z ej        dd          Z ej        dd          Z ej	                    Z
 G d d          Zd	 Zd
S )ParkingSerializerr   Trx   r   r   r   c                       e Zd ZeZg dZdS )ParkingSerializer.Meta)r   r   r   r   r   total_countoccupied_parkingavailable_parkingN)r   r   r   Parkingr   r   r   r   r   r   r    s'         P  P  Pr   r   c                 `    |j         &|j        |j         |j        k    r|j         |j        z
  S d S r.   )r  r   r2   s     r   get_available_parkingz'ParkingSerializer.get_available_parking  s9    ?&3+?+KPSP_bebvPvPv?S%999tr   N)r   r   r   r   rH   r   r   r   r   rI   r!  r   r$  r   r   r   r  r  ~  s        --7Ygklll%%/JX\]]]I)K)3Q_cdddM'+'1IW[\\\K99;;P P P P P P P P    r   r  c                   (    e Zd Z G d d          ZdS )PersonSerializerc                       e Zd ZeZdZdS )PersonSerializer.Metar,   N)r   r   r   Personr   r   r   r   r   r   r(    s        r   r   Nr   r   r   r   r&  r&    s<                 r   r&  c                   ,    e Zd Z ej                    ZdS )ImageUploadSerializerN)r   r   r   r   
ImageFieldimager   r   r   r+  r+    s        "K"$$EEEr   r+  c                   L    e Zd Z ej                    Z G d d          Zd ZdS )AlertPersonTrackingSerializerc                       e Zd ZeZg dZdS )"AlertPersonTrackingSerializer.Meta)r   tracking_idalertsN)r   r   r   AlertPersonTrackingr   r   r   r   r   r   r1    s        #000r   r   c                     | j                             d          }t          |j                                        dd|i          j        S )Nr   T)rb   r   )r   r@   r   r3  rc   re   r   s      r   
get_alertsz(AlertPersonTrackingSerializer.get_alerts  sA    ,""9--sz~~//dYPWDXYYY^^r   N)r   r   r   r   rI   r3  r   r6  r   r   r   r/  r/    s`        .[.00F1 1 1 1 1 1 1 1_ _ _ _ _r   r/  N)%rest_frameworkr   'django.contrib.auth.password_validationr   modelsdjango.core.exceptionsr   django.contrib.auth.modelsr   r	   django.db.modelsr
   django.confr   ModelSerializerr   r   r&   rK   rv   r   r   r   r   r   
Serializerr   r   r   r   r   r  r  r  r&  r+  r/  r   r   r   <module>r@     sb   & & & & & & E E E E E E     5 5 5 5 5 5 8 8 8 8 8 8 8 8                           k1      
< < < < <+5 < < <
! ! ! ! !;6 ! ! !F$ $ $ $ $[8 $ $ $L# # # # #4 # # #H% % % % %[0 % % %L( ( ( ( ({2 ( ( (T& & & & &K,G & & &( ( ( ( (K7 ( ( (f         K/      D
 
 
 
 
{5 
 
 
           k1   $    K7   @ @ @ @ @ ; @ @ @	v 	v 	v 	v 	vK7 	v 	v 	v
y 
y 
y 
y 
y;#> 
y 
y 
y    3   "    {2   % % % % %K2 % % %	_ 	_ 	_ 	_ 	_K$? 	_ 	_ 	_ 	_ 	_r   