
    g-0                    l   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T 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 ddlT ddlmZmZmZ d dl Z!d dl"m#Z# d dl$Z$d dl%m&Z& d dl'm(Z( d dl)m*Z* d dl+Z+d dl"m,Z, d dl-m.Z. d dl/m0Z0m1Z1m2Z2 d dl3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z9m:Z: d dl;m<Z< d dl=m>Z> d dlm?Z? d dl@mAZAmBZBmCZC d dlDmEZE d d lFmGZG d d!lHmIZI d d"lmJZJ d d#lKmLZL  G d$ d%e          ZM G d& d'ejN                  ZO G d( d)ejN                  ZP G d* d+ejN                  ZQ G d, d-ejR                  ZS G d. d/ejN                  ZT G d0 d1ejN                  ZU G d2 d3ejN                  ZV G d4 d5ejN                  ZW G d6 d7ejN                  ZX G d8 d9ejN                  ZY G d: d;ejN                  ZZ G d< d=ejN                  Z[ G d> d?ejN                  Z\ G d@ dAejN                  Z] G dB dCejN                  Z^ G dD dEejN                  Z_ G dF dGejN                  Z` G dH dIejN                  Za G dJ dKejN                  Zb G dL dMejN                  Zc G dN dOejN                  Zd G dP dQejN                  Ze G dR dSejN                  Zf G dT dUejN                  Zg G dV dWejN                  Zh G dX dYejN                  Zi G dZ d[ejN                  Zj G d\ d]ejN                  Zk G d^ d_ejN                  Zld d`lmmnZn  G da dbejN                  Zo G dc ddejN                  Zpd delqmrZr  G df dgejN                  Zs G dh diejN                  Zt e(djdkdkl          Zu G dm dnejN                  Zv G do dpejN                  Zw G dq drejN                  Zx G ds dtejN                  Zy G du dve          Zz G dw dxejN                  Z{ G dy dzejN                  Z| G d{ d|ejN                  Z} G d} d~ejN                  Z~ G d dejN                  Zd dl;Z;d dl"m,Z, d dl=m>Z> d dlmZ d dlmZ ddlmZ d dlmZ  G d dejN                  Zd dl;Z;d dlm?Z?mZ d dlmZ d dl"m,Z, d dlmZ d dlmZ d dlmZ d dl6m7Z7 d dl-m.Z. d dl/m0Z0m9Z9m:Z:m1Z1m2Z2 d dl3m4Z4m5Z5  G d dejN                  Zd dl+Z+d dl"m,Z, d d	lmZ d dlmZ d dlm?Z?mZ d dlmZmZ  G d dejN                  Zd dl+Z+d dlZd dlmZ d dlmZ d dl"m,Z, d dlmZ ddlmZ ddlmZ d dlZd dl-m.Z. d dlmZ d dl;m<Z<  G d dej                  Z G d dej                  Z G d dejN                  Zd dlmZ  G d dejN                  Zd dlZ G d dejN                  Zd dlmZ  G d dejN                  Z G d dejN                  Z G d dejN                  Zd dlZd dl"m,Z, d dlZd dl"m,Z, d dlmZ d dlmZ d dl mZ d dlZ edg          d             Zd dlZd dlmZ d dl mZ d dlmZ d dlmZ  edg          d             Zd dlmZ d dl mZ d dlmZ d d	lmZ d dlZd dlZd dlmZ d d	lmZ d dl mZ d dlmZ ddlmZmZmZ ddlmZ d dlZd dlZd dlmZ d dl@Z@d dlZej        j        ZddZd dlZd dlZd Z G d de          Zd Z G d de          Zd Zd dlmZ  G d de          Zd Z G d de          Zd dl@m@Z@mZ d dlZ G d dejN                  Z G dÄ dejN                  Z G dń dejN                  Z G dǄ dejN                  Z G dɄ dejN                  Z G d˄ dejN                  Z G d̈́ de          Z G dτ dejN                  Z G dф dejN                  Z G dӄ dejN                  Z G dՄ dejN                  Zd dlZ G dׄ dejN                  Zd dlZ G dل dejN                  ZdS )    )Response)AllowAnyIsAdminUserIsAuthenticated)RefreshToken)Group)PageNumberPagination   )*)viewsetsstatuspermissions)APIView)authenticate)check_password)
Permission)ContentType)Q)IsAdminOrReadOnlyIsManagerOrAdminIsExecutiveOrAdminN)JsonResponse)InMemoryUploadedFile)Celery)call_command)HttpResponse)letter)SimpleDocTemplate	ParagraphSpacer)getSampleStyleSheetParagraphStyle)colors)Table
TableStyle)BytesIO)Workbook)Count)	timedeltadatetime)defaultdict)ObjectDoesNotExist)validate_dates)filters)Decimalc                       e Zd ZdZdZdZdS )StandardResultsSetPagination
   	page_sizepkN)__name__
__module____qualname__r4   page_size_query_paramlookup_url_kwarg     J/var/www/html/nettyfy-visnx/visnx-backend/Nettyfy_visnx/myprofile/views.pyr2   r2   1   s!        I'r<   r2   c                   &    e Zd ZegZd Zd Zd ZdS )GroupCreateViewc                    	 |j         }|j                            d          }|j                            dg           }|                    d          st	          ddd          S |r|rt
          j                            |                                          }|rt	          ddd          S t          j                            |	          }t          |          }	|	
                                  |	j        j        |  |	
                                 t	          d
dd          S t	          ddd          S # t          $ r*}
t	          ddt          |
          d          cY d }
~
S d }
~
ww xY w)Nnamepermission_idzauth.add_groupFYou are not authorized.!r   messagerA   zGroup already exists!id__inTzGroup created successfully.z!name and permissions are requred!Something went wrongr   rE   data)userrK   gethas_permr   r   objectsfilterfirstr   saver   add	Exceptionstr)selfrequestargskwargsrL   rA   permission_idsgrppermissions_to_assigngroupes              r=   createzGroupCreateView.create9   s   	_<D<##F++D$\--obAAN==!122 Z5=W X XYYY a am**$*77==?? Y#e?V$W$WXXX(2(:(A(A(A(X(X%T***

%!%'<==

8!: !: ; ; ;  %;^ _ _``` 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s2   A"D: %A	D: /A8D: (D: :
E.E)#E.)E.c                    	 | j                             d          }|j        }|                    d          st	          ddd          S |st	          ddd          S t
          j                            |                                          }|	                                 t	          dd	d          S # t          $ r*}t	          dd
t          |          d          cY d }~S d }~ww xY w)Ngroup_idzauth.delete_groupFrC   rD   zGroup id is requiredidTzGroup Deleted successfully.rI   rJ   )rY   rM   rL   rN   r   r   rO   rP   rQ   deleterT   rU   )rV   rW   rX   rY   ra   rL   r]   r^   s           r=   destroyzGroupCreateView.destroy^   s   	_{z22H<D==!455 Z5=W X XYYY V5=S T TUUUM((H(55;;==ELLNNNt6STTUUU 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s+   AB6 
B6 AB6 6
C* C%C*%C*c                     	 t           j                                        }t          dt	          |d          j        d          S # t          $ r*}t          ddt          |          d          cY d }~S d }~ww xY w)NTmanyr   rK   FrI   rJ   )r   rO   allr   GroupUserSerializerrK   rT   rU   )rV   rW   r]   r^   s       r=   listzGroupCreateView.listl   s    	_M%%''Et3FuRV3W3W3W3\]]^^^ 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s   AA 
A:A5/A:5A:N)r6   r7   r8   r   permission_classesr_   re   rl   r;   r<   r=   r?   r?   6   sV        )*_ _ _J_ _ __ _ _ _ _r<   r?   c                       e Zd ZegZd ZdS )GroupListAPIViewc                    	 |j         }|j                            d          }t          j                                                            d          }|                    d          st          ddd          S |r|	                    |          }g }|D ],}|
                    |j        t          |          d	           -t          d
d|d          S # t          $ r*}	t          ddt          |	          d          cY d }	~	S d }	~	ww xY w)NrA   super_adminrF   zauth.view_groupFrC   rD   )name__icontains)ra   
group_nameTzGroup list!rJ   rI   )rL   GETrM   r   rO   rj   excluderN   r   rP   appendrc   rU   rT   )
rV   rW   rX   rY   rL   name_filtergroupsgroups_listr]   r^   s
             r=   rl   zGroupListAPIView.listv   sV   	_<D!+//&11K]&&((000FFF==!233 Z5=W X XYYY D{CCK  "" %"%e**$ $    
 '"$ $ % % %
  	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s%   A9C <AC 
D"DDDNr6   r7   r8   r   rm   rl   r;   r<   r=   ro   ro   s   s1        )*_ _ _ _ _r<   ro   c                       e Zd ZegZd ZdS )GroupPermissionAssignAPIViewc                    	 |j         j                            d                                          st	          ddd          S |j                            d          }|j                            d          }|j                            dg           }|j                            d	          }|r|st	          dd
d          S 	 t          j                            |          	                                }n'# t          j
        $ r t	          ddd          cY S w xY w|r||_        |                                 t          j                                        }	 |j        j        |	  |j                                        D ]}
 |
j        j        |	  |dk    rlt          j                            |          } |j        j        |  |j                                        D ]}
 |
j        j        |  t	          ddd          S t	          ddd          S # t(          $ r*}t	          ddt+          |          d          cY d }~S d }~ww xY w)Nrq   rF   Fz1Only SuperAdmins can assign/unassign permissions.rD   ra   rA   rB   actionMissing or null datarb   zInvalid group IDassignrG   Tz"Permissions assigned successfully!zInvalid action!rI   rJ   )rL   rx   rP   existsr   rK   rM   r   rO   rQ   DoesNotExistrA   rR   r   rj   r   removeuser_setuser_permissionsrS   rT   rU   )rV   rW   rX   rY   ra   rA   rZ   r~   r]   permissions_to_unassignrL   r\   r^   s                r=   r_   z#GroupPermissionAssignAPIView.create   s   (	_<&--=-AAHHJJ r5<o p pqqq |''
33H<##F++D$\--obAAN\%%h//F! U U5<R S STTTR,,,99??AA% R R R5=O P PQQQQQR !


&0&8&<&<&>&>#$E$&=>>**,, G G,%,.EFFF!!(2(:(A(A(A(X(X%%!%'<==!N..00 F FD-D)-/DEEE"C! !   
  %;L M MNNN 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_sP   AH A>H 2C9 8H 9!DH DC)H H 
I#IIINr6   r7   r8   r   rm   r_   r;   r<   r=   r|   r|      s1        )*)_ )_ )_ )_ )_r<   r|   c                       e Zd ZegZd ZdS )PermissionListViewc                    	 |j                             d          st          ddd          S |j                            dd           }|rt          |          }|j         }g }|w	 t          j                            |          	                                }|j
                            dd	          }n'# t          j        $ r t          dd
d          cY S w xY wt          j                                        }i }	|D ]}
|
j        j        }||	vr|d d d d ddddd	|	|<   |
j        d| k    r'|r	|
j        |v nd|	|         d<   |
j        |	|         d<   V|
j        d| k    r'|r	|
j        |v nd|	|         d<   |
j        |	|         d<   |
j        d| k    r'|r	|
j        |v nd|	|         d<   |
j        |	|         d<   |
j        d| k    r&|r	|
j        |v nd|	|         d<   |
j        |	|         d<   t'          |	                                          }t          dd|d          S # t*          $ r*}t          ddt-          |          d          cY d }~S d }~ww xY w)Nzauth.view_permissionF0You don't have permission to perform this actionrD   ra   rb   rc   T)flatzGroup not found!)	rA   rS   changerd   viewisAddisChangeisDeleteisViewadd_r   rS   change_r   r   delete_r   rd   view_r   r   zPermission List!rJ   rI   )rL   rN   r   rt   rM   intr   rO   rP   rQ   r   values_listr   r   rj   content_typemodelcodenamerc   rl   valuesrT   rU   )rV   rW   rX   rY   ra   rL   group_permissions_idsr]   all_permissionspermission_dict
permission
model_namepermission_datar^   s                 r=   rl   zPermissionListView.list   sR   =	_<(()?@@ r5=o p pqqq{z488H )x==<D$&!#V!M00H0==CCEEE,1,=,I,I$UY,I,Z,Z))) V V V#uAS$T$TUUUUUV )04466O O- H H
'4:
_44 *#"&"& $!&$)$)"'
3 
3OJ/ &*=*=*===ez  <F:=La;a;a  AFOJ/89COJ/66(,Bj,B,BBBh}  ?IjmOd>d>d  DIOJ/
;<FMOJ/99(,Bj,B,BBBh}  ?IjmOd>d>d  DIOJ/
;<FMOJ/99(,@J,@,@@@f{  =GJMMb<b<b  BGOJ/9:D-OJ/7 #?#9#9#;#;<<O-'    
  	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_sH   +H' 7H' &AB5 4H' 5!CH' CEH' '
I1IIINrz   r;   r<   r=   r   r      s1        )*>_ >_ >_ >_ >_r<   r   c                       e Zd ZegZd ZdS )UserPermissionAssignViewc                    |j         j                            d                                          st	          dddd          S |j                            d          }|j                            d	          }|j                            d
          }|r|r|st	          dddd          S |dvrt	          dddd          S d |                    d          D             }	 t          j	                            |          }t          j	                            |          }nM# t          j        $ r t	          dddd          cY S t          j        $ r t	          dddd          cY S w xY w|dk    r# |j        j        |  t	          dddd          S |dk    r# |j        j        |  t	          dddd          S t	          dddd          S )Nrq   rF   Fz+Only Admin can assign/unassign permissions.rD     r   user_idrB   r~   r   )r   unassignz6Invalid action. Action must be "assign" or "unassign".c                 ,    g | ]}t          |          S r;   )r   ).0rc   s     r=   
<listcomp>z3UserPermissionAssignView.create.<locals>.<listcomp>/  s    EEERREEEr<   ,rb   rG   User Not FoundzPermissionId not foundr   Tz!Permission assigned successfully!   r   z#Permission Unassigned successfully!zInvalid actionr   error)rL   rx   rP   r   r   rK   rM   split
CustomUserrO   r   r   r   rS   r   )rV   rW   r   rZ   r~   rB   rL   r   s           r=   r_   zUserPermissionAssignView.create   s[   |"))})==DDFF 	uu8effpstttt,""9-- ))/::!!(++ 	^n 	^F 	^u8NOOY\]]]]///u8pqq{~ FE>+?+?+D+DEEE	`%))w)77D#+22M2JJJJ& 	X 	X 	Xe8HIISVWWWWWW& 	` 	` 	`e8PQQ[^______	` X%D!%z22d6Y[[ehiiiiz!!(D!(*55d6[\\fijjjje5EFFPSTTTTs   'A D( (#E2"E21E2Nr   r;   r<   r=   r   r     s1        )*"U "U "U "U "Ur<   r   c                       e Zd ZegZej                                                            d          Z	e
ZeZd Zd Zd ZdS )UserRegisterViewTis_superuserc                     d}d| d| }t           j        }t          ||||g          }|                                 d S )NzUser Registered credentialsz8You registration is successfully completed.

 Username: z
Password: to)settingsEMAIL_HOST_USEREmailMessagesend)rV   
user_emailuser_passwordsubjectrE   
from_emailemails          r=   send_email_touserz"UserRegisterView.send_email_touserK  sN    /vzvvgtvv,
WgzzlKKK

r<   c                 >   	 | j         j        }|                    d          st          ddd          S i }|j                            d          }|j                            d          }|j                            d          }|j                            d                                          }	|j                            d	          }
|j                            d
          }t          j        	                    |          
                                }|	st          ddg d          S t          j        	                    |	          
                                }|rt          ddi d          S |
st          ddg d          S |st          ddg d          S |st          ddg d          S |st          ddg d          S |rt          d|dd          S |rtt          |j        d|i          }|                                r.|                                 t          j        	                    |          
                                }|j                                        }|j                            |j                   |D ]!}|j        j                            |           "|j                                         t          |j        d|i          }t-          |          }|j                            |j        d                    t          dd|j         d|j        |j        d          S t          d|j        dd          S t          dd dd          S # t4          $ r*}t          dd!t7          |          d          cY d }~S d }~ww xY w)"Nzmyprofile.add_customuserFr   rD   
first_name	last_nameprofile_imager   passwordr]   organization_useremail is requiredrJ   r   zEmail is already exists.Password is requiredzFirst name is requiredzLast name is requiredOrganization not found.r   r   r   rW   )rK   contextrb   r   rc   TzUser  created successfully.)r   rE   rK   r]   zPlease select grouprI   )rW   rL   rN   r   rK   rM   lowerOrganizationrO   rP   rQ   r   CustomUserSerializeris_validrR   r   r   rj   r   rS   instancer   GroupSerializerr   rA   errorsrT   rU   )rV   rW   rX   rY   rL   r   r   r   r   r   r   r]   orgexisting_email
serializergroup_detailsr   pergroup_serializerr^   s                       r=   r_   zUserRegisterView.createR  s   q	_<$D==!;<< r5=o p pqqqF )),77J((55I#L,,_==ML$$W--3355E|''
33HL$$W--E&---EEKKMMC \5<OWY Z Z[[['/66U6CCIIKKN d5=W_a b bccc _5<RZ\ ] ]^^^ a5<T\^ _ _``` `5<S[] ^ ^___ b5<U]_ ` `aaa d5& A ACPPPP  d!57<QZ\cPd!e!e!eJ!**,, d")))(-(<(<%(<(H(H(N(N(P(P%2%>%B%B%D%D
%.22:3FGGG#- J JC&/@DDSIIII"+00222%9*:MW`biVj%k%k%k
+:=+I+I(-11*/$2GHHH'4Cu=K]CuCuCu  ~H  ~M  Vf  Vk  )l  )l   m   m  m'5*BS(T(T_bcccc#u>S$T$T_bccccz  	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s[   2M( C6M( ,AM( 3M( M( M( 2M( M( EM( ;M( M( (
N2NNNc                 F   	 | j         j        }|                    d          st          ddd          S |j                            dd          }|j                            dd          }|j                            dd          }|j                            d	d          }t          j                            |
          	                                }	|	j
                                                            d                              d          }
|rk|                                                                }|
                    t          |          t          |          z  t          |          z            }
|s|rAt!          ||          \  }}}|rt          d|g d          S |
                    ||g          }
|rEt"          j                            |                                          st          ddg d          S |
                                r|                     |
          }|/t)          |d|id          }|                     |j                  }nt)          |d|id          }|j        d         }t/          |j                            dd                    }t          dd||z   dz
  |z  ||j        d         d          S t          ddg d          S # t2          $ r*}t          dd t5          |          d          cY d }~S d }~ww xY w)!Nmyprofile.view_customuserFr   rD   search 
start_dateend_daters   r   Tr   rq   groups__name)first_name__icontains)last_name__icontains)email__icontainsrJ   )created_at__rangerF   zInvalid group namerW   r   rh   countr4   r3   User List Successfullyr
   resultsr   rE   
total_pager   rK   r   rI   )rW   rL   rN   r   query_paramsrM   r   rO   rP   rQ   r   rj   ru   stripr   r   r.   r   r   paginate_querysetr   get_paginated_responserK   r   rt   rT   rU   )rV   rW   rX   rY   rL   search_queryr   r   rs   r   org_usererror_messagepager   r   limitr^   s                    r=   rl   zUserRegisterView.list  sx   B	_<$D==!<== r5=o p pqqq"/33HbAAL -11,CCJ+//
B??H -11,CCJ &---EEKKMMC,0022:::MMUUerUssH  J+113399;;#??1\+R+R+R$%\$J$J$J,K&'<&H&H&H,I J J  UX U5CJPX5Y5Y2
8]  Z#uUW$X$XYYY#??j(=S?TT  a}+++<<CCEE a#u@T\^$_$_```    W--h77#!5dIwCW^b!c!c!cJ!%!<!<Z_!M!MJJ!5dIwCW^b!c!c!cJ"0GKOOK<<==4;S/4u}q/@U.J(-(2	(B!D !D E E E
  4:JRT U UVVV 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s7   2K, E8K, .AK, CK, K, ,
L 6LL L N)r6   r7   r8   r   rm   r   rO   rj   ru   querysetr   serializer_classr2   pagination_classr   r_   rl   r;   r<   r=   r   r   E  s        "!%%''//T/BBH+3  r_ r_ r_hD_ D_ D_ D_ D_r<   r   c                   P    e Zd ZegZej                                        Ze	Z
d ZdS )UserListViewc                 (   	 | j         j        }|                    d          st          ddd          S t          j                            |          d         }|j                                        	                    d          	                    d	
          }|r,t          |d|id          }t          dd|j        d          S t          ddg d          S # t          $ r*}t          ddt          |          d          cY d }~S d }~ww xY w)Nr   Fr   rD   r   r   Tr   rq   r   rW   r   r   rJ   r   rI   )rW   rL   rN   r   r   rO   rP   r   rj   ru   r   rK   rT   rU   )	rV   rW   rX   rY   rL   r   user_objr   r^   s	            r=   rl   zUserListView.list  sC   	_<$D==!<== r5=o p pqqq&---EEaHC,0022:::MMUUerUssH W1(IwCW^bccc
4;S]g]l m mnnn4:JRT U UVVV 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s)   2C BC 
C 
D'DDDN)r6   r7   r8   r   rm   r   rO   rj   r   r   r   rl   r;   r<   r=   r   r     sK        )*!%%''H+_ _ _ _ _r<   r   c                   $    e Zd ZegZeZd Zd ZdS )UserupdateViewc                    	 | j         j        }|                    d          st          ddd          S |j        }|j        st          dddd          S |j                            d          }|j                            d	          }|j                            d
          }|r|st          dddd          S ||_        ||_        |t          |t                    s||_        |                                 t          |d|i          }t          dd|j        d          S # t          $ r,}	t          ddt          |	          dd          cY d }	~	S d }	~	ww xY w)Nmyprofile.change_customuserFr   rD   zYou cannot update user profilei  r   r   r   r   z"First name, last name are requiredr   rW   r   Tz"User profile updated successfully.)r   rE   	user_datarI   r   rE   r     )rW   rL   rN   r   is_authenticatedrK   rM   r   r   
isinstancerU   r   rR   r   rT   )
rV   rW   rX   rY   rL   r   r   r   user_serializerr^   s
             r=   updatezUserupdateView.update)  s   	o<$D==!>?? r5=o p pqqq<D ( l5=] ^ ^gjkkkk !)),77J((55I#L,,_==M pY p5=a b bknoooo(DO&DN(M31O1O(%2"IIKKK24)WAUVVVOt7[ixi}  A  A  A 	o 	o 	ou9OZ]^_Z`Z`aajmnnnnnnnnn	os0   2D( !D( A%D( =A*D( (
E2!EEEc                    	 |j         }|                    d          st          ddd          S t          |          }t          d|j        dd          S # t
          $ r*}t          dd	t          |          d
          cY d }~S d }~ww xY w)Nr   Fr   rD   Tri   r   r   rI   rJ   )rL   rN   r   r   rK   rT   rU   )rV   rW   rL   r   r^   s        r=   rl   zUserupdateView.listK  s    	_<D==!<== r5=o p pqqq-d33Jt:?CCSQQQQ 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s"   -A 'A 
B"BBBN)	r6   r7   r8   r   rm   r   r   r  rl   r;   r<   r=   r  r  %  sJ        )*+ o  o  oD_ _ _ _ _r<   r  c                   `    e Zd ZegZeZej        	                                Z
dZd Zd Zd ZdS )UserDeleteViewr   c                 r   	 | j                             d          }|j                            dd           }|j                            dd           }|j                            dd           }|j        }|                    d          st          ddd          S t          j                            |	          	                                st          dd
g d          S t          j                            |	          }||_
        ||_        |j                                         |rt          j                            |	                                          }	|j                            |	           |	j                                        }
|
D ]}|j                            |           |                                 |                                 t+          |d|i          }t          dd|j        dd          S # t,          $ r*}t          ddt/          |          d          cY d }~S d }~ww xY w)Nr   r   r   rs   r  Fr   rD   rb   User not foundrJ   rW   r   TzUser updated successfully.r   r   rI   )rY   rM   rK   rL   rN   r   r   rO   rP   r   r   r   rx   clearr   rQ   rS   r   rj   r   rR   r   rT   rU   )rV   rW   rX   rY   r   r   r   ra   rL   r[   r   r   r   r^   s                 r=   r  zUserDeleteView.update[  s9   )	_kooi00G )),==J((T::I|''T::H<D==!>?? r5=o p pqqq%,,,88??AA Z5=MUW X XYYY%))W)55D(DO&DNK m**h*77==??$$$ _0022
% 3 3C)--c2222		IIKKK .dIw;OPPPJt7S[e[jkkvyzzzz 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s,   BH AH  D!H 
H6H1+H61H6c                 T   | j         j        }	 |                    d          st          ddd          S | j                            d          }||k    rt          ddg d          S t          j                            |          	                                st          dd	g d          S t          j                            |          }|
                                 t          d
dd          S # t          $ r*}t          ddt          |          d          cY d }~S d }~ww xY w)Nzmyprofile.delete_customuserFr   rD   r   z"You cannot delete your own accountrJ   rb   r  TzUser deleted successfullyrI   )rW   rL   rN   r   rY   rM   r   rO   rP   r   rd   rT   rU   )rV   rW   rX   rY   rL   user_to_deleter^   s          r=   re   zUserDeleteView.destroy  sP   | 	b==!>?? r5=o p pqqq![__Y77N%%5=akm n nooo %,,,??FFHH \5=MWY Z Z[[[ %))^)<<DKKMMMt8STTUUU 	b 	b 	bu9OY\]^Y_Y_``aaaaaaaa	bs0   &C3 2C3 (AC3 -AC3 3
D'=D"D'"D'c                    	 | j                             d          }t          j                            |          }|                     |          }t          d|j        dd          S # t          $ r t          ddd	d
          cY S t          $ r*}t          ddt          |          d          cY d }~S d }~ww xY w)Nr   rb   Tri   r   r   FzUser not found.rD   r   rI   rJ   )
rY   rM   r   rO   r   r   rK   r-   rT   rU   )rV   rW   rX   rY   r   rL   r   r^   s           r=   rl   zUserDeleteView.list  s    	bkooi00G%))W)55D..t44JtZ_EESQQQQ! 	X 	X 	Xu9JKKSVWWWWWW 	b 	b 	bu9OY\]^Y_Y_``aaaaaaaa	bs$   A'A* *B=
	B=B82B=8B=N)r6   r7   r8   r   rm   r   r   r   rO   rj   r   lookup_fieldr  re   rl   r;   r<   r=   r  r  U  su        )*+!%%''HL*_ *_ *_\b b b*	b 	b 	b 	b 	br<   r  c                       e Zd ZegZd ZdS )
LogoutViewc                    	 |j                             d          }|st          dddd          S 	 t          |          }|                                 t          dddd	          S # t
          $ r}t          dd
dd          cY d }~S d }~ww xY w# t
          $ r*}t          ddt          |          d          cY d }~S d }~ww xY w)Nrefresh_tokenFzRefresh token is requiredrD   r   r   TzLogout successfullyr   zInvalid refresh tokenrI   rJ   )rK   rM   r   r   	blacklistrT   rU   )rV   rW   rX   rY   r  tokenr^   s          r=   r_   zLogoutView.create  s)   	_#L,,_==M  g5<W X Xbeffffc$]33!!!4;P Q Q[^____ c c c5<S T T^abbbbbbbbbc  	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_sF   /B 6A* *
B4BBB BB 
C	C>C	C	Nr   r;   r<   r=   r  r    s1        )*_ _ _ _ _r<   r  c                       e Zd Zd ZdS )UserLoginViewc                    	 |j                             dd                                           }|j                             dd           }|st          ddg d          S |st          ddg d          S t          j                            |                                          }|st          ddg d          S |j        st          dd	g d          S |r*t          j                            |
                                          }|j
                                        }g }|D ]$}|                    |j        |j        d           %t          j                            |          }	i }
|	D ]G}|j        j        }||
vri |
|<   |j                            d          d         }|j        |
|         |<   Hg }|
                                D ]3\  }}d|i}|                    |           |                    |           4|j        }t/          ||          }di g d}|r|j        dk    rt          ddg d          S t1          j        |          }t5          |          }|j         }t7          |j                  |d<   t;          |          d         |d         d<   ||d         d<   t;          |          d         |d         d<   t;          |          d         |d         d<   t;          |          d         |d         d<   t;          |          d         |d         d<   t;          |          d         |d         d<   t;          |          d         |d         d<   t;          |          d         |d         d<   t;          |          d         |d         d<   t;          |          d         |d         d<   t;          |          d          |d         d <   |j        |d         d!<   |j        |d         d"<   ||d#<   t          d$d%|d          S t          dd&g d          S # t>          $ r*}t          dd't7          |          d(          cY d }~S d }~ww xY w))Nr   r   Fr   rJ   r   r   zInvalid email and password!z1Your account is disabled. Please contact support.r   )rc   rA   )rL   _r   rA   )r   r   r   )accessr  r   z3Your account is disable, please contact to support.r!  rc   r  rx   r   
last_loginr   r   r   	is_activeis_staffphone_no
created_atorg_typeorg_idr   TzYou are logged in!zInvalid username and password!Something went wrong!r  ) rK   rM   r   r   r   rO   rP   rQ   r#  r   rx   rj   rv   rc   rA   r   r   r   r   r   itemsr  r   r   r   for_userr   rU   access_tokendictr'  rT   )rV   rW   r   r   rL   orgsgrps
group_listr[   r   r   r   content_type_modelaction_nameformatted_datar   r   entry	user_authresponse_datarefreshr   rK   r^   s                           r=   r_   zUserLoginView.create  s   H	bL$$Wd3399;;E|''
D99H \5<OWY Z Z[[[ _5<RZ\ ] ]^^^%,,U,;;AACCD h5<Yce f fggg> ~5<oy{ | |}}} 1#+22t2LLRRTT{((
 E EC%%CF#(&C&CDDDD#-#5#<#<$#<#G#G "$"2 U UJ)3)@)F&)@@>@(:;","5";";C"@"@"CKGQ}O$67DD!#1@1F1F1H1H 1 1-L+#\2ELL---"))%0000JE$UxHHHI&(R2NNM i *e33'5Ez  EG  )H  )H   I   I  I"."7	"B"B%9)%D%D
)25g6J2K2Kh/;?::d;Kk248?Ik28<FJ4jjQ`Fak2?CCG::lC[k2<@EI$ZZP^E_k2>B>B4jj>Qk27;CG::lC[k2<@BFt**[BYk2;?BFt**[BYk2;?AEdJAWk2:>AEdJAWk2:>CG::lC[k2<@AEk2:>?Cwk28<<J&89  (4CW`m(n(nooo5<\df g ghhh 	b 	b 	bu8OY\]^Y_Y_``aaaaaaaa	bsE   AP" P" 4AP" ;P" E+P" GP" P" "
Q,QQQNr6   r7   r8   r_   r;   r<   r=   r  r    s-        Ib Ib Ib Ib Ibr<   r  c                   Z    e Zd ZegZeZej        	                                Z
dZd Zd ZdS )UserProfileViewr   c                    |                      |                                           }	 | j        j        }|st	          ddg d          S t
          j                            |j                  	                                }|st	          ddg d          S t          |d|i          }t	          dd	|j        d          S # t          $ r*}t	          dd
t          |          d          cY d }~S d }~ww xY w)NF You can not access location listrJ   r   User profile not foundrW   r   TzUser profile get successfullyr)  r  )filter_querysetget_querysetrW   rL   r   r   rO   rP   r   rQ   r   rK   rT   rU   )	rV   rW   rX   rY   r   rL   user_profiler   r^   s	            r=   rl   zUserProfileView.list  s(   ''(9(9(;(;<<
	b<$D k5<^fh i ijjj%-444:4FFLLNNL d5=U_a b bccc-lYPWDXYYYJt7V`j`oppqqq 	b 	b 	bu8OY\]^Y_Y_``aaaaaaaa	bs*    C 
AC *C 
C5C0*C50C5c                    	 | j         j        }|j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            dd          }	|st	          ddg d	          S t
          j                            |j        
          	                                }
|
st	          ddg d	          S |	r|	|
_
        |r||
_        |r||
_        |r||
_        |r||
_        |
                                 t	          ddd          S # t          $ r*}t	          ddt!          |          d          cY d }~S d }~ww xY w)Nr   r   r%  r   r   r   Fr<  rJ   r   r=  TzProfile updated successfully.rD   r)  r  )rW   rL   rK   rM   r   r   rO   rP   r   rQ   r   r   r   r%  rR   rT   rU   )rV   rW   rX   rY   rL   r   r   r%  r   r   r@  r^   s               r=   r  zUserProfileView.update  s   	b<$D )),77J((55I|''
33HL$$W--E#L,,_R@@M k5<^fh i ijjj%-444:4FFLLNNL d5=U_a b bccc ;-:* 5*4' 3)2& 1(0% +%*"t7VWWXXX 	b 	b 	bu8OY\]^Y_Y_``aaaaaaaa	bs,   B#E &AE 2AE 
E9E4.E94E9N)r6   r7   r8   r   rm   r   r   r   rO   rj   r   r  rl   r  r;   r<   r=   r:  r:  	  sb        )*+!%%''HLb b bb b b b br<   r:  c                       e Zd ZegZd ZdS )ChangePasswordAPIViewc                 ^   	 |j         }|st          ddg d          S |j                            d          }|j                            d          }|st          ddg d          S |st          ddg d          S ||k    rt          ddg d          S t	          ||j                  st          dd	g d          S |                    |           |                                 t          d
dd          S # t          $ r*}t          ddt          |          d          cY d }~S d }~ww xY w)NFz You can not Update User PasswordrJ   old_passwordnew_passwordzOld Password is requiredzNew Password is requiredz.Old and New Password is same please try again.zInvalid old password.Tz#Your password changed successfully.rD   rI   )
rL   r   rK   rM   r   r   set_passwordrR   rT   rU   )rV   rW   rX   rY   rL   rE  rF  r^   s           r=   r  zChangePasswordAPIView.update=  s   	_ <D k5<^fh i ijjj"<++N;;L"<++N;;L c5<V^` a abbb c5<V^` a abbb|++5<ltv w wxxx!,>> c5<S[] ^ ^___!!,///		4;` a abbb 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s;   C8 AC8 'C8 <C8 'C8 =:C8 8
D,D'!D,'D,N)r6   r7   r8   r   rm   r  r;   r<   r=   rC  rC  :  s1        )+_ _ _ _ _r<   rC  c                   ^    e Zd ZegZeZej        	                                Z
dZeZd Zd ZdS )OrganizationCreateViewr(  c                    |                      |                                           }	 | j        j        }|j                            d          }|j                            dd          }|j                            dd          }|j                            dd          }	|                    d          st          ddd	          S d }
|                    |
          	                    d          }
|
st          ddg d          S |	r|	
                                                                }	|
                    t          |	          t          |	          z  t          |	          z  t          |	          z  t          |	          z  t          |	          z            	                    d          }
|r|
                    |          }
|
                                r|                     |
          }|,t          |d          }|                     |j                  }nt          |
d          }|j        d         }t%          |j                            dd                    }t          dd||z   dz
  |z  ||j        d         d          S t          ddg d          S # t(          $ r*}t          ddt+          |          d          cY d }~S d }~ww xY w) Nr(  r   r   r   r   myprofile.view_organizationFr   rD   r   -created_atNo data found!rJ   )org_name__icontains)org_address__icontains)org_phone__icontains)org_email__icontains)(organization_user__first_name__icontains)'organization_user__last_name__icontainsrb   Trg   r   r4   r3   Organization List Successfullyr
   r   r   zOrganization Not FoundrI   )r>  r?  rW   rL   r   rM   rN   r   rP   order_byr   r   r   r   r   OrganizationSerializerr   rK   r   rt   rT   rU   )rV   rW   rX   rY   r   rL   r(  r   r   r   organization_objr   r   r   r   r^   s                   r=   rl   zOrganizationCreateView.list`  sQ   ''(9(9(;(;<<6	_<$D)--h77F -11,rBBJ+//
B??H"/33HbAAL==!>?? r5=o p pqqq#  (4HHQQR_``# Y5<LTV W WXXX N+113399;;#3#:#:1S_;`;`;`;<Vb;c;c;c<d;<T`;a;a;a<b <=T`;a;a;a<b <=ht;u;u;u	<v
 <=gs;t;t;t<u $v $v
 wv~  @M  wN  wN !   H#3#:#:#:#G#G &&(( _--.>??#!7$!G!G!GJ!%!<!<Z_!M!MJJ!78Hd!S!S!SJ"0GKOOK<<==4;[/4u}q/@U.J(-(2	(B!D !D E E E
  4:RZ\ ] ]^^^ 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s1   BJ+ ?J+ FJ+ J+ +
K5KKKc           
         	 | j         j        }|j                            dg           }|j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            d          }	|j                            d          }
|j                            d	          }|r|r|r
|r|r|	r|
r|st	          d
dg d          S |st	          d
dg d          S t
          j                            |                                          st	          d
dg d          S |rHt          j                            |                                          rt	          d
| dg d          S |j
                            d                                          rt          j                            ||||||	|
|          }|j        dk    s||_        t
          j                            t          |          t          d          z  t          d          z            }|j                            |           |j                            |           t%          |          }t'          |dd|i          }|rt	          dd| d|j        d          S t	          d
d| dg d          S t	          d
dg d          S # t(          $ r*}t	          d
dt+          |          d          cY d }~S d }~ww xY w) Nuser_idsorg_nameorg_addressorg_city	org_stateorg_countryorg_zipcode	org_phone	org_emailFAll fields are requiredrJ   zUser IDs are required.rG   Invalid user IDs.)rZ  z organization already exists.rq   rF   )rZ  r[  r\  r]  r^  r_  r`  ra  Tr   r   rW   rh   r   Your Organization r   zFailed to create  organization.z/Invalid user id You can not create OrganizationrI   )rW   rL   rK   rM   r   r   rO   rP   r   r   rx   r_   r   
created_byr   r   setrS   rV  r   rT   rU   )rV   rW   rL   rY  rZ  r[  r\  r]  r^  r_  r`  ra  createdusersr   r  r^   s                    r=   r_   zOrganizationCreateView.create  s   /	_<$D|''
266H|''
33H!,**=99K|''
33H((55I!,**=99K!,**=99K((55I((55I b; bh bi bWb bju b  ~G b  OX b5<U]_ ` `aaa c5=U^` a abbb%,,H,==DDFF ^5=PY[ \ \]]] sL07787LLSSUU s5x<f<f<fnp q qrrr{!!}!55<<>> z&.55'"-' )"-"- ) ) 6 + + ($..)-G&"*11!X2F2F2F232O2O2O3P232F2F2F3G H H )--e444)--d3333G<<
"6u$PY[bOc"d"d"d y#t?tT\?t?t?t  }G  }L  %M  %M  N  N  N#u@lT\@l@l@ltv$w$wxxx5<muw x xyyy 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_sE   DL L 1AL 6A	L  D*L +L L 
M	M>M	M	N)r6   r7   r8   r   rm   rV  r   r   rO   rj   r   r  r2   r   rl   r_   r;   r<   r=   rI  rI  Y  si        )*-#''))HL38_ 8_ 8_t0_ 0_ 0_ 0_ 0_r<   rI  c                   ^    e Zd ZegZeZej        	                                Z
dZeZd Zd ZdS )OrganizationUpdateViewr(  c                    	 | j         j        }|                    d          st          ddd          S | j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            d	          }	|j                            d
          }
|j                            d          }|j                            d          }|j                            d          }|j                            dg           }|j                            d          	                                rt          j                            |          }||_        ||_        ||_        |	|_        |
|_        ||_        ||_        ||_        |j        dk    s||_        |                                 t.          j                            |          }|D ]T}|j                            |                              d                              d          } |j        j        |  Ut6          j                            |          }|D ]T}|j                            |                              d                              d          } |j        j        |  Ut:          j                            |          }|D ]T}|j                            |                              d                              d          } |j        j        |  Ut>          j                            tA          |          tA          d          z  tA          d          z            }|j!        "                    |           |j!        #                    |           tI          |          }|rt          dd| d|j        dd          S t          dd| dg d          S t          ddg d          S # tJ          $ r*}t          ddtM          |          d          cY d }~S d }~ww xY w) Nmyprofile.change_organizationFr   rD   r(  rZ  r[  r\  r]  r^  r_  r`  ra  rY  rq   rF   rb   Torganization__idrG   r   r   re   updated successfully.rJ   r   r   zFailed to update rf  zYou can not update OrganizationrI   )'rW   rL   rN   r   rY   rM   rK   rx   rP   r   r   rO   rZ  r[  r\  r]  r^  r_  r`  ra  r   
updated_byrR   Locationlocation_userru   r   Area	area_userCameracamera_userr   r   r   rh  rS   rV  rT   rU   )rV   rW   rX   rY   rL   r(  rZ  r[  r\  r]  r^  r_  r`  ra  rY  
update_objlinked_locationlocationlocation_users_to_removelinked_areaareaarea_users_to_removelinked_cameracameracamera_users_to_removerj  r   r^   s                               r=   r  zOrganizationUpdateView.update  s   D	_<$D==!@AA r5=o p pqqq[__X..F|''
33H!,**=99K|''
33H((55I!,**=99K!,**=99K((55I((55I|''
B77H{!!}!55<<>> 2j *1555@@
&.
#)4
&&.
#'0
$)4
&)4
&'0
$'0
$($..,0J)!!! #+"2"9"9V"9"T"T / M MH/7/E/M/MW_/M/`/`/h/hx|/h/}/}  0F  0F  Vc  0F  0d  0d,1H*13KLLL #l11V1LL' A AD+/>+A+A8+A+T+T+\+\lp+\+q+q+y+y  JW+y  ,X  ,X()DN)+?@@@ !' 5 5 5 P P+ G GF-3-?-G-GQY-G-Z-Z-b-brv-b-w-w--  P]-  .^  .^*-F&-/EFFF"*11!X2F2F2F232O2O2O3P232F2F2F3G H H ,00777,006663J??
 y#t?tT\?t?t?t  }G  }L  %M  %M  WZ  [  [  [  [#u@lT\@l@l@ltv$w$wxxx5<]eg h hiii 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s/   2P' OP' =P' P' '
Q1QQQc                    	 | j         j        }|                    d          st          ddd          S | j                            d          }|rYt          j                            |          	                                }|rt          ddd          S t          dd	g d
          S t          ddg d
          S # t          $ r*}t          ddt          |          d
          cY d }~S d }~ww xY w)Nzmyprofile.delete_organizationFr   rD   r(  rb   Tz"Organization deleted successfully.zFailed to delete organization.rJ   zOrganisation id is required.rI   )rW   rL   rN   r   rY   rM   r   rO   rP   rd   rT   rU   )rV   rW   rX   rY   rL   r(  r   r^   s           r=   re   zOrganizationUpdateView.destroy  s+   	_<$D==!@AA r5=o p pqqq[__X..F g"*11V1<<CCEE n#t?d$e$efff#u@aik$l$lmmm  5<Zbd e efff 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s/   2B= A!B= B= *B= =
C1C,&C1,C1N)r6   r7   r8   r   rm   rV  r   r   rO   rj   r   r  r2   r   r  re   r;   r<   r=   rl  rl    sl        )*-#''))HL3E_ E_ E_N_ _ _ _ _r<   rl  c                   d    e Zd ZegZeZej        	                                Z
ej        gZdZd ZdS )OrganizationGetViewr(  c                    |                      |                                           }	 | j        j        }t          j                                                            d          }t          |d|id          }t          dd|j
        d          S # t          $ r*}t          ddt          |          d          cY d }~S d }~ww xY w)	NrL  rW   Tr   rT  rJ   FrI   )r>  r?  rW   rL   r   rO   rj   rU  rV  r   rK   rT   rU   rV   rW   rX   rY   r   rL   r   r^   s           r=   rl   zOrganizationGetView.list7  s    ''(9(9(;(;<<
	_<$D $+//11::=IIH 0)WAU[_```Jt7Wakapqqrrr 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s   A(B 
CC;CCN)r6   r7   r8   r   rm   rV  r   r   rO   rj   r   r/   SearchFilterfilter_backendsr  rl   r;   r<   r=   r  r  .  s[        )*-#''))H+,OL_ _ _ _ _r<   r  c                   j    e Zd ZegZeZej        	                                Z
ej        gZdZd Zd ZdS )EmailNotificationr(  c                    |                      |                                           }	 | j        j        }|                    d          st          ddd          S t          j                            |          	                                }t          |d|i          }t          dd	|j        d
          S # t          $ r*}t          ddt          |          d
          cY d }~S d }~ww xY w)NrK  Fr   rD   r   rW   r   TrT  rJ   rI   )r>  r?  rW   rL   rN   r   r   rO   rP   rQ   rV  rK   rT   rU   r  s           r=   rl   zEmailNotification.listM  s   ''(9(9(;(;<<	_<$D==!>?? r5=o p pqqq
 $+22t2LLRRTTH/)WAUVVVJt7Wakapqqrrr 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s$   2B9 AB9 9
C-C("C-(C-c                    	 | j         j        }|                    d          st          ddd          S | j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            d	          }	|j                            d
          }
|j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            d          	                                r|rt          j                            |                                          }|r|r||_        |r||_        |r||_        |	r|	|_        |
r|
|_        |r||_        |r||_        |r||_        |r||_        nd|_        |                                 t          ddd          S t          ddd          S t          ddd          S t          ddg d          S # t.          $ r*}t          ddt1          |          d          cY d }~S d }~ww xY w)Nrn  Fr   rD   r(  rZ  r[  r\  r]  r^  r_  r`  ra  email_notification_is_enabledrq   rF   rb   Tz'Email notification updated successfullyzOrganization Not Found!!zOrganization id is required!!z0You can not enable or disable Email notificationrJ   rI   )rW   rL   rN   r   rY   rM   rK   rx   rP   r   r   rO   rQ   rZ  r[  r\  r]  r^  r_  r`  ra  r  rR   rT   rU   )rV   rW   rX   rY   rL   r(  rZ  r[  r\  r]  r^  r_  r`  ra  r  email_org_objr^   s                    r=   r  zEmailNotification.update]  s   0	_<$D==!@AA r5=o p pqqq[__X..F|''
33H!,**=99K|''
33H((55I!,**=99K!,**=99K((55I((55I,3L,<,<=\,],]){!!}!55<<>> { b$0$8$?$?6$?$J$J$P$P$R$RM$ a# >5=M2& D8CM5# >5=M2$ @6?M3& D8CM5& D8CM5$ @6?M3$ @6?M38 PJgMGGJOMG%**,,,'4Cl(m(mnnn'5D^(_(_```#u@_$`$`aaa5<nvx y yzzz 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s5   2I G%I I -I ?I 
JJ;JJN)r6   r7   r8   r   rm   rV  r   r   rO   rj   r   r/   r  r  r  rl   r  r;   r<   r=   r  r  E  sm        )*-#''))H+,OL_ _ _ 1_ 1_ 1_ 1_ 1_r<   r  c                   Z    e Zd ZegZej                                        Ze	Z
eZd Zd ZdS )LocationCreateViewc                    |                      |                                           }	 | j        j        }|                    d          st          ddd          S |j                            d          }|j                            d          }|j                            dd          }d }	|                    |	          	                    d
          }	|	st          ddg d          S |r|
                                                                }|	                    t          |          t          |          z  t          |          z  t          |          z            	                    d
          }	|r|	                    |          }	|r#|	                    t          |                    }	|	                                r|                     |	          }
|
,t!          |
d          }|                     |j                  }nt!          |	d          }|j        d         }t          |j                            dd                    }t          dd||z   dz
  |z  ||j        d         d          S t          ddg d          S # t(          $ r*}t          ddt+          |          d          cY d }~S d }~ww xY w)Nzmyprofile.view_locationFr   rD   location_idorganization_idr   r   organization__organization_userrL  rM  rJ   )loc_name__icontains)loc_address__icontains!organization__org_name__icontainscreated_at__icontainsrb   ro  Trg   r   r4   r3   Location List Successfullyr
   r   r   zLocation Not FoundrI   )r>  r?  rW   rL   rN   r   r   rM   rP   rU  r   r   r   r   r   r   LocationSerializerr   rK   rt   rT   rU   )rV   rW   rX   rY   r   rL   r  r  r   location_objr   r   r   r   r^   s                  r=   rl   zLocationCreateView.list  s"   ''(9(9(;(;<<@	_<$D==!:;; r5=o p pqqq!.22=AAK%2667HIIO #/33HbAALL  $??T?RR[[\ijjL
   Y5<LTV W WXXX t+113399;;+221<3X3X3X34l3[3[3[4\34Ye3f3f3f4g 45\3Z3Z3Z4[  \  \ ]e\der\s\s 
  E+222DD \+22c/FZFZ2[[""$$ [--l;;#!3Dd!C!C!CJ!%!<!<Z_!M!MJJ!3Ld!K!K!KJ"0GKOOK<<==4;W/4u}q/@U.J(-(2	(B!D !D E E E
  4:NVX Y YZZZ 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s1   2J BJ +FJ ?J 
KK;KKc                 "   	 | j         j        }|                    d          st          ddd          S |j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            d	          }	|j                            d
g           }
|r(t          |t                    st          ddg d          S |	r(t          |	t                    st          ddg d          S |r|st          ddg d          S |rFt          j	        
                    ||                                          rt          ddg d          S t          j	        
                    |
                                          st          ddg d          S t          j	        
                    |                                          }|st          ddg d          S |
D ]D}|j        
                    |                                          st          ddg d          c S Et!          |          }t!          |	          }	t          j	                            ||||	|          }|j        dk    s||_        t          j	        
                    t)          |
          t)          d          z  t)          d          z            }|j                            |           |j                            |           t1          |          }t          dd| d|j        d          S # t2          $ r*}t          ddt5          |          d          cY d }~S d }~ww xY w)Nzmyprofile.add_locationFr   rD   r(  loc_nameloc_address	longitudelatituderY  zLongitude should be in floatrJ   zLatitude should be in floatrb  )r  rp  z-location already exists in this organization.rG   rc  rb   r   )r  r  r  r  organizationTrq   r   r   Your Location r   rI   )rW   rL   rN   r   rK   rM   r
  floatrs  rO   rP   r   r   r   rQ   r   r0   r_   r   rg  r   rt  rh  rS   r  rT   rU   )rV   rW   rX   rY   rL   r(  r  r  r  r  rY  r  r   r{  rj  r   r^   s                    r=   r_   zLocationCreateView.create  s	   B	_<$D==!9:: r5=o p pqqq\%%h//F|''
33H!,**=99K((55I|''
33H|''
B77H  gIu!=!= g5<Zbd e efff f
8U ; ; f5<Yac d deee b b5<U]_ ` `aaa  xH,33x[a3bbiikk x5<ksu v vwww%,,H,==DDFF ^5=PY[ \ \]]] (/66&6AAGGIIL e5=V`b c cddd# b b#5<<<HHOOQQ b#uAT]_$`$`aaaaab	**Ix((H'..#)%#+ /  H $d**&*#&--a.B.B.B./].K.K.K/L./T.B.B.B/C D DE "&&u---"&&t,,,+H55J LHLLL!    
  	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_sR   2M CM <)M &M =AM AM 
AM AM DM 
N$N	N	NN)r6   r7   r8   r   rm   rs  rO   rj   r   r  r   r2   r   rl   r_   r;   r<   r=   r  r    sl        )*##%%H)3B_ B_ B_JC_ C_ C_ C_ C_r<   r  c                   t    e Zd ZegZej                                        Ze	Z
dZeZej        gZdgZd Zd ZdS )LocationUpdateViewloc_idr  c                    	 | j         j        }|                    d          st          ddd          S | j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            d	          }	|j                            d
          }
|j                            dg           }t          j        	                    |          
                                st          ddg d          S |r|st          ddg d          S t          j        	                    |          
                                st          ddg d          S t          j        	                    |                                          }|st          ddg d          S |D ]D}|j        	                    |          
                                st          ddg d          c S Et          j                            |          }||_        ||_        |	|_        |
|_        ||_        |j        dk    s||_        |                                 t.          j        	                    |          }|D ]T}|j                            |                              d                              d          } |j        j        |  Ut6          j        	                    |          }|D ]T}|j                            |                              d                              d          } |j        j        |  Ut          j        	                    t;          |          t;          d          z  t;          d          z            }|j                            |           |j                             |           tC          |          }tE          |dd|i          }t          dd| d|j        d          S # tF          $ r*}t          ddtI          |          d          cY d }~S d }~ww xY w)Nzmyprofile.change_locationFr   rD   r  r(  r  r  r  r  rY  rb   zlocation id not FoundrJ   rb  rG   rc  zOrganization not foundTlocation__idr   rq   r   rW   rd  r  rq  rI   )%rW   rL   rN   r   rY   rM   rK   rs  rO   rP   r   r   r   rQ   r   r  r  r  r  r  r   rr  rR   ru  rv  ru   r   rw  rx  r   rt  rh  rS   r  r   rT   rU   )rV   rW   rX   rY   rL   r  r(  r  r  r  r  rY  r  r   r{  r}  r~  r  r  r  r  rj  r   r  r^   s                            r=   r  zLocationUpdateView.update*  s   M	_<$D==!<== r5=o p pqqq[__X..F\%%h//F|''
33H!,**=99K((55I|''
33H|''
B77H#***77>>@@ `5<S[] ^ ^___ b b5<U]_ ` `aaa %,,H,==DDFF ^5=PY[ \ \]]] (/66&6AAGGIIL   c5=U^` a abbb# b b#5<<<HHOOQQ b#uAT]_$`$`aaaaab  '++v+66H (H#.H !*H (H$0H!$d**&*#MMOOO ,--V-DDK# = ='+~'='=x'='P'P'X'Xhl'X'm'm'u'u  FS'u  (T  (T$%%';<<< #N111HHM' C C)/);)C)CX)C)V)V)^)^nr)^)s)s){){  LY){  *Z  *Z&)")+ABBB&--a.B.B.B./].K.K.K/L./T.B.B.B/C D DE "&&u---"&&t,,,+H55J25dIW^K_```OLHLLL!    
  	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_sE   2P4 C;P4 1P4 AP4 AP4 AP4 HP4 4
Q(>Q#Q(#Q(c                    	 | j         j        }|                    d          st          ddd          S | j                            d          }|rZt          j                            |          	                                }|rt          ddg d	          S t          dd
g d	          S t          ddd          S # t          $ r*}t          ddt          |          d	          cY d }~S d }~ww xY w)Nzmyprofile.delete_locationFr   rD   r  rb   TzLocation deleted successfully.,rJ   z(You have no Authority to delete LocationzLocation id is required.rI   )rW   rL   rN   r   rY   rM   rs  rO   rP   rd   rT   rU   )rV   rW   rX   rY   rL   r  locr^   s           r=   re   zLocationUpdateView.destroy{  s+   	_<$D==!<== r5=o p pqqq[__X..F  Y&---88??AA w#t?`hj$k$klll#u@jrt$u$uvvv5<V W WXXX 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_/   2B= A"B= B= +B= =
C1C,&C1,C1N)r6   r7   r8   r   rm   rs  rO   rj   r   r  r   r  r2   r   r/   r  r  search_fieldsr  re   r;   r<   r=   r  r  !  s~        )*##%%H)L3+,OLMN_ N_ N_b_ _ _ _ _r<   r  c                   f    e Zd ZegZej                                        Ze	Z
ej        gZdgZd ZdS )LocationGetViewr  c                    |                      |                                           }	 | j        j        }|j                            d          }|st          ddg d          S |st          ddg d          S t          j        	                    |          
                                st          ddg d          S t          j        	                    |                              d	          }|	                    |          }|st          dd
g d          S t          |d          }t          dd|j        d          S # t          $ r*}	t          ddt!          |	          d          cY d }	~	S d }	~	ww xY w)Nr  Fr<  rJ   Organization id is requiredrb   Invalid organization idro  rL  zLocation not foundTrg   r  rI   )r>  r?  rW   rL   r   rM   r   r   rO   rP   r   rs  rU  r  rK   rT   rU   )
rV   rW   rX   rY   r   rL   r  r{  r   r^   s
             r=   rl   zLocationGetView.list  s   ''(9(9(;(;<<	_<$D%2667HIIO k5<^fh i ijjj" f5<Yac d deee'..O.DDKKMM b5<U]_ ` `aaa  '../.RR[[\ijjH  /JJH ]5<PXZ [ [\\\+H$???Jt7S[e[jkklll 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s7   :E $E 9AE >AE (E 
E9E4.E94E9N)r6   r7   r8   r   rm   rs  rO   rj   r   r  r   r/   r  r  r  rl   r;   r<   r=   r  r    s]        )*##%%H)+,OLM_ _ _ _ _r<   r  c                   ^    e Zd ZegZej                                        Ze	Z
dZeZd Zd ZdS )AreaCreateViewarea_idc                 $   |                      |                                           }	 | j        j        }|                    d          st          ddd          S |j                            d          }|j                            d          }|j                            d          }|j                            dd	          }	d }
|r)|                    |
          	                    d          }
|
st          ddg d          S |	r|	
                                                                }	|
                    t          |	          t          |	          z  t          |	          z  t          |	          z  t          |	          z  t          |	          z            	                    d          }
|r|
                    |          }
|r|
                    |          }
|r|
                    |          }
|
                                r|                     |
          }|,t          |d          }|                     |j                  }nt          |
d          }|j        d         }t%          |j                            dd                    }t          dd||z   dz
  |z  ||j        d         d          S t          dd g d          S # t(          $ r*}t          dd!t+          |          d          cY d }~S d }~ww xY w)"Nzmyprofile.view_areaFr   rD   r  r  r  r   r   &organization__organization_user__emailrL  rM  rJ   )area_name__icontains)area_address__icontainsr  r  location__loc_name__icontains) location__loc_address__icontainsro  r  rb   Trg   r   r4   r3   Area List Successfullyr
   r   r   zArea Not FoundrI   )r>  r?  rW   rL   rN   r   r   rM   rP   rU  r   r   r   r   r   AreaSerializerr   rK   r   rt   rT   rU   )rV   rW   rX   rY   r   rL   r  r  r  r   area_objr   r   r   r   r^   s                   r=   rl   zAreaCreateView.list  st   ''(9(9(;(;<<H	_<$D==!677 r5=o p pqqq*..y99G!.22=AAK%2667HIIO #/33HbAAL  H  r#??TX?YYbbcpqq  Y5<LTV W WXXX E+113399;;#??1L+Q+Q+Q+,|+T+T+T,U+,Q]+^+^+^,_ ,-\+R+R+R,S ,-\+Z+Z+Z	,[
 ,-P\+]+]+],^ - - .6Xm-D-D   O#??o?NN G#??+?FF 9#???88   W--h77#!/$!?!?!?J!%!<!<Z_!M!MJJ!/d!C!C!CJ"0GKOOK<<==4;S/4u}q/@U.J(-(2	(B!D !D E E E
  4:JRT U UVVV 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s1   2K B*K G K K 
L%L
L
Lc                    	 | j         j        }|                    d          st          ddd          S |j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            d	g           }	|r|r|st          dd
g d          S |rGt          j                            |||          	                                rt          ddg d          S t          j                            |	          	                                st          ddg d          S t          j                            |                                          }
|
st          ddg d          S t          j                            |                                          }|st          ddg d          S |	D ]D}|
j                            |          	                                st          ddg d          c S Et          j                            |
|||          }|j        dk    s||_        t          j                            t%          |	          t%          d          z  t%          d          z            }|j                            |           |j                            |           t-          |          }t/          |dd|i          }t          dd| d|j        d          S # t0          $ r*}t          ddt3          |          d          cY d }~S d }~ww xY w)Nzmyprofile.add_areaFr   rD   r(  r  	area_namearea_addressrY  rb  rJ   )r  r  rp  z%area already exists in this location.rG   rc  rb   r   Location not found.)r  r{  r  r  Trq   r   r   rW   rd  
Your Area r   rI   )rW   rL   rN   r   rK   rM   ru  rO   rP   r   r   r   rQ   rs  r   r_   r   rg  r   rv  rh  rS   r  r   rT   rU   )rV   rW   rX   rY   rL   r(  r  r  r  rY  r  r{  r   r~  rj  r   r  r^   s                     r=   r_   zAreaCreateView.create  s   =	_<$D==!566 r5=o p pqqq\%%h//F\%%h//F((55I"<++N;;L|''
B77H b by b5<U]_ ` `aaa  pT\00YV\pv0ww~~  A  A p5<ckm n nooo%,,H,==DDFF ^5=PY[ \ \]]] (/66&6AAGGIIL e5=V`b c cddd  '..&.99??AAH a5=R\^ _ _```# b b#5<<<HHOOQQ b#uAT]_$`$`aaaaab<&&+#%+	 '  D $d**"&&--a.B.B.B./].K.K.K/L./T.B.B.B/C D DE Nu%%%Nt$$$'--J25dIW^K_```OI	III!    
  	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_sM   2L+ BL+ AL+ AL+ AL+ &AL+ -AL+ 3C7L+ +
M5MMMN)r6   r7   r8   r   rm   ru  rO   rj   r   r  r   r  r2   r   rl   r_   r;   r<   r=   r  r    sk        )*|!!H%L3J_ J_ J_Z>_ >_ >_ >_ >_r<   r  c                   ^    e Zd ZegZej                                        Ze	Z
dZeZd Zd ZdS )AreaUpdateViewr  c                 4   	 | j         j        }|                    d          st          ddd          S | j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            d	          }	|j                            d
g           }
t          j        	                    |          
                                st          ddg d          S |r|st          ddg d          S t          j        	                    |
          
                                st          ddg d          S t          j        	                    |                                          }|st          ddg d          S t          j        	                    |                                          }|st          ddg d          S |
D ]D}|j        	                    |          
                                st          ddg d          c S Et          j                            |          }||_        ||_        ||_        |	|_        |j        dk    s||_        |                                 t.          j        	                    |          }|D ]T}|j                            |
                              d                              d          } |j        j        |  Ut          j        	                    t7          |
          t7          d          z  t7          d          z            }|j                            |           |j                            |           t?          |          }tA          |dd|i          }t          dd| d|j        d          S # tB          $ r*}t          ddtE          |          d          cY d }~S d }~ww xY w)Nzmyprofile.change_areaFr   rD   r  r(  r  r  r  rY  rb   zArea id not FoundrJ   rb  rG   rc  r   r  Tarea__idr   rq   r   rW   rd  r  rq  rI   )#rW   rL   rN   r   rY   rM   rK   ru  rO   rP   r   r   r   rQ   rs  r   r  r{  r  r  r   rr  rR   rw  rx  ru   r   r   rv  rh  rS   r  r   rT   rU   )rV   rW   rX   rY   rL   r  r(  r  r  r  rY  r  r{  r   r~  r  r  r  rj  r   r  r^   s                         r=   r  zAreaUpdateView.updateS  su   I	_<$D==!899 r5=o p pqqqkooi00G\%%h//F\%%h//F((55I"<++N;;L|''
B77H<&&G&44;;== \5<OWY Z Z[[[ b b5<U]_ ` `aaa %,,H,==DDFF ^5=PY[ \ \]]] (/66&6AAGGIIL e5=V`b c cddd  '..&.99??AAH a5=R\^ _ _```# b b#5<<<HHOOQQ b#uAT]_$`$`aaaaab<##w#//D ,D$DM&DN ,D$d**"&IIKKK #N11W1EEM' C C)/);)C)CX)C)V)V)^)^nr)^)s)s){){  LY){  *Z  *Z&)")+ABBB &--a.B.B.B./].K.K.K/L./T.B.B.B/C D DE Nu%%%Nt$$$'--J25dIW^K_```OI	III!    
  	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_sL   2O# C!O# O# .AO# 3AO# :AO# AO# FO# #
P-PPPc                    	 | j         j        }|                    d          st          ddd          S | j                            d          }|rZt          j                            |          	                                }|rt          ddg d	          S t          dd
g d	          S t          ddd          S # t          $ r*}t          ddt          |          d	          cY d }~S d }~ww xY w)Nzmyprofile.delete_areaFr   rD   r  rb   TzArea deleted successfully.,rJ   z$You have no Authority to delete AreazArea id is required.rI   )rW   rL   rN   r   rY   rM   ru  rO   rP   rd   rT   rU   )rV   rW   rX   rY   rL   r  r~  r^   s           r=   re   zAreaUpdateView.destroy  s*   	_<$D==!899 r5=o p pqqqkooi00G  U|**g*66==?? s#t?\df$g$ghhh#u@fnp$q$qrrr5<R S STTT 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_r  N)r6   r7   r8   r   rm   ru  rO   rj   r   r  r   r  r2   r   r  re   r;   r<   r=   r  r  L  sk        )*|!!H%L3J_ J_ J_Z_ _ _ _ _r<   r  c                   j    e Zd ZegZej                                        Ze	Z
eZej        gZdgZd ZdS )AreaGetViewr  c                    |                      |                                           }	 | j        j        }|j                            d          }|j                            d          }|st          ddg d          S |r)|                    |                              d          }|r)|                    |                              d          }|r)t          |d	
          }t          d	d|j
        d          S t          ddg d          S # t          $ r*}	t          ddt          |	          d          cY d }	~	S d }	~	ww xY w)Nr  r  FzYou can not access area listrJ   ro  rL  r  Trg   r  zNo Area Found.rI   )r>  r?  rW   rL   r   rM   r   rP   rU  r  rK   rT   rU   )
rV   rW   rX   rY   r   rL   r  r  r   r^   s
             r=   rl   zAreaGetView.list  s   ''(9(9(;(;<<	_<$D%2667HIIO!.22=AAK g5<Zbd e efff  g#??o?NNWWXeff _#??+?FFOOP]^^ Y+H$???
4;S[e[j k klll5<LTV W WXXX 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s+   AD >B D ?D 
EE;EEN)r6   r7   r8   r   rm   ru  rO   rj   r   r  r   r2   r   r/   r  r  r  rl   r;   r<   r=   r  r    sb        )*|!!H%3+,O MM_ _ _ _ _r<   r  c                   ^    e Zd ZegZej                                        Ze	Z
dZeZd Zd ZdS )CameraCreateView	camera_idc                 n   |                      |                                           }	 | j        j        }|                    d          st          ddd          S |j                            dd          }|j                            dd          }|j                            dd          }|j                            d	d          }	|j                            d
d          }
d }|r)|                    |          	                    d          }|st          ddg d          S |
r|

                                                                }
|                    t          |
          t          |
          z  t          |
          z  t          |
          z  t          |
          z            	                    d          }|	r|                    |	          }|r|                    |          }|r|                    |          }|r|                    |          }|                                r|                     |          }|,t          |d          }|                     |j                  }nt          |d          }|j        d         }t%          |j                            dd                    }t          dd||z   dz
  |z  ||j        d         d           S t          dd!g d          S # t(          $ r*}t          dd"t+          |          d          cY d }~S d }~ww xY w)#Nmyprofile.view_cameraFr   rD   camera_namer   r  r  r  r   r  rL  rM  rJ   )camera_name__icontainsr  )rtsp_url__icontainsr  area__area_name__icontainsro  r  r  )r  Trg   r   r4   r3   Camera List Successfullyr
   r   r   zCamera Not FoundrI   )r>  r?  rW   rL   rN   r   r   rM   rP   rU  r   r   r   r   r   CameraSerializerr   rK   r   rt   rT   rU   )rV   rW   rX   rY   r   rL   r  r  r  r  r   
camera_objr   r   r   r   r^   s                    r=   rl   zCameraCreateView.list  s   ''(9(9(;(;<<K	_<$D==!899 r5=o p pqqq!.22=DDK*..y<<G!.22=DDK%2667HLLO #/33HbAAL  J  m%__t_TT]]^kll
  Y5<LTV W WXXX I+113399;;'..q,/W/W/W/0/V/V/V0W/0|/T/T/T0U 01Q]/^/^/^0_ 01l/[/[/[	0\ 1 1
 2:-1H1H   S'../.RR
 K'..k.JJ
 C'..'.BB
 J'..[.II
  "" Y--j99#!1$D!A!A!AJ!%!<!<Z_!M!MJJ!1*$!G!G!GJ"0GKOOK<<==4;U/4u}q/@U.J(-(2	(B!D !D E E E
  4:LTV W WXXX 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s1   2L  CL  %GL  -L   
L4
L/)L4/L4c                 
   	 | j         j        }|                    d          st          ddd          S |j                            d          }|j                            d          }|j                            d          }|j                            d          }t          |j                            d	d
                    }	|j                            d          }
|j                            d          }|j                            d          }|j                            d          }|j                            dg           }|j                            dg           }|r|r|r|r|st          ddg d          S t          j        	                    |          
                                rt          ddg d          S |rHt          j        	                    ||||          
                                rt          ddg d          S t          j        	                    |          
                                st          ddg d          S t          j        	                    |                                          }|st          ddg d          S t          j        	                    |                                          }|st          ddg d          S t          j        	                    |                                          }|st          ddg d          S |D ]D}|j        	                    |          
                                st          ddg d          c S Et          j                            |||||	|
|||	  	        }|j        dk    s||_        t          j        	                    t)          |          t)          d           z  t)          d!          z            }|j                            |           |j                            |           |r|D ]I}t0          j        	                    |          
                                st          dd"g d          c S Jt2          j                            |#          }t0          j        	                    |          }|j                            |           t7          |          }t9          |dd$|i%          }t          dd&| d'|j        d          S # t:          $ r*}t          dd(t=          |          d          cY d }~S d }~ww xY w))Nzmyprofile.add_cameraFr   rD   r  r  r  r  fps   
ip_addressrtsp_urlframe_numbersportcamera_events_idsrY  rb  rJ   )r  zDuplicate RTSP not allowed.)r  r  r  rp  z#Camera already exists in this area.rG   rc  rb   r   r  Area not found.)	r  r{  r~  r  r  r  r  r  r  Trq   r   r   zInvalid Event IDs.)r  rW   rd  Your Camera r   rI   )rW   rL   rN   r   rK   rM   r   rw  rO   rP   r   r   r   rQ   rs  ru  r   r_   r   rg  r   rx  rh  rS   CameraEventLinkCameraEventToCameracamera_eventsr  r   rT   rU   )rV   rW   rX   rY   rL   organizaion_idr  r  r  r  r  r  r  r  r  rY  r  r{  r~  r   r  rj  event_idlink_camera_with_eventscamera_events_objsr   r  r^   s                               r=   r_   zCameraCreateView.create8  s   [	_<$D==!788 r5=o p pqqq$\--.?@@N!,**=99Kl&&y11G!,**=99Kgl&&uR0011C )),77J|''
33H#L,,_==M<##F,,D ' 0 01Db I I|''
B77H! b bG b; b^f b5<U]_ ` `aaa~$$$99@@BB f5<Yac d deee  nv~44;Zaq|  Q_4   `   `   g   g   i   i n5<aik l lmmm%,,H,==DDFF ^5=PY[ \ \]]] (/66.6IIOOQQL e5=V`b c cddd  '..+.>>DDFFH a5=R\^ _ _``` <&&'&2288::D ]5=NXZ [ [\\\# b b#5<<<HHOOQQ b#uAT]_$`$`aaaaab^**+#)'# - + 
 
F $d**$(!&--a.B.B.B./].K.K.K/L./T.B.B.B/C D DE ""5)))""4(((  N 1 g gH&.5585DDKKMM g'5EYbd(e(efffffg*A*I*P*P# +Q + +' &1%8%?%?IZ%?%[%["'599:LMMM)&11J25dIW^K_```OM+MMM!    
  	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_sb   2T E
T  AT A	T AT AT AT "AT )AT /D
T :BT 
UU=UUN)r6   r7   r8   r   rm   rw  rO   rj   r   r  r   r  r2   r   rl   r_   r;   r<   r=   r  r    sp        )*~!!##H'L3M_ M_ M_`\_ \_ \_ \_ \_r<   r  c                   ^    e Zd ZegZej                                        Ze	Z
dZeZd Zd ZdS )CameraUpdataeViewr  c                 F	   	 | j         j        }|                    d          st          ddd          S | j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            d	          }	t          |j                            d
d                    }
|j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            dg           }t          j	        
                    |                                          st          ddg d          S |r|r|r|	r|st          ddg d          S t          j	        
                    |                                          st          ddg d          S t          j	        
                    |                                          }|st          ddg d          S t          j	        
                    |                                          }|st          ddg d          S t           j	        
                    |                                          }|st          ddg d          S |D ]D}|j        
                    |                                          st          ddg d          c S Et          j	                            |          }||_        ||_        ||_        |	|_        |
|_        ||_        ||_        ||_        ||_        |j        dk    s||_        |                                 t          j	        
                    t=          |          t=          d          z  t=          d          z            }|j                             |           |j        !                    |           tE          |          }tG          |dd|i          }t          dd |	 d!|j        d          S # tH          $ r*}t          dd"tK          |          d          cY d }~S d }~ww xY w)#Nmyprofile.change_cameraFr   rD   r  r  r  r  r  r  r  r  r  r  r  rY  rb   Camera id not FoundrJ   rb  rG   rc  r   r  r  Trq   r   r   rW   rd  r  rq  rI   )&rW   rL   rN   r   rY   rM   rK   r   rw  rO   rP   r   r   r   rQ   rs  ru  r   r  r{  r~  r  r  r  r  r  r  r   rr  rR   r   rx  rh  rS   r  r   rT   rU   )rV   rW   rX   rY   rL   r  r  r  r  r  r  r  r  r  r  rY  r  r{  r~  r   r  rj  r   r  r^   s                            r=   r  zCameraUpdataeView.update  s   R	_<$D==!:;; r5=o p pqqq44I$\--.?@@N!,**=99Kl&&y11G!,**=99Kgl&&uR0011C )),77J|''
33H#L,,_==M<##F++D|''
B77H>((i(88??AA ^5<QY[ \ \]]]! b bG b; b^f b5<U]_ ` `aaa %,,H,==DDFF ^5=PY[ \ \]]] (/66.6IIOOQQL e5=V`b c cddd  '..+.>>DDFFH a5=R\^ _ _``` <&&'&2288::D ]5=NXZ [ [\\\# b b#5<<<HHOOQQ b#uAT]_$`$`aaaaab^''9'55F".F&FOFK!,FFJ *F&FO#0F FK$d**$(!KKMMM&--a.B.B.B./].K.K.K/L./T.B.B.B/C D DE ""5)))""4((()&11J25dIW^K_```OM+MMM!    
  	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_sS   2Q, E1Q, 'Q, AQ, 	AQ, AQ, AQ, AQ, $EQ, ,
R 6RR R c                    	 | j         j        }|                    d          st          ddd          S | j                            d          }|rZt          j                            |          	                                }|rt          ddg d	          S t          dd
g d	          S t          ddg d	          S # t          $ r*}t          ddt          |          d	          cY d }~S d }~ww xY w)Nzmyprofile.delete_cameraFr   rD   r  rb   TzCamera deleted successfully.,rJ   z&You have no Authority to delete CamerazCamera id is required.rI   )rW   rL   rN   r   rY   rM   rw  rO   rP   rd   rT   rU   )rV   rW   rX   rY   rL   r  r  r^   s           r=   re   zCameraUpdataeView.destroy  s-   	_<$D==!:;; r5=o p pqqq44I  a..).<<CCEE u#t?^fh$i$ijjj#u@hpr$s$sttt5<T\^ _ _``` 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s/   2B> A"B> B> +B> >
C2C-'C2-C2N)r6   r7   r8   r   rm   rw  rO   rj   r   r  r   r  r2   r   r  re   r;   r<   r=   r  r    sk        )*~!!##H'L3S_ S_ S_j_ _ _ _ _r<   r  c                   j    e Zd ZegZej                                        Ze	Z
eZej        gZdgZd ZdS )CameraGetViewr  c                    |                      |                                           }	 | j        j        }|j                            d          }|j                            d          }|j                            d          }|st          ddg d          S |st          ddg d          S t          j        	                    |          
                                st          dd	g d          S |st          dd
g d          S t          j        	                    ||          
                                st          ddg d          S |st          ddg d          S t          j        	                    |||          
                                st          ddg d          S |	                    |                              d          }|	                    |          }	|r|		                    |          }	|r|		                    |          }	|	st          ddg d          S t          |	d          }
t          dd|
j        d          S # t           $ r*}t          ddt#          |          d          cY d }~S d }~ww xY w)Nr  r  r  FzYou can not access camera listrJ   r  rb   r  zLocation id is required)rc   rp  Invalid location idzArea id is required)rc   r  rp  Invalid area idro  rL  r  r  zCamera not foundTrg   r  rI   )r>  r?  rW   rL   r   rM   r   r   rO   rP   r   rs  ru  rU  r  rK   rT   rU   )rV   rW   rX   rY   r   rL   r  r  r  r  r   r^   s               r=   rl   zCameraGetView.list  s   ''(9(9(;(;<<,	_<$D%2667HIIO!.22=AAK*..y99G i5<\df g ghhh" f5<Yac d deee'..O.DDKKMM b5<U]_ ` `aaa b5<U]_ ` `aaa#***__ffhh ^5<QY[ \ \]]] ^5<QY[ \ \]]]<&&G;bq&rryy{{ Z5<MUW X XYYY  /JJSSTabbH
 ___HHF CkBB ;':: [5<NVX Y YZZZ)&d;;;J5!    
  	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_sR   A.I I -AI 2I AI I "AI )BI -(I 
J
 J?J
J
N)r6   r7   r8   r   rm   rw  rO   rj   r   r  r   r2   r   r/   r  r  r  rl   r;   r<   r=   r  r    sb        )*~!!##H'3+,O"OM._ ._ ._ ._ ._r<   r  c                   P    e Zd ZegZej                                        Ze	Z
d ZdS )CameraListWithoutPaginationViewc                    	 | j         j        }|                    d          st          ddd          S t          j                                                            d          }|                     |d          }t          dd|j	        d	          S # t          $ r*}t          dd
t          |          d	          cY d }~S d }~ww xY w)Nr  Fr   rD   rL  Trg   r  rJ   rI   )rW   rL   rN   r   rw  rO   rj   rU  r   rK   rT   rU   )rV   rW   rX   rY   rL   r   r   r^   s           r=   rl   z$CameraListWithoutPaginationView.listL  s    	_<$D==!899 r5=o p pqqq ~))++44]CCH ..xd.CCJ5!    
  	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s#   2B AB 
C	C>C	C	N)r6   r7   r8   r   rm   rw  rO   rj   r   %CameraListWithoutPaginationSerializerr   rl   r;   r<   r=   r  r  G  sJ        )*~!!##H<_ _ _ _ _r<   r  c                   X    e Zd ZegZej                                        Ze	Z
dZeZd ZdS )CameraEnableDisableViewr  c                 J   	 | j         j        }|                    d          st          ddd          S | j                            d          }	 t          j                            |          }n#  t          ddg d          cY S xY w|j        r.d|_        |	                                 t          d	d
g d          S d	|_        |	                                 t          d	dg d          S # t          $ r*}t          ddt          |          d          cY d }~S d }~ww xY w)Nr  Fr   rD   r  rb   r  rJ   TzCamera Disabled SuccessfullyzCamera Enabled SuccessfullyrI   )rW   rL   rN   r   rY   rM   rw  rO   
is_enabledrR   rT   rU   )rV   rW   rX   rY   rL   r  r^   s          r=   r  zCameraEnableDisableView.updateh  sa   	_<$D==!:;; r5=o p pqqq44I^"N..I.>>		^5<QY[ \ \]]]]]# e',	$   4;Yac d deee'+	$   4;X`b c cddd 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_sF   2C. C.  A1 0C. 1BC. 7C.  -C. .
D"8DD"D"N)r6   r7   r8   r   rm   rw  rO   rj   r   r  r   r  r2   r   r  r;   r<   r=   r  r  a  sU        )*~!!##H'L3_ _ _ _ _r<   r  c                   T    e Zd ZegZej                                        Ze	Z
eZd ZdS )EventGetListViewc                    |                      |                                           }	 | j        j        }|j                            d          }|j                            d          }| j                            d          }|                    |          }	|	st          ddg d          S |r|	                    |          }	|r|	                    |	          }	|r|	                    |
          }	|	                    d          	                    d          }
t          |
d          }t          dd|j        d          S # t          $ r*}t          ddt          |          d          cY d }~S d }~ww xY w)Nr  r  r  r  FrM  rJ   r  r  
camera__idTr  rL  rg   zCamera Event ListrI   )r>  r?  rW   rL   r   rM   rY   rP   r   rU  CameraEventSerializerrK   rT   rU   )rV   rW   rX   rY   r   rL   r  r  r  camera_event_obj
event_listr   r^   s                r=   rl   zEventGetListView.list  s   ''(9(9(;(;<<	b<$D!.22=AAK*..y99G44I  (QUVV $ \5=MWY Z Z[[[ W#3#:#:+#:#V#V  O#3#:#:g#:#N#N  S#3#:#:	#:#R#R )00D0AAJJ=YYJ.zEEEJt8KU_Udeefff 	b 	b 	bu9OY\]^Y_Y_``aaaaaaaa	bs%   BE .BE 
E<E71E<7E<N)r6   r7   r8   r   rm   r  rO   rj   r   r
  r   r2   r   rl   r;   r<   r=   r  r  ~  sQ        )*"&&((H,3b b b b br<   r  )transactionc                   ^    e Zd ZegZeZej        	                                Z
dZeZd Zd ZdS )CameraEventCreateViewcamera_event_idc                 n   |                      |                                           }	 | j        j        }|                    d          st          ddd          S |j                            d          }|j                            d          }|j                            d          }|j                            d          }	|j                            d	d
          }
d }|                    |          	                    d          }|st          ddg d          S |
r|

                                                                }
|                    t          |
          t          |
          z  t          |
          z  t          |
          z  t          |
          z            	                    d          }|r|                    |          }|r|                    |          }|r|                    |          }|	r|                    |	          }|                                r|                     |          }|/t          |dd|i          }|                     |j                  }nt          |dd|i          }|j        d         }t%          |j                            dd                    }t          dd||z   dz
  |z  ||j        d          d!          S t          dd"g d          S # t(          $ r*}t          dd#t+          |          d          cY d }~S d }~ww xY w)$Nzmyprofile.view_cameraeventFr   rD   r  r  r  r  r   r   r  rL  rM  rJ   )camera_event__icontainsr  camera__camera_name__icontainsr  r  )camera__area__location__id)camera__area__idr  rb   TrW   rd  r   r4   r3   Camera Event List Successfullyr
   r   r   zCamera Event Not FoundrI   )r>  r?  rW   rL   rN   r   r   rM   rP   rU  r   r   r   r   r   r
  r   rK   r   rt   rT   rU   )rV   rW   rX   rY   r   rL   r  r  r  r  r   r  r   r   r   r   r^   s                    r=   rl   zCameraEventCreateView.list  s   ''(9(9(;(;<<9	c<$D==!=>> r5=o p pqqq!.22=AAK*..y99G,00==I%2667HIIO"/33HbAAL#  (X\]]ffgtuu $ Y5<LTV W WXXX I+113399;;#3#:#:1Wc;d;d;d/0/V/V/V<W/0R^/_/_/_<` 01Q]/^/^/^<_ 01l/[/[/[	<\ $1 $1
 2:-1H1H !  e#3#:#:Xc#:#d#d  W#3#:#:g#:#V#V  S#3#:#:	#:#R#R  Q#3#:#:#:#P#P &&(( _--.>??#!6tPY[bOc!d!d!dJ!%!<!<Z_!M!MJJ!67GT\egn[o!p!p!pJ"0GKOOK<<==4;[/4u}q/@U.J(-(2	(B!D !D E E E
  4:RZ\ ] ]^^^ 	c 	c 	c5<RZ]^_Z`Z` a abbbbbbbb	cs1   2L  CL  GL  -L   
L4
L/)L4/L4c                    	 | j         j        }|                    d          st          ddd          S |j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            d	          }	t          j                            |
          	                                st          ddg d          S t          j                            ||          	                                st          ddg d          S t          j                            ||          	                                st          ddg d          S t          j                            |||          	                                st          ddg d          S t          j                            |          	                                rt          ddg d          S t          j                    5  t          j                            |||||	          }
|j        dk    s||
_        d d d            n# 1 swxY w Y   t'          |
          }t          dd|j        d          S # t(          $ r*}t          ddt+          |          d          cY d }~S d }~ww xY w)Nzmyprofile.add_cameraeventFr   rD   r  r  r  r  
event_namerb   Invalid organizationrJ   rc   r  Invalid camera idr  rc   r  r  r  )r  z+Camera Event already exists for this camera)r  r  r  r  camera_eventTz"Camera Events Created SuccessfullyrI   )rW   rL   rN   r   rK   rM   r   rO   rP   r   rw  rs  ru  r  r  atomicr_   r   rg  r
  rT   rU   )rV   rW   rX   rY   rL   r  r  r  r  r  r  r   r^   s                r=   r_   zCameraEventCreateView.create	  s.   -	b<$D==!<== r5=o p pqqq%l../@AAO((55I!,**=99Kl&&y11G )),77J
  '../.BBIIKK b5=S]_ ` `aaa>((I(WW^^`` _5=PZ\ ] ]^^^#**k?*[[bbdd a5=R\^ _ _```<&&'{\k&llssuu ]5=NXZ [ [\\\ "))I)>>EEGG y5=jtv w wxxx #%% 
3 
3*299$3' +#",  :     ($...2L+
3 
3 
3 
3 
3 
3 
3 
3 
3 
3 
3 
3 
3 
3 
3 /|<<Jt8\fpfuvvwww 	b 	b 	bu9OY\]^Y_Y_``aaaaaaaa	bsi   2J CJ <AJ AJ AJ AJ J '7I*J *I..J 1I.2)J 
K&KKKN)r6   r7   r8   r   rm   r
  r   r  rO   rj   r   r  r2   r   rl   r_   r;   r<   r=   r  r    si        )*,"&&((H$L3<c <c <cN.b .b .b .b .br<   r  c                   ^    e Zd ZegZeZej        	                                Z
dZeZd Zd ZdS )CameraEventGetViewr  c                    |j         }| j        d         }|                    d          st          ddd          S 	 t          j                            |          }n(# t          j        $ r t          ddg d          cY S w xY w|j        r-d|_        |	                                 t          d	d
d          S d	|_        |	                                 t          d	dd          S )Nr  myprofile.change_cameraeventFr   rD   rb   Camera Event not found.rJ   TzCamera Disabled.zCamera Enabled.)
rL   rY   rN   r   r  rO   rM   r   r  rR   )rV   rW   rX   rY   rL   r  r  s          r=   r  zCameraEventGetView.updateN	  s   |+&78}};<< 	nu9kllmmm	a&.22o2FFLL' 	a 	a 	au9R\^__`````	a " 	M&+L#t8KLLMMM&*L#t8JKKLLLs    A "BBc                    	 | j         j        }|                    d          st          ddd          S | j        d         }	 t
          j                            |          }n(# t
          j        $ r t          ddg d          cY S w xY w|	                                 t          d	d
d          S # t          $ r*}t          ddt          |          d          cY d }~S d }~ww xY w)Nzmyprofile.delete_cameraeventFr   rD   r  rb   r$  rJ   Tz"Camera Event deleted successfully.rI   )rW   rL   rN   r   rY   r  rO   rM   r   rd   rT   rU   )rV   rW   rX   rY   rL   r  r  r^   s           r=   re   zCameraEventGetView.destroyc	  s/   	b<$D==!?@@ r5=o p pqqq"k*;<Oe*266/6JJ+ e e e5=V`b c cddddde !!!t8]^^___ 	b 	b 	bu9OY\]^Y_Y_``aaaaaaaa	bsF   2B2 B2  A$ #B2 $"B	B2 B		(B2 2
C&<C!C&!C&N)r6   r7   r8   r   rm   r
  r   r  rO   rj   r   r  r2   r   r  re   r;   r<   r=   r!  r!  G	  sh        )*,"&&((H$L3M M M*b b b b br<   r!  )get_object_or_404c                   T    e Zd ZegZeZej        	                                Z
dZd ZdS )CameraEventnameUpdateViewr  c                    	 | j         j        }|                    d          st          ddd          S | j        d         }|j                            d          }|j                            d          }|j                            d          }|j                            d	          }	|j                            d
          }
|st          ddg d          S |r|r|r	|	rt          st          ddg d          S t          j	        
                    |                                          st          ddg d          S t          j	        
                    ||                                          st          ddg d          S t          j	        
                    ||                                          st          ddg d          S t          j	        
                    |	||                                          st          ddg d          S t          j	                            |          }|st          ddg d          S ||_        ||_        ||_        |	|_        |
|_        |j        dk    s||_        |                                 t1          |          }t          dd|j        d          S # t2          $ r*}t          ddt5          |          d          cY d }~S d }~ww xY w)Nr#  Fr   rD   r  r  r  r  r  r  z1You do not have permission to update Camera EventrJ   rb  rb   r  r  r  r  r  r  r$  Tz"Camera Event updated successfully.rI   )rW   rL   rN   r   rY   rK   rM   event_namesr   rO   rP   r   rw  rs  ru  r  r  r  r  r  r  r   rr  rR   r
  rT   rU   )rV   rW   rX   rY   rL   r  r  r  r  r  r  camera_event_instancer   r^   s                 r=   r  z CameraEventnameUpdateView.update|	  sE   1	b<$D==!?@@ r5=o p pqqq"k*;<O%l../@AAO((55I!,**=99Kl&&y11G )),77J 5=pz| } }~~~" e) e; eg e]h e5=V`b c cddd
  '../.BBIIKK b5=S]_ ` `aaa>((I(WW^^`` _5=PZ\ ] ]^^^#**k?*[[bbdd a5=R\^ _ _```<&&'{\k&llssuu ]5=NXZ [ [\\\$/$7$;$;$;$O$O!( e5=V`b c cddd4C!1.7!+0;!-,3!)1;!.$d**37%0!&&(((./DEEJt8\fpfuvvwww 	b 	b 	bu9OY\]^Y_Y_``aaaaaaaa	bsR   2J8 B#J8 !J8 ;AJ8  AJ8 AJ8 AJ8 4J8 A/J8 8
K,K'!K,'K,N)r6   r7   r8   r   rm   r
  r   r  rO   rj   r   r  r  r;   r<   r=   r(  r(  v	  sP        )*,"&&((H$L2b 2b 2b 2b 2br<   r(  c                       e Zd Zd ZdS )WhatsappMessageViewc                 6   d}d}d}d|dddid}d	| d
d}t          j        |||          }	|	j        dk    r t          d           t          |d           n-t          d|	j         d           t          |	j        d           t          dddd          S )NEAAXuFyLeNOkBO68lPeKw8JZAQnZBcCZA7bFO6sJEu0vrHYHgG2g2XBwSd236kCBoAHc4RaUphJnjSRPjesod7MSlJBcZAOAuv2LK2FWwNoflB9Pt28fBHGaNSIZBZCpDZBfWUW0s2gBRYBzOP6sO2fkb0VOg0rb8h1PZCLoF9nTHd2I54Wja2jm7SkB8qiVsk2M6jFIZCtwtFX93vcZAvzH3YZD9172279933449https://graph.facebook.com/v17.0/109829165504454/messageswhatsapptextbodyhiiimessaging_productr   typer3  Bearer application/jsonAuthorizationzContent-Typejsonheadersr   z/Message sent successfully.=====================z*******************%Failed to send message. Status code: z-=-=-=-=-=-==-=--=-=-=-=z###################TMessage sent successfully.rD   r   )requestspoststatus_codeprintr3  r   )
rV   rW   rX   rY   r,  recipient_numberurlmessage_datar?  responses
             r=   r_   zWhatsappMessageView.create	  s     v)I ","	  6|55.
 

 =\7KKK3&&CDDD,45555P(:NPPQklll(- 566643OPPZ]^^^^r<   Nr8  r;   r<   r=   r-  r-  	  s(        _ _ _ _ _r<   r-  	myprofilezredis://localhost:6379/0)brokerbackendc                       e Zd Zd Zd ZdS )SendWhatsAppAlertc                    t          dddd          }t          d          t          d          z  t          d          z  t          d	          t          d
          z  z  }||z  }t          j                            |          }d}|D ]Y}t	          d           |d|j         dz  }|d|j         dz  }|d|j         dz  }|d|j         dz  }t	          |d           Z|rLd}| 	                    ||          }|j
        dk    rt          ddi          S t          ddi|j
                  S t          ddi          S )NTr
      )r  r  camera_incharge_idis_event_detected   )camera_events_id	   r3      )camera_events__is_enabledzTriggered_alerts:
z%=====================================zAlert: 
zCamera: zEvent: zCamera Incharge: r0  r   rE   z!WhatsApp alert sent successfully.zFailed to send WhatsApp alert.r   zNo alerts triggered.)r   AlertrO   rP   rE  alert_messager  r  camera_inchargesend_whatsapp_messagerD  r   )	rV   rW   alert_conditionsevent_conditionsmatching_alertsrE   alertrF  rI  s	            r=   r_   zSendWhatsAppAlert.create	  s   aeijjj333a16M6M6MMPQegPhPhPhhkl  AC  lD  lD  lD  GH  ei  Gj  Gj  Gj  lj  j,,-../?@@'$ 	C 	CE9:::8!48888G2%,2222G8!48888GD5+@DDDDG'ABBBB 	A- 112BGLLH#s**,O PQQQ,L MX`XlmmmmY(>?@@@r<   c                     d}d}d}d|dd|id}d| d	d
}t          j        |||          }|j        dk    rt          d           nt          d|j                    |S )Nr/  r0  r1  r2  r3  r4  r6  r9  r:  r;  r=  r   rA  r@  )rB  rC  rD  rE  )rV   rF  rE   r,  rG  rH  r?  rI  s           r=   r\  z'SendWhatsAppAlert.send_whatsapp_message	  s     v)I ","	
 
 6|55.
 

 =<III3&&.////P(:NPPQQQr<   N)r6   r7   r8   r_   r\  r;   r<   r=   rN  rN  	  s6        A A AB    r<   rN  c                   p    e Zd ZegZeZeZe	j
                                        Zej        gZdgZd Zd ZdS )RoiCreateViewroi_namec           	         	 | j         j        }|                    d          st          ddd          S |j                            d          }|j                            dg           }|j                            d          }|j                            dg           }|j                            d	          }	|j                            d
          }
|j                            d          }|j                            d          }|j                            d          }|j                            d          }|r|st          ddd          S t          j                            |          	                                }|st          ddd          S |D ]I}t          j                            |                                          st          ddg d          c S Jt          j                            |          }|st          ddg d          S t          j                            |||	|
d|i||          }|j        dk    s||_        |j                            |           |                                 t'          |          }t          dd| d|j        d          S # t(          $ r*}t          ddt+          |          d          cY d }~S d }~ww xY w)Nzmyprofile.add_roiFr   rD   r  camera_event_idsrd  coordinatesframe_numbercolor
start_timeend_timepriorityspecific_analyticszRequired fields are missing.rb   zCamera Not Found.Invalid Camera Event ids.rJ   rG   rc  )r  rd  rh  ri  rg  rl  rm  Tz
Your ROI 'z' created successfully.rI   )rW   rL   rN   r   rK   rM   rw  rO   rP   rQ   r  r   Roir_   r   rg  r  rh  rR   RoiSerializerrT   rU   )rV   rW   rX   rY   rL   r  rT  rd  rg  rh  ri  rj  rk  rl  rm  r  r  camera_events_objroi_objr   r^   s                        r=   r_   zRoiCreateView.create#
  s3   o	b<$D==!455 r5=o p pqqq((55I&|//0B2FF|''
33H!,**=<<K"<++N;;LL$$W--E )),77J|''
33H|''
33H!(!1!12F!G!G ^$4 ^5=[ \ \]]]..I.>>DDFFJ S5=P Q QRRR, m m&.5585DDKKMM m'5E`hj(k(klllllm + 3 : :DT : U U$ ^5=PY[ \ \]]] k((##+,[9#%7 )  G $d**%)" !%%&7888LLNNN&w//JIIII!    n  	b 	b 	bu9OY\]^Y_Y_``aaaaaaaa	bs>   2J+ DJ+ AJ+ A
J+ "5J+ BJ+ +
K5KKKc                 X   |                                  }	 | j        j        }|                    d          st	          ddd          S |j                            d          }|j                            d          }|j                            dd          }|st	          dd	g d
          S |                                                    d          }|r|	                    |          }|r|	                    |          }|r|
                                                                }|	                    t          |          t          |          z  t          |          z                                d                                          }|                                r|                     |          }	|	/t!          |	dd|i          }
|                     |
j                  }
nt!          |dd|i          }
|
j        d         }t'          |j                            dd                    }t	          dd||z   dz
  |z  ||
j        d         d          S t	          ddg d
          S # t*          $ r*}t	          ddt-          |          d
          cY d }~S d }~ww xY w)Nzmyprofile.view_roiFr   rD   r  r  r   r   You can not access roi listrJ   z-idr  camera_events__id)roi_name__icontainsr  &camera_events__camera_event__icontainsrL  TrW   rd  r   r4   r3   zRoi List Successfullyr
   r   r   zRoi Not FoundrI   )r?  rW   rL   rN   r   r   rM   rj   rU  rP   r   r   r   distinctr   r   rp  r   rK   r   rt   rT   rU   )rV   rW   rX   rY   r   rL   r  r  r   r   r   r   r   r^   s                 r=   rl   zRoiCreateView.list
  s   $$&&.	b<$D==!566 r5=o p pqqq,00==I%2667HIIO"/33HbAAL i5=Zdf g ghhh  ||~~..u55H  C#??	?BB P#???OO P+113399;;#??1<+P+P+P+,l+[+[+[,\+,Vb+c+c+c,d - - .6Xm-D-DXXZZ 
    [--h77#!.t$T[H\!]!]!]J!%!<!<Z_!M!MJJ!.xdYX_L`!a!a!aJ"0GKOOK<<==4<S/4u}q/@U.J).(2	(B!D !D E E E  5_VX Y YZZZ 	b 	b 	bu9OY\]^Y_Y_``aaaaaaaa	bs1   2I5 	A#I5 -F4I5 "I5 5
J)?J$J)$J)N)r6   r7   r8   r   rm   rp  r   r2   r   ro  rO   rj   r   r/   r  r  r  r_   rl   r;   r<   r=   rc  rc  
  sv        )*$3{  H+,OLMpb pb pbd2b 2b 2b 2b 2br<   rc  c                   d    e Zd ZegZej                                        Ze	Z
dZeZd Zd Zd ZdS )
RoigetViewroi_idc                    	 | j         j        }| j                            d          }t          j                            |                                          }|r,t          |d|i          }t          d|j
        dd          S t          d	d
g d          S # t          $ r*}t          d	dt          |          d          cY d }~S d }~ww xY w)Nr}  rb   rW   r   Tri   r   r   FzRoi not foundrJ   rI   )rW   rL   rY   rM   ro  rO   rP   rQ   rp  r   rK   rT   rU   )	rV   rW   rX   rY   rL   r}  rr  r   r^   s	            r=   rl   zRoigetView.list
  s    
	_<$D[__X..Fk((f(55;;==G Z*7Iw;OPPP
4z G GQTUUUU5OUW X XYYY 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s$   BB B 
C%C
C
Cc                    	 | j         j        }| j                            d          }|j                            d          }|j                            d          }|j                            d          }|j                            d          }	|j                            d          }
|j                            d          }|j                            d          }|j                            d	          }|j                            d
          }|j                            dg           }|                    d          st          ddg d          S |r|r|r|st          ddg d          S t          j        	                    |          
                                }t          j        	                    |          
                                }|D ]I}t          j        	                    |                                          st          ddg d          c S Jt          j        	                    |          }|st          ddg d          S |r||_        ||_        d|i|_        |	|_        ||_        ||_        ||_        |j        dk    s||_        |                                 |j                            |           t5          |          }t          dd| d|j        dd          S t          ddg d          S # t6          $ r*}t          ddt9          |          d          cY d }~S d }~ww xY w)Nr}  rd  rh  rg  ri  rj  rk  rl  rm  r  rf  zmyprofile.change_roiFz You have no access to update RoirJ   rb  rb   rn  rG   rc  TzRoi rq  r   r   z&Invalid Roi ID or unauthorized access.rI   )rW   rL   rY   rM   rK   rN   r   ro  rO   rP   rQ   rw  r  r   rd  rh  rg  ri  rl  rm  r  r   rr  rR   r  rh  rp  rT   rU   )rV   rW   rX   rY   rL   r}  rd  rh  rg  ri  rj  rk  rl  rm  r  rf  roi_instancer  r  rq  r   r^   s                         r=   r  zRoigetView.update
  s   B	b<$D[__X..F|''
33H"<++N;;L
 ",**=99KL$$W--E )),77J|''
33H|''
33H!(!1!12F!G!G((55I&|//0BBGG==!788 n5=_ik l lmmm e e eBR e5=V`b c cddd ;---88>>@@L^**	*::@@BBF, m m&.5585DDKKMM m'5E`hj(k(klllllm + 3 : :DT : U U$ ^5=PY[ \ \]]]  t(0%,8),9++F(%*"(0%2D/&,#($...2L+ !!### *../@AAA*<88
4<c8<c<c<cmwm| } }  GJ  K  K  K  K5=eoq r rsss 	b 	b 	bu9OY\]^Y_Y_``aaaaaaaa	bs>   EL
 L
 0B.L
 5L
 B!L
 7L
 

L>L93L>9L>c                 x   	 | j         j        }| j                            d          }t          j                            |                                          }|rt          ddd          S t          ddg dd	
          S # t          $ r,}t          ddt          |          dd	
          cY d }~S d }~ww xY w)Nr}  rb   TzRoi deleted successfully.rD   FzFailed to delete roi.rJ   r   r   rI   )rW   rL   rY   rM   ro  rO   rP   rd   r   rT   rU   )rV   rW   rX   rY   rL   r}  rr  r^   s           r=   re   zRoigetView.destroy%  s    		j<$D[__X..Fk((f(55<<>>G l4;W X XYYY5<T\^ _ _gjkkkk 	j 	j 	ju8NVYZ[V\V\]]ehiiiiiiiii	js$   A+B .B 
B9!B4.B94B9N)r6   r7   r8   r   rm   ro  rO   rj   r   rp  r   r  r2   r   rl   r  re   r;   r<   r=   r|  r|  
  s{        )*{  H$L3_ _ _Cb Cb CbJ
j 
j 
j 
j 
jr<   r|  c                       e Zd Zd ZdS )ReportGenerationViewc                    t           j                                        }t          j                                        }t          j                                        }t
          j                                        }t          |d          j        }t          |d          j        }	t          |d          j        }
t          |d          j        }|||	|
d}t          |          S )NTrg   )organizations	locationsareascameras)r   rO   rj   rs  ru  rw  r  rK   r  r  rV  r   )rV   rW   rX   rY   r  r  r  r  location_data	area_datacamera_dataorganization_datareport_datas                r=   rl   zReportGenerationView.list3  s    $,0022$((**	  "".$$&&*94@@@E"5t4449	&wT:::?2=tLLLQ /&"	
 
 $$$r<   Nr6   r7   r8   rl   r;   r<   r=   r  r  2  s#        % % % % %r<   r  c                       e Zd Zd ZdS )EventDetectionAPIViewc                 *   |j                             d          }|gt          dd                    |                     |j                             d          rt	          dd| di          S t	          dd| di          S t	          d	d
i          S )Nr  detect_eventsz--camera_id={}is_asyncrE   z#Event detection started for camera .z%Event detection completed for camera r   z*Camera ID is required in the request data.)rK   rM   r   formatr   )rV   rW   r  s      r=   rC  zEventDetectionAPIView.postH  s    L$$[11	 *:*A*A)*L*LMMM|
++ c,^R[,^,^,^ _```,`T],`,`,` abbbW&RSTTTr<   Nr6   r7   r8   rC  r;   r<   r=   r  r  G  s(        U U U U Ur<   r  c                       e Zd ZegZd ZdS )%Alert_event_camera_location_CountViewc                 J   	 | j         j        }|st          ddg d          S |j                            dd           }|rt
          j                            |d                                          }t          j                            |d                                          }t          j                            |                                          }t          j                            |                                          }	nt
          j                            |d                                          }t          j                            |d                                          }t          j                            |	                                          }t          j                            |	                                          }	||||	d
}
t          d|
d          S # t          $ r*}t          ddt          |          d          cY d }~S d }~ww xY w)NFrt  rJ   r  Trp  r  ro  r  r  r  alert_countevent_countcamera_countlocation_countri   rI   )rW   rL   r   r   rM   rY  rO   rP   r   r  rw  rs  rT   rU   )rV   rW   rX   rY   rL   r  r  r  r  r  rK   r^   s               r=   rl   z*Alert_event_camera_location_CountView.listl  s   	_<$D i5=Zdf g ghhh%2667H$OOO 	i#m22O`d2eekkmm)188Ohl8mmssuu%~444XX^^``!)!1!8!8O!8!\!\!b!b!d!d#m22UYfj2kkqqss)188[_lp8qqwwyy%~44W[4\\bbdd!)!1!8!8[_!8!`!`!f!f!h!h  +* ,"0	 D tT::;;; 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s#    G. G
G. .
H"8HH"H"Nrz   r;   r<   r=   r  r  i  s1        )*_ _ _ _ _r<   r  c                       e Zd ZegZd ZdS )UndetectedEventCountViewc                    t           j                                        }t           j                            t	          d                                                    }t           j                            t	          d                                                    }t           j                            t	          d                                                    }t           j                            t	          d                                                    }t           j                            t	          d                                                    }	||||||	d}
t          d|
d	          S )
N
Helmet: noalert_message__icontainsGlasses: no
Gloves: no	Shoes: no
Jacket: no)	all_counthelmet_countglasses_countgloves_countshoes_countjacket_countTri   )rY  rO   r   rP   r   r   )rV   rW   rX   rY   r  r  r  r  r  r  rK   s              r=   rl   zUndetectedEventCountView.list  s'   M''))	}++A|,T,T,TUU[[]],,Q-V-V-VWW]]__}++A|,T,T,TUU[[]]m**1k+R+R+RSSYY[[}++A|,T,T,TUU[[]]"(*(&(
 
 466777r<   Nrz   r;   r<   r=   r  r    s,        )*8 8 8 8 8r<   r  c                   L    e Zd ZegZej                                        Zd Z	dS ) UndetectedEventDateWiseCountViewc                 `   |                      |                                           }	 | j        j        }| j        j                            dd           }| j        j                            dd           }|st          ddg d          S |                    |d          }|rQ|rOt          j	        |d          
                                }t          j	        |d          
                                }nzt          j                    
                                }|                    d	
          }|                    d
          t          d          z   }	|	t          |	j                  z
  }g }
|t          d          z
  |k    r|}||k    rvt          j                            |                                          }|
                    |                    d          |d           |t          d	          z  }||k    vn^|t          d          z
  |k    r|                    d	
          }||k    r|                    d
          t          d          z   }	|	t          |	j                  z
  }|                    |j        |j                                                  }|
                    |                    d          |d           |t          d	          z   }||k    nt|}||k    rl|                    |                                          }|
                    |                    d          |d           |t          d	          z  }||k    lt          dd|
id          S # t,          $ r*}t          ddt/          |          d          cY d }~S d }~ww xY w)Nr   r   FzYou can not access the datarJ   Tr  %Y-%m-%dr
   day      days   created_at__date%ar*   total   created_at__yearcreated_at__month%bdate_wise_countsri   rI   )r>  r?  rW   rL   r   rM   r   rP   datetimestrptimer*   nowreplacer)   r  rY  rO   r   rv   strftimeyearmonthrT   rU   )rV   rW   rX   rY   r   rL   r   r   current_date
next_monthr  total_countlast_day_of_monthr^   s                 r=   rl   z%UndetectedEventDateWiseCountView.list  s   ''(9(9(;(;<<?	_<$D266|TJJJ|044ZFFH i5=Zdf g ghhhZ^__H Ih I%.z:FFKKMM
#,XzBBGGII'|~~2244)11a188
'//B/77):K:K:KK
&
)G)G)GG  ")++++z99)"h.."'-"6"6"6"U"U"["["]"]K$++ , 5 5d ; ;!,- -   
 !I1$5$5$55L #h.. I2....;;)11a188"h..!-!5!5"!5!=!=	q@Q@Q@Q!QJ(2YJN5S5S5S(S%"*//)5):*6*< #2 # # egg   %++ , 5 5d ; ;!,- -   
 $5ya7H7H7H#HL #h..  *"h.."*//</"P"P"V"V"X"XK$++ , 5 5j A A!,- -   
 !I1$5$5$55L #h.. t6HJZ5[\\]]] 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s%   A M9 
K.M9 9
N-N("N-(N-N
r6   r7   r8   r   rm   rY  rO   rj   r   rl   r;   r<   r=   r  r    sI        )*}  ""HA_ A_ A_ A_ A_r<   r  c                   L    e Zd ZegZej                                        Zd Z	dS )UndetectedEventPercentageViewc                    |                      |                                           }	 | j        j        }| j        j                            dd           }| j        j                            dd           }|st          ddg d          S t          j        	                    |d          }|	                    |d          }|rQ|rOt          j        |d                                          }t          j        |d                                          }n[t          j                                                    t          d	
          z
  }t          j                                                    }|r|r|	                    ||          }|j                            dd           }	|	r|	                    |	d          }i }
|D ]`}t          |rB|	                    |j                                                  |                                z  nddz            |
|j        <   at          d|
d          S # t$          $ r*}t          ddt'          |          d          cY d }~S d }~ww xY w)Nr   r   Frt  rJ   Tr  r  r  r  created_at__date__gtecreated_at__date__lter  r  camera_events__camera_eventr   d   ri   rI   )r>  r?  rW   rL   r   rM   r   r  rO   rP   r  r  r*   r  r)   roundr  r   rT   rU   )rV   rW   rX   rY   r   rL   r   r   event_querysetr  rK   eventr^   s                r=   rl   z"UndetectedEventPercentageView.list  s   ''(9(9(;(;<<	_<$D266|TJJJ|044ZFFH i5=Zdf g ghhh(077Z^ko7ppNZ^__H 1h 1%.z:FFKKMM
#,XzBBGGII%\^^0022YB5G5G5GG
#<>>..00 mh m#??ck?ll%2667H$OOO n!/!6!6/hl!6!m!mD' f f+0  QY  3`(//`e`r/2s2s2y2y2{2{  }E  }K  }K  }M  }M  3M  3M  _`  be  2e  ,f  ,fU'((tT::;;; 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s%   A H6 
F+H6 6
I* I%I*%I*Nr  r;   r<   r=   r  r    sD        )*}  ""H!_ !_ !_ !_ !_r<   r  c                       e Zd ZegZd ZdS )%UndetectedEventDateWisePercentageViewc                    | j         j                            dd           }| j         j                            dd           }	 |r't          j        |d                                          n5t          j                                                    t          d          z
  }|r't          j        |d                                          n$t          j                                                    }n## t          $ r t          ddid	          cY S w xY wg }t          d
           }	|}
|
|k    r2t          j                            |
                              t!          d          t!          dt#          d                    t!          dt#          d                    t!          dt#          d                    t!          dt#          d                    t!          dt#          d                              }|d         dk    rt%          |d         |d         z  dz            }t%          |d         |d         z  dz            }t%          |d         |d         z  dz            }t%          |d         |d         z  dz            }t%          |d         |d         z  dz            }n
dx}x}x}x}}|                    |
                    d          | d| d| d| d| ddd            |
                    d!          }|                                D ]\  }}|	|         |xx         |z  cc<   |
t          d"          z  }
|
|k    2g }|	                                D ]\  }}|d         }|dk    rt%          |d         |z  dz            }t%          |d         |z  dz            }t%          |d         |z  dz            }t%          |d         |z  dz            }t%          |d         |z  dz            }n
dx}x}x}x}}|                    || d| d| d| d| ddd#           ||d$}t          |          S )%Nr   r   r  r  r  r   z&Invalid date format. Use 'YYYY-MM-DD'.r   r   c                  *    t          t                    S N)r,   r   r;   r<   r=   <lambda>z<UndetectedEventDateWisePercentageView.list.<locals>.<lambda>Q  s    C0@0@ r<   r  rc   r  r  rP   r  r  r  r  r  helmetglassesglovesshoesjacketr  r   r  r  r  r  r  r  N/Az %)r  r  r  r  r  )r*   counts%Y-%mr
   )r  r  )r  month_wise_counts)rW   r   rM   r  r  r*   timezoner  r)   
ValueErrorr   r,   rY  rO   rP   	aggregater(   r   r  rv   r  r*  )rV   rW   rX   rY   start_date_paramend_date_paramr   r   r  r  r  r  helmet_percentageglasses_percentagegloves_percentageshoes_percentagejacket_percentager  keyvalueformatted_month_wise_countsr  r6  s                          r=   rl   z*UndetectedEventDateWisePercentageView.listB  sY   <488tLL266z4HH	]Sc  T*+;ZHHMMOOOiqiuiwiwi|i|i~i~  BK  QS  BT  BT  BT  jTJO]xx(DDIIKKKckcocqcqcvcvcxcxHH 	] 	] 	]W&NOX[\\\\\\	]
 '(@(@AA!h&&]))<)HHRRDkkT!\*R*R*RSSSd1m+T+T+TUUUT!\*R*R*RSSSDK)P)P)PQQQT!\*R*R*RSSS S  F g""$)6(+;fWo+MQT*T$U$U!%*F9,=w,OSV+V%W%W"$)6(+;fWo+MQT*T$U$U!#(&/F7O*Ks)R#S#S $)6(+;fWo+MQT*T$U$U!!tyy!y$6y9JyM]`q##$--j99!2666"4888!2666 0444!2666 	% 	% 	 	 	 !))'22E$llnn 7 7
U!%(---6----I1----LG h&&L ')#.4466 	 	ME67OEqyy$)6(+;e+Cs*J$K$K!%*F9,=,E+L%M%M"$)6(+;e+Cs*J$K$K!#(&/E*AS)H#I#I $)6(+;e+Cs*J$K$K!!tyy!y$6y9JyM]`q'..!2666"4888!2666 0444!2666 	0 	0 	 	 	 	 !1!<
 

 &&&s   B-C0 0DDNrz   r;   r<   r=   r  r  ?  s1        )*R' R' R' R' R'r<   r  )r   )r   )rY  )r   c                       e Zd ZegZd ZdS )ExportToExcelViewc                 	   t           j                                        }i }i }|D ]}|j                            d          }|j                            d          }	||vrddddddd||<   |	|vrddddddd||	<   ||         dxx         dz  cc<   ||	         dxx         dz  cc<   d|j        v r,||         dxx         dz  cc<   ||	         dxx         dz  cc<   d	|j        v r,||         d
xx         dz  cc<   ||	         d
xx         dz  cc<   d|j        v r,||         dxx         dz  cc<   ||	         dxx         dz  cc<   d|j        v r,||         dxx         dz  cc<   ||	         dxx         dz  cc<   d|j        v r,||         dxx         dz  cc<   ||	         dxx         dz  cc<   t                      }
|
j        }d|_        |
	                    d          }g d}|
                    |           |
                    |           |                                D ],\  }}|
                    ||d         |d         |d         dk    r!t          |d         |d         z  dz            nd|d
         |d         dk    r!t          |d
         |d         z  dz            nd|d         |d         dk    r!t          |d         |d         z  dz            nd|d         |d         dk    r!t          |d         |d         z  dz            nd|d         |d         dk    r!t          |d         |d         z  dz            ndg           .|                                D ],\  }	}|
                    |	|d         |d         |d         dk    r!t          |d         |d         z  dz            nd|d
         |d         dk    r!t          |d
         |d         z  dz            nd|d         |d         dk    r!t          |d         |d         z  dz            nd|d         |d         dk    r!t          |d         |d         z  dz            nd|d         |d         dk    r!t          |d         |d         z  dz            ndg           .t          j                                        d          }d| d}t          d          }d| |d<   |
                    |           |S )Nr  r  r   r  r  r
   r  r  r  r  r  r  r  r  r  r  zDay Wisez
Month Wise)DateTotal AlertsHelmet AlertsHelmet %Glasses Alerts	Glasses %Gloves AlertsGloves %Shoes AlertsShoes %Jacket AlertsJacket %r  r  z%Y_%m_%d_%H%M%Sundetected_data_z.xlsxAapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetr   zattachment; filename=Content-Disposition)rY  rO   rj   r&  r  rZ  r'   activetitlecreate_sheetrv   r*  r  r  r  r   rR   )rV   rW   rX   rY   alertsday_wise_datamonth_wise_datar`  date_str	month_strwbws_dayws_monthr?  rK   	timestamp	file_namerI  s                     r=   rl   zExportToExcelView.list  s-   ""$$  	: 	:E'00<<H(11'::I},,45q\]hiuv*w*wh'//78ARS_`klxy-z-z	*(#G,,,1,,,I&w///14///u222h'111Q6111	*84449444 333h'	222a7222	*9555:555u222h'111Q6111	*84449444e111h'000A5000	*7333q8333u222h'111Q6111	*84449444 ZZ!??<00 |  |  |g    ,1133 		 		NHdMMWXQUV]Q^abQbQbtH~W'E&L M M MhmYSWX_S`cdSdSdY$w-(G3'N!O!O!OjoXQUV]Q^abQbQbtH~W'E&L M M MhmWtT[}_`O`O`ud7md7m&Cs%JKKKfkXQUV]Q^abQbQbtH~W'E&L M M Mhm      /4466 		 		OItOOWXQUV]Q^abQbQbtH~W'E&L M M MhmYSWX_S`cdSdSdY$w-(G3'N!O!O!OjoXQUV]Q^abQbQbtH~W'E&L M M MhmWtT[}_`O`O`ud7md7m&Cs%JKKKfkXQUV]Q^abQbQbtH~W'E&L M M Mhm     LNN++,=>>	7y777	  -pqqq*M)*M*M&' 	r<   Nrz   r;   r<   r=   r  r    s1        )*Q Q Q Q Qr<   r  )r(   r   )	TruncDate)r  )r   r$   r%   r   r    c                       e Zd ZegZd ZdS )ExportToPDFViewc                    t           j                                        }|                                }|                    t          d                                        d                              t          d          t          dt          d                    t          dt          d                    t          dt          d	                    t          dt          d
                    t          dt          d                              	                    d          }g dg}|D ]!}|d         }	|d         
                    d          t          |	          |	r(|d          dt          |d         |	z  dz  d           dnd|	r(|d          dt          |d         |	z  dz  d           dnd|	r(|d          dt          |d         |	z  dz  d           dnd|	r(|d          dt          |d         |	z  dz  d           dnd|	r(|d          dt          |d         |	z  dz  d           dndg}
|                    |
           #t          j                    }t!          |t"          dddd          }t%                      }t'          d|d         dt)          j        d          d d!"          }t-          d#d$d%t(          j        fd&d$d%t(          j        fd'd(d)d#d*d+t(          j        fd,d$d+d t(          j        fd-d.g	          }t7          d/|          g}t9          |          }|                    |           |                    |           t'          d0d d1t(          j        2          }|                    t=          d d!                     |                    t7          d3| |                     |                    t7          d4t?          j                     
                    d5           |                     |!                    |           |"                    d6           tG          |d78          }d9|d:<   |S );Nr&  r  r  rc   r  r  r  r  r  r  r  r  )r   r  zHelmet (Count, %)zGlasses (Count, %)zGloves (Count, %)zShoes (Count, %)zJacket (Count, %)r  r  r  z (r  rP  z %)z0 (0 %)r  r  r  r  (   )pagesize	topMarginbottomMargin
leftMarginrightMarginCustomHeadingStyleHeading1   z#1f77b4r
      )rA   parentfontSize	textColor	alignment
spaceAfter
BACKGROUNDr   r   r   	TEXTCOLOR)ALIGNr1  r3  r3  CENTER)FONTNAMEr1  r2  zHelvetica-Bold)BOTTOMPADDINGr1  r2     r   r
   r6  GRID)r8  r;  r6  	Helvetica)FONTSIZEr;  r6  rS  zMonth / Day wise Alert DataFooterStyler3   )r.  r,  r-  zTotal Alerts: zGenerated on: z%Y-%m-%d %H:%M:%Sr   application/pdfr  z.attachment; filename="day_wise_alert_data.pdf"r  )$rY  rO   rj   r   annotater  r   r(   r   rU  r  rU   r  rv   ior&   r   r   r!   r"   r#   HexColorr%   	cadetblue
whitesmokebeigeblackr   r$   setStyler    r  r  buildseekr   )rV   rW   rX   rY   r  total_alertsr  rK   day_datar  rowbufferpstylescustom_heading_stylecustom_table_stylecontenttablefooter_stylerI  s                       r=   rl   zExportToPDFView.list  s   ""$$||~~ X)L11X22VE]]XDkkT!\*R*R*RSSSd1m+T+T+TUUUT!\*R*R*RSSSDK)P)P)PQQQT!\*R*R*RSSS    Xe__ 	  R  R  R  S% 	 	HW%E((44E

^cr8H%ZZ0BU0Jc/QST)U)UZZZZir`et8I&\\%)1Du1LPS0SUV*W*W\\\\kt^cr8H%ZZ0BU0Jc/QST)U)UZZZZir\ap8G$XXx/@5/HC.OQR(S(SXXXXgp^cr8H%ZZ0BU0Jc/QST)U)UZZZZirC KK  fvRTacqsttt %&&-%*%oi00 
  
  
 (67F,<=&'6+<=1;268V\:VXq&,77-
)
 
 
 :<PQQRd)***u &mq2Y_Yefffva}}%%%y!@,!@!@,OOPPPy!`(,..2I2IJ]2^2^!`!`bnooppp 	
 	A5FGGG*Z&'r<   Nrz   r;   r<   r=   r  r    s1        )*T T T T Tr<   r  )r  
TruncMonthc                       e Zd ZegZd ZdS )ExportToCSVViewc                   
 t          d          }d|d<   t          j        |          

                    g d           
fd}t          j                            t          d                                        d	                              t          d
                    
                    d	          }|D ]K} ||d	                             d          t          j                            |d	                              Lt          j                            t          d                                        d                              t          d
                    
                    d          }|D ]P}	 ||	d                             d          t          j                            |	d         j                             Q|S )Ntext/csvr  z.attachment; filename=undetected_event_data.csvr  )zTime Periodr  r  r  r  r  r  r  r  r	  r
  r  c                    |                                 }|                    t          d                                                     }|                    t          d                                                     }|                    t          d                                                     }|                    t          d                                                     }|                    t          d                                                     }|dk    rt          ||z  dz  d	          nd}|dk    rt          ||z  dz  d	          nd}	|dk    rt          ||z  dz  d	          nd}
|dk    rt          ||z  dz  d	          nd}|dk    rt          ||z  dz  d	          nd}                    | |||||	||
||||g           d S )
Nr  r  r  r  r  r  r   r  rP  )r   rP   r   r  writerow)time_periodr  rK  helmet_alertsglasses_alertsgloves_alertsshoes_alertsjacket_alertsr  r  r  r  r  
csv_writers                r=   calculate_and_write_dataz6ExportToCSVView.list.<locals>.calculate_and_write_dataq  s   !<<>>L"MM!\*R*R*RSSYY[[M#]]1m+T+T+TUU[[]]N"MM!\*R*R*RSSYY[[M!==K)P)P)PQQWWYYL"MM!\*R*R*RSSYY[[M S_bcRcRc}|'Cs&JA N N NijT`deTeTe(E'La!P!P!PklR^bcRcRc}|'Cs&JA N N NijP\`aPaPaul\&AS%H!LLLghR^bcRcRc}|'Cs&JA N N Nij lMK\^l  oA  CP  Rc  eq  sC  ER  Te  !f  g  g  g  g  gr<   r&  r  r  rc   )r  r  r  )r  r  r  )r  )r   csvwriterr\  rY  rO   rA  r  r   r(   rU  r  rP   rV  r  )rV   rW   rX   rY   rI  rd  r  rL  r  
month_datarc  s             @r=   rl   zExportToCSVView.listg  s   Z888*Z&'Z))
 	  M  M  M  	N  	N  	N	g 	g 	g 	g 	g( MX)L11X22VE]]XE$KKX((Xe__ 	 & 	C 	CH$$Xe_%=%=j%I%I5=K_K_qyz  rAK_  LB  LB  C  C  C  C MXJ|44X55VG__XE$KKX((Xg 	 * 	O 	OJ$$Z%8%A%A'%J%JEML`L`s}  F  tG  tML`  MN  MN  O  O  O  Or<   Nrz   r;   r<   r=   rX  rX  d  s,        )*2 2 2 2 2r<   rX  )generics)DjangoFilterBackend)AlertSerializer)canvasc                       e Zd Z ej        dd          Z ej        dd          Z ej                    Z ej	                    Z
 G d d          ZdS )AlertFiltercamera__camera_name	icontains)
field_namelookup_exprr  c                       e Zd ZeZg dZdS )AlertFilter.Meta)r  r  r&  is_event_detectr  N)r6   r7   r8   rY  r   fieldsr;   r<   r=   Metars    s        [[[r<   rv  N)r6   r7   r8   django_filters
CharFilterr  r  DateFromToRangeFilterr&  BooleanFilterrt  rv  r;   r<   r=   rm  rm    s        &^&2GU`aaaF-N-9VdopppM5577J2n244O\ \ \ \ \ \ \ \ \ \r<   rm  c                   v     e Zd Zej                                        ZeZe	gZ
egZeZ fdZd Zd Zd Z xZS )AlertReportViewc                 d   |j                             dd           }|                     |                                           }|dk    r|                     |          S |dk    r|                     |          S |dk    r|                     |          S  t                      j        |g|R i |S )Nformetre  excelpdf)rt   rM   r>  r?  generate_csvgenerate_excelgenerate_pdfsuper)rV   rW   rX   rY   r  r   	__class__s         r=   rM   zAlertReportView.get  s    400''(9(9(;(;<<U??$$X...w&&x000u__$$X...577;w8888888r<   c                 
   t          d          }d|d<   t          j        |          }|                    g d           |D ]?}|                    |j        j        |j        j        |j        |j	        |j
        g           @|S )NrZ  r  !attachment; filename="alerts.csv"r  rw  Event
Created AtIs Event Detect
Is Enabled)r   re  rf  r\  r  r  r  r  r&  rt  r  )rV   r   rI  rf  r`  s        r=   r  zAlertReportView.generate_csv  s    Z888*M&'H%%ZZZ[[[ 	U 	UEOOU\5u7J7WY^Yikp  lA  CH  CS  T  U  U  U  Ur<   c                    t          d          }d|d<   t          j        t          |                    ddddd	                              }g d
|_        t                      5 }t          j        |d          }|                    |dd           |	                                 |
                    |                                           d d d            n# 1 swxY w Y   |S )Nr  r  z"attachment; filename="alerts.xlsx"r  rn  r  r&  rt  r  r  openpyxl)engineFAlerts)index
sheet_name)r   pd	DataFramerl   r   columnsr&   ExcelWriterto_excelrR   writegetvalue)rV   r   rI  dfbrf  s         r=   r  zAlertReportView.generate_excel  s+   -pqqq*N&'\$x/DFceq  tE  GS   T   T  U  U  V  VWWW
YY 	)!^Aj999FKKeKAAAKKMMMNN1::<<(((		) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) s   %A*CC"Cc                    t                      }t          j        |t                    }t          \  }}|                    d|dz
  d           |                    d|dz
  d           |                    d|dz
  d           |                    d|dz
  d	           |                    d
|dz
  d           |                    d|dz
  d           |dz
  }|D ]}|                    d||j        j                   |                    d||j        j                   |                    d|t          |j
                             |                    d
|t          |j                             |                    d|t          |j                             |dz  }|                                 |                                 |                    d           t!          |d          }d|d<   |S )N)r"  r  2   zAlert Reportrw  r   r  ,  r  r   r  r  r     r  r   r@  r  z!attachment; filename="alerts.pdf"r  )r&   rk  Canvasr   
drawStringr  r  r  r  rU   r&  rt  r  showPagerR   rJ  r   )	rV   r   rN  rO  widthheightyr`  rI  s	            r=   r  zAlertReportView.generate_pdf  s   M&6222v	S&2+~666	S&3,111	S&3,000	S&3,555	S&3,(9:::	S&3,555SL 	 	ELLa!9:::LLa!4!ABBBLLaU%5!6!6777LLaU%:!;!;<<<LLaU%5!6!6777GAA	

	A5FGGG*M&'r<   )r6   r7   r8   rY  rO   rj   r   rj  r   r   rm   ri  r  rm  filterset_classrM   r  r  r  __classcell__)r  s   @r=   r|  r|    s        }  ""H&)**+O!O9 9 9 9 9          r<   r|  c                   X    e Zd ZegZeZej        	                                Z
dZeZd ZdS )TopFourAlertDataViewr  c                 p   |                      |                                           }	 | j        j        }|j                            dd           }|st          ddg d          S d }|r2|                    |d                              d          d d         }|r|                    |d	          }|r| 	                    |          }|/t          |dd
|i          }	|                     |	j                  }	nt          |dd
|i          }	|	j        d         }
t          |j                            dd                    }t          dd|
|z   dz
  |z  |
|	j        d         d          S t          ddg d          S # t          $ r*}t          ddt!          |          d          cY d }~S d }~ww xY w)Nr  Frt  rJ   Tr  rL  r  r  rW   rd  r   r4   r3   r  r
   r   r   zNo Alerts Found.rI   )r>  r?  rW   rL   r   rM   r   rP   rU  r   rj  r   rK   r   rt   rT   rU   )rV   rW   rX   rY   r   rL   r  r  r   r   r   r   r^   s                r=   rl   zTopFourAlertDataView.list  s9   ''(9(9(;(;<<	_<$D%2667H$OOO i5=Zdf g ghhh# H#+??UYfj?#k#k#t#t  vC  $D  $D  EG  FG  EG  $H  r#3#:#:olp#:#q#q  [--.>??#!04T[H\!]!]!]J!%!<!<Z_!M!MJJ!01AtU^`gTh!i!i!iJ"0GKOOK<<==4;[/4u}q/@U.J(-(2	(B!D !D E E E
  5<NVX Y YZZZ 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s*   ;F %DF .F 
F5F0*F50F5N)r6   r7   r8   r   rm   rj  r   rY  rO   rj   r   r  r2   r   rl   r;   r<   r=   r  r    sU        )*&}  ""H$L3!_ !_ !_ !_ !_r<   r  c                   T    e Zd ZegZeZej        	                                Z
eZd ZdS )AlertGetViewc                 
   |                      |                                           }	 | j        j        }|                    d          st          ddd          S |j                            dd          }|j                            dd          }|j                            dd          }|j                            d	d          }	|j                            d
d          }
|j                            dd          }|j                            dd          }|j                            dd          }|j                            dd          }|j                            dd          }d }|r)|                    |          	                    d          }|r|r||k    rt          ddd          S d}t          j        ||                                          }t          j        ||                                          }||k    r*|                    |          	                    d          }n|                    ||          	                    d          }n|rd}t          j        ||                                          }t          |t                    r*|                    |          	                    d          }n t          ddt          |          d          S |	r|                    |	          }|
r|                    |
          }|r|                    |          }|r|                    |          }|r|                    |          }|r|                    |          }|st          ddg d          S |r|                                                                }|                    t#          |          t#          |          z  t#          |           z  t#          |!          z  t#          |"          z            	                    d          }|r)|                    |#          	                    d          }|r|                     |          }|/t'          |d$d%|i&          }|                     |j                  }nt'          |d$d%|i&          }|j        d'         }t-          |j                            d(d)                    }t          d$d*||z   d+z
  |z  ||j        d,         d-          S t          d$d.g d          S # t0          $ r*}t          dd/t          |          d          cY d }~S d }~ww xY w)0Nzmyprofile.view_alertFr   rD   r   r   r   r   r  r  r  r  r  rZ  use_case_detectionr  rL  'Start date should be less then end dater  r  r  "Enter correct format of start_daterJ   ro  r  r  r  ru  r  rM  r  rx  r  r  r  TrW   rd  r   r4   r3   Alert List Successfullyr
   r   r   No Alert FoundrI   )r>  r?  rW   rL   rN   r   r   rM   rP   rU  r  r  r*   r
  rU   r   r   r   r   rj  r   rK   r   rt   rT   )rV   rW   rX   rY   r   rL   r   r   r   r  r  r  r  r  rZ  r  	alert_objdate_formatr^   r   r   r   r   s                          r=   rl   zAlertGetView.list5  s   ''(9(9(;(;<<W	`<$D==!788 r5=o p pqqq"/33HbAAL -11,CCJ+//
B??H%2667H"MMO!.22="EEK*..y"==G,00bAAI+//0A"EEH#044_RHHM!(!5!9!9:NPR!S!SI  l$OOdOSS\\]jkk	
  vh v((#uAj$k$klll( &.z;GGLLNN
#,X{CCHHJJ)) ) 0 0* 0 M M V VWd e eII ) 0 0ziq 0 r r { {  }J  !K  !KII v(%.z;GGLLNN
j$// v ) 0 0* 0 M M V VWd e eII#uAempqrmsms$t$tuuu Q%,,,PP	 I%,,K,HH	 A%,,,@@	 E%,,),DD	 K%,,,JJ	 W%,,,VV	 Y5<LTV W WXXX n+113399;;%,,Q,-W-W-W-.|-\-\-\.]-.Xd-e-e-e.f ./S_-`-`-`.a ./|-T-T-T	.U V V W_V^_lVmVm	  " w%,,K],^^gghuvv	 X--i88#!04T[H\!]!]!]J!%!<!<Z_!M!MJJ!0iY`Ma!b!b!bJ"0GKOOK<<==4;T/4u}q/@U.J(-(2	(B!D !D E E E
  4;KSU V VWWW 	` 	` 	`u9OWZ[\W]W]^^________	`s?   2T' ET' 3D4T' (B$T' FT' T' '
U1UUUN)r6   r7   r8   r   rm   rj  r   rY  rO   rj   r   r2   r   rl   r;   r<   r=   r  r  /  sU        )*&}  ""H3Y` Y` Y` Y` Y`r<   r  c                   Z    e Zd ZegZeZej        	                                Z
eZd Zd ZdS )ExportReportCSVc                     t          j                                        d          }| d| }t          j        }t          ||||g          }|                    |           |                                 d S )Nz	%d %B, %Yz
 Report - r   )r  todayr  r   r   r   attach_filer   )	rV   r   csv_filerZ  rE   genrated_dater   r   r   s	            r=   send_report_emailz!ExportReportCSV.send_report_email  sw     ((11+>>8888,
WgzzlKKK 	(###

r<   c                 j   |                      |                                           }	 | j        j        }|j                            dd          }|j                            dd          }|j                            dd          }|j                            dd          }	|j                            dd          }
|j                            dd          }|j                            dd          }|j                            d	d          }|j                            d
d          }|j                            dd          }d }|r)|                    |                              d          }|r|rd}t          j	        ||          
                                }t          j	        ||          
                                }||k    r*|                    |                              d          }n|                    ||                              d          }n|rd}t          j	        ||          
                                }t          |t                    r*|                    |                              d          }n t          ddt          |          d          S |	r|                    |	          }|
r|                    |
          }|r|                    |          }|r|                    |          }|r|                    |          }|r|                    |          }|st          ddg d          S |r)|                    |                              d          }|                                r|                     |          }|/t!          |dd|i          }|                     |j                  }nt!          |dd|i          }t!          |dd|i          }g d}t'          j        |j        |           }t*          j        d!z   }|                    |d"           |rkt0          j                            |#                                          }|j        r2|r|r
d$| d%| d&}nd'}|                     |j        ||j        |           t?          d()          }d*|d+<   tA          j!        |          }g d,}|"                    |           |j        d-         D ]M}|d.         |d/         |d0         |d1         r|d1         nd|d
         |d2         g}|"                    |           Nt          dd3t*          j#        d4z   d          S t          dd5g d          S # tH          $ r*}t          dd6t          |          d          cY d }~S d }~ww xY w)7Nr   r   r   r   r  r  r  r  r  rZ  r  r  rL  r  r  r  Fr  rJ   ro  r  r  r  ru  r  rM  r  TrW   rd  )r  camera_events_nameframelocation_nameorganization_namerZ  r&  )r  z/report_csv/report_data.csv)r  r   zfI hope this email finds you well.

 Please find attached the comprehensive report of the records from z to z which you requested. This report includes detailed data and analysis, which we believe will provide you with valuable insights.

Thank you.zI hope this email finds you well.

 Please find attached the comprehensive report of the overall records you requested. This report includes detailed data and analysis, which we believe will provide you with valuable insights.

Thank you.rZ  r  r  r  )r   zCamera Locationr  zEvent IDzAlert Messager  r   r  r  r&  r  r  zFile generated Successfully.z!/media/report_csv/report_data.csvr  rI   )%r>  r?  rW   rL   r   rM   rP   rU  r  r  r*   r
  r   rU   r   r   rj  r   rK   r  r  r   
MEDIA_ROOTto_csvr   rO   rQ   r  r  r   rZ  r   re  rf  r\  URLrT   ) rV   rW   rX   rY   r   rL   r   r   r   r  r  r  r  r  rZ  r  r  r  r^   r   r   sl_datar  rK   	file_pathcheckrE   rI  csv_file_writer
header_rowresultrM  s                                    r=   rl   zExportReportCSV.list  s   ''(9(9(;(;<<w	`<$D"/33HbAAL -11,CCJ+//
B??H%2667H"MMO!.22="EEK,00bAAI*..y"==G+//0A"EEH#044_RHHM!(!5!9!9:NPR!S!SI l$OOdOSS\\]jkk	  vh v( &.z;GGLLNN
#,X{CCHHJJ )) ) 0 0* 0 M M V VWd e eII ) 0 0ziq 0 r r { {  }J  !K  !KII v(%.z;GGLLNN
j$// v ) 0 0* 0 M M V VWd e eII#uAempqrmsms$t$tuuu Q%,,,PP	 I%,,K,HH	 A%,,,@@	 E%,,),DD	 K%,,,JJ	 W%,,,VV	 Y5<LTV W WXXX! w%,,K],^^gghuvv	!! 9X--i88#!04T[H\!]!]!]J!%!<!<Z_!M!MJJ!0iY`Ma!b!b!bJ *)yRYFZ[[[ N  N  Nl7<@@@ %/0MM	IU333 _(077D7QQWWYYE: _% [( [ 'z  R\  'z  'z  bj  'z  'z  'zGG '[G..tz9enV]^^^'Z@@@2U./"%*X"6"6ttt
((444(oi8 	2 	2F23/|,8>?S8T\344Z\/wC $,,S1111  4;Yaiam  oR  bR  !S  !S  T  T  T4;KSU V VWWW 	` 	` 	`u9OWZ[\W]W]^^________	`s2   I?U> )B$U> HU> +U> >
V2V-'V2-V2N)r6   r7   r8   r   rm   rj  r   rY  rO   rj   r   r2   r   r  rl   r;   r<   r=   r  r    sd        )*&}  ""H3	 	 	y` y` y` y` y`r<   r  )default_storagec                       e Zd ZegZeZd ZdS )"UserOrganizationLoactionAreaIdViewc                    	 | j         j        }|st          ddg d          S |j                            d          }|j                            d          }|j                            d          }|rEt
          j                            |                                          st          ddg d          S |rEt          j                            |                                          st          dd	g d          S |rEt          j                            |                                          st          dd
g d          S |r'|r%|r#t          j                            |||          }n|r$|r"t          j                            ||          }n|r$|r"t          j                            ||          }n|r$|r"t          j                            ||          }n||r!t          j                            |          }nY|r!t          j                            |          }n6|r!t          j                            |          }nt          ddg d          S |                                r,t          |dd|i          }	t          dd|	j        d          S t          ddg d          S # t          $ r*}
t          ddt          |
          d          cY d }
~
S d }
~
ww xY w)NFzYou cannot see user.rJ   r  r  r  rb   r   r  r  rp  r  r  rp  r  rp  r  r  r  ro  r  r  *Please provide a project, phase, or tower.TrW   rd  User list successfully.No user found.Something went wrong.)rW   rL   r   r   rM   r   rO   rP   r   rs  ru  r   r   rK   rT   rU   )rV   rW   rX   rY   rL   r  r  r  rj  r   r^   s              r=   rl   z'UserOrganizationLoactionAreaIdView.list  s_   3	c<$D b5=S]_ ` `aaa%2667HIIO!.22=AAK*..y99G i#+22o2FFMMOO i#uAZdf$g$ghhh e'..+.>>EEGG e#uAV`b$c$cddd a|**g*66==?? a#uAR\^$_$_``` x; x7 x"*11?alw~1  x[ x"*11?al1mm  xW x"*11?]d1ee x x"*11{U\1]]  
x"*11?1SS x"*11{1KK x"*1171CC5=isu v vwww||~~ \1%dYX_L`aaa
4<U_i_n o oppp5=MWY Z Z[[[ 	c 	c 	cu9PZ]^_Z`Z`aabbbbbbbb	csD    J0 BJ0 8AJ0 ?AJ0 DJ0 ?J0 J0 0
K$:KK$K$N)r6   r7   r8   r   rm   r   r   rl   r;   r<   r=   r  r    s7        )*+4c 4c 4c 4c 4cr<   r  c                       e Zd ZegZeZd ZdS )OrganizationLocationAreaIdViewc                    	 | j         j        }|st          ddg d          S |j                            d          }|j                            d          }|j                            d          }|j                            d          }|rEt
          j                            |                                          st          dd	g d          S |rEt          j                            |                                          st          dd
g d          S |rEt          j                            |                                          st          ddg d          S |rEt          j                            |                                          st          ddg d          S |r'|r%|r#t
          j                            |||          }	n|r$|r"t
          j                            ||          }	n|r$|r"t
          j                            ||          }	n|r$|r"t
          j                            ||          }	n||r!t
          j                            |          }	nY|r!t
          j                            |          }	n6|r!t
          j                            |          }	nt          ddg d          S |	                                r)t          |	d          }
t          dd|
j        d          S t          ddg d          S # t          $ r*}t          ddt          |          d          cY d }~S d }~ww xY w)NFzYou cannot see organization.rJ   r  r  r  r  rb   r   r  r  zCamera not found.)rc   r  r  )rc   r  )rc   r  r  r  r  r  Trg   zOrganization list successfully.zNo organization found.r  )rW   rL   r   r   rM   r   rO   rP   r   rs  ru  rw  rV  rK   rT   rU   )rV   rW   rX   rY   rL   r  r  r  r  r  r   r^   s               r=   rl   z#OrganizationLocationAreaIdView.listC  s   8	c<$D j5=[eg h hiii%2667HIIO!.22=AAK*..y99G,00==I i#+22o2FFMMOO i#uAZdf$g$ghhh e'..+.>>EEGG e#uAV`b$c$cddd a|**g*66==?? a#uAR\^$_$_``` c~,,	,::AACC c#uAT^`$a$abbb x; x7 x , 4 ; ;]hsz ; { {  x[ x , 4 ; ;]h ; i i  xW x , 4 ; ;Y` ; a a x x , 4 ; ;_f ; g g  
x , 4 ; ; ; O O x , 4 ; ; ; U U x , 4 ; ;W ; M M5=isu v vwww##%% d3MMMM
4<]gqgv w wxxx5=U_a b bccc 	c 	c 	cu9PZ]^_Z`Z`aabbbbbbbb	csK    L B.L AL AL  AL 'DL ><L ;L 
ML=7M=MN)r6   r7   r8   r   rm   rV  r   rl   r;   r<   r=   r  r  ?  s7        )*-9c 9c 9c 9c 9cr<   r  c                   h    e Zd ZegZeZej        	                                Z
ej        gZddgZd ZdS )&OrganizationLocationAreaCameraUserViewr   r   c                    |                      |                                           }	 | j        j        }|st	          ddg d          S |j                            d          }|j                            d          }|j                            d          }|j                            d          }	|r*|                    d	                              d
          }|r |r|r|	r|                    ||||	          }
n|r|r|r|                    |||          }
n|r|r|                    ||          }
n|r|r|                    ||          }
nz|r|r|                    ||          }
n^|r|                    |          }
nE|r|                    |          }
n,|r|                    |          }
nt	          ddg d          S |
	                                r,t          |
d
d|i          }t	          d
d|j        d          S t	          ddg d          S # t          $ r*}t	          ddt          |          d          cY d }~S d }~ww xY w)NFzYou cannot see User.rJ   r  r  r  r  rq   r   Tr   )rp  r  r  r  r  r  r  r  ro  r  r  r  rW   rd  r  r  r  )r>  r?  rW   rL   r   r   rM   ru   rP   r   r   rK   rT   rU   )rV   rW   rX   rY   r   rL   r  r  r  r  rj  r   r^   s                r=   rl   z+OrganizationLocationAreaCameraUserView.list  s    ''(9(9(;(;<</	c<$D b5=S]_ ` `aaa%2667HIIO!.22=AAK*..y99G,00==I g#++=+IIQQaeQff x; x7 xy x Wbmt  BK  L  L  x[ xW x Wbmtuu  x[ x Wbcc  xW x SZ[[ x x [7SS  
x II x [AA x 995=isu v vwww||~~ \1%dYX_L`aaa
4<U_i_n o oppp5=MWY Z Z[[[ 	c 	c 	cu9PZ]^_Z`Z`aabbbbbbbb	cs0    H$ 
FH$ ?H$ H$ $
I.IIIN)r6   r7   r8   r   rm   r   r   r   rO   rj   r   r/   r  r  r  rl   r;   r<   r=   r  r    s`        )*+!%%''H+,O!;/M1c 1c 1c 1c 1cr<   r  r   )api_viewPOSTc                 ^   | j         dk    r| j                            d          }	 d}t          j        |                              |d                                           |                     d          d d         }t          j	        
                    ||          }t          d|it          j        	          S # t          j        $ rA}t          d
d|j                                         it          j        	          cY d }~S d }~ww xY wt          d
dit          j        	          S )Nr  r  zW/home/savan/kalpesh/visnx-backend/Nettyfy_visnx/media/hls_file/hls_file_all/stream.m3u8hls)r  /r3  rG  r   rE   zError during conversion: zOnly POST requests are allowed)methodrK   rM   ffmpeginputoutputrunbuild_absolute_uriospathjoinr   r   HTTP_200_OKErrorstderrdecodeHTTP_500_INTERNAL_SERVER_ERRORHTTP_405_METHOD_NOT_ALLOWED)rW   r  output_file_pathbase_urlhls_file_urlr^   s         r=   convert_rtsp_to_hlsr    sP   ~<##J//	Hxx! !(77 11#66ss;H7<<2BCCLUL1&:LMMMM| 	H 	H 	HY(WAHOODUDU(W(WXag  bG  H  H  H  H  H  H  H  H  H	H $DEfNpqqqqs   BB? ?D6D
D
D)r   rt   c                 ,   | j         dk    rmt          j                            t          j        ddd          }|                     d          d d         }| d| }t          d|it          j	                  S t          d	d
it          j
                  S )Nrt   hls_filehls_file_allzstream.m3u8r  r3  rG  r   rE   zOnly GET requests are allowed)r  r  r  r  r   r  r  r   r   r  r  )rW   hls_file_pathr  hls_urls       r=   get_hls_filer    s    ~X%8*nVcdd --c223B37////(1CDDDD$CDVMoppppr<   )FileSystemStorage)r  rw  rY  )r
  )ContentFile333333?皙?c                    t           j        j        j        | vs0t           j        j        j        | vst           j        j        j        | vrdS | t           j        j        j                 j        }| t           j        j        j                 j        }| t           j        j        j                 j        }t          d |||fD                       sdS ||z
  |k    ot          ||z
            |k     }|S )NFc              3   N   K   | ] }t          |t          t          f          V  !d S r  )r
  r   r  )r   vals     r=   	<genexpr>zdetect_fall.<locals>.<genexpr>1  s0      ^^z#U|,,^^^^^^r<   )
mp_posePoseLandmarkNOSEr  RIGHT_ANKLE
LEFT_ANKLEr  xrj   abs)	keypointsfall_threshold_yfall_threshold_xhead_yright_ankle_xleft_ankle_xfall_detecteds          r=   detect_fallr  &  s     &i77 ,2)CC +1BBuw+0679Fg2>DEGMW1<BCEL ^^P\8]^^^^^ um+/??xCXdHdDeDehxDxMr<   c           
      <   t          j        |           }t          j        j                            dd          }d}d}d}g }|                                r|                                \  }}|sn|dz  }t          j        |d          }t          j	        |t           j
                  }	|                    |	          }
|
j        rd t          |
j        j                  D             }t          |||          r|                    ||d	           d
}t#          |t$          j        j        j                 j        |j        d         z            t#          |t$          j        j        j                 j        |j        d         z            f}t#          |t$          j        j        j                 j        |j        d         z            t#          |t$          j        j        j                 j        |j        d         z            f}t          j        ||||d           d| }t          j        ||dt           j        d|dt           j                   t=          |           t          j        j                             ||
j        t          j        j        j!                   t          j"        d|           t          j#        d          dz  tI          d          k    rn|                                |%                                 t          j&                     |S )N      ?)min_detection_confidencemin_tracking_confidencer  r  r   r
   )i    c                     i | ]\  }}||	S r;   r;   )r   landmarklandmark_datas      r=   
<dictcomp>z&run_fall_detection.<locals>.<dictcomp>U  s    {{{5LX}={{{r<   )rh  r  r   r      rP  zFall Detected @Frame )r  r  zFall Detectionr  q)'cv2VideoCapturemp	solutionsposePoseisOpenedreadresizecvtColorCOLOR_BGR2RGBprocesspose_landmarks	enumerater  r  rv   r   r  r  r  r  r  shaper  r  	rectangleputTextFONT_HERSHEY_SIMPLEXLINE_AArE  drawing_utilsdraw_landmarksPOSE_CONNECTIONSimshowwaitKeyordreleasedestroyAllWindows)
video_filecapr"  r  r  rh  fall_framesretr  	rgb_framer   r
  	roi_colorhead_coordsright_ankle_coordsrE   s                   r=   run_fall_detectionrA  >  s   

:
&
&C<!!3X[!\\DLK
,,.. "XXZZ
U 	
5*--L(9::	,,y))! 	{{PYZaZpZyPzPz{{{I9&68HII }""L5#Q#QRRR'	"9W-A-F-L#M#ORWR]^_R`#`aa	'*>*C*I J Lu{[\~ ]^^`&))G4H4T4Z*[*]`e`klm`n*n&o&o$'	'2F2R2X(Y([^c^ijk^l(l$m$m&o" e[2DiQRSSS@,@@E7Hc6NPQS\^_adalmmmg*99%AWY[YeYjY{|||J'///{1~~$C00E ,,.. "H KKMMMr<   c                       e Zd Zd ZdS )FallDetectionViewSetc                    	 |j                             d          }|st          ddit          j                  S t          j        dt          |                                                    }t          j
                            t          j        |          }t          |          }t          j                            d          \  }}	|D ]}
|
d         }|
d	         }t%          j        d
|          \  }	}t          |                                d          }t+          d|t,          j                                        |          }|                                 |j                            t4          j                                                   t          ddd          S # t6          $ r*}t          ddt9          |          d          cY d }~S d }~ww xY w)Nr9  rE   No video file providedr   tmp/some_video.mp4FallDetectedr  rh  r  .jpgdetection.jpgrF   zFall detectedrZ  r  r  r  TzFall detected in the videorD   FrI   r  )FILESrM   r   r   HTTP_400_BAD_REQUESTr  rR   r  r%  r  r  r  r   r  rA  r  rO   get_or_creater  imencodetobytesrY  rw  rQ   r[  rS   r   rT   rU   )rV   rW   rX   rY   r9  r  tmp_filefall_detected_frames
fall_eventr   
fall_framerh  r  rN  content_filer`  r^   s                    r=   rC  zFallDetectionViewSet.postu  s   $	c **<88J k,D EfNijjjj"'(<k*//J[J[>\>\]]Dw||H$7>>H#5h#?#?  (/==>=ZZMJ2 F F
).9"7+  L77	6*6>>+;+;/RRR "2&!>//11",	   

 %))**<*B*B*D*DEEEEt8TUUVVV 	c 	c 	cu9OZ]^_Z`Z`aabbbbbbbb	cs#   8F& E*F& &
G0GGGNr  r;   r<   r=   rC  rC  t  s(        %c %c %c %c %cr<   rC  c                    t          j        |           }t          |                    t           j                            }g }t          |          D ]f}|                                \  }}|s nIt          j        |t           j                  }t          j
        g d          }t          j
        g d          }	t          j        |||	          }
t          j        |
t           j        t           j                  \  }}|rt          j        t          j        |                    \  }}}}t          j        |||f||z   ||z   fdd           t          j        |ddt           j        dddt           j                   d}t+          |           |                    ||                                d	           h|                                 |S )
N)r   x   F   )r3   r  r  r  rP  zALERT: FIRE)r3   r  r
   zFire Detected	detectionr  )r  r  r   rM   CAP_PROP_FRAME_COUNTranger%  r'  COLOR_BGR2HSVnparrayinRangefindContoursRETR_EXTERNALCHAIN_APPROX_SIMPLEboundingRectvstackr-  r.  r/  r0  rE  rv   copyr7  )r  r:  total_frames
detectionscounterr<  r  hsv	lower_red	upper_redmaskcontoursr   r  r  whrE   s                     r=   fire_detectionrq    s   

9
%
%Cswws78899LJ&& M MXXZZ
U 	El5#"344H\\\**	H^^^,,	{3	955&tS->@WXX! 	M)")H*=*=>>JAq!QM%!Q!a%QaHHHK}h8PRSU`bcehepqqq&G'NNNGejjllKKLLLKKMMMr<   c                       e Zd Zd ZdS )FireDetectionApiViewc                    	 |j                             d          }|st          ddit          j                  S t          j        dt          |                                                    }t          j
                            t          j        |          }t          |          }t          j                            d          \  }}	|D ]}
t%          j        d|
d	                   \  }	}t          |                                d
          }t+          |
d         |t,          j                                        |          }|                                 |j                            t4          j                                                   t          ddd          S # t6          $ r*}t          ddt9          |          d          cY d }~S d }~ww xY w)Nr9  rE   rE  r   rF  FireDetectionrH  rI  r  rJ  rF   rZ  rK  TzFire detected in the videorD   FrI   r  )rL  rM   r   r   rM  r  rR   r  r%  r  r  r  r   r  rq  r  rO   rN  r  rO  rP  rY  rw  rQ   r[  rS   r   rT   rU   )rV   rW   rX   rY   r9  r  rQ  fire_detected
fire_eventr   rZ  rN  rU  r`  r^   s                  r=   rC  zFireDetectionApiView.post  s   	c **<88J k,D EfNijjjj"'(<k*//J[J[>\>\]]Dw||H$7>>H*844M (/==?=[[MJ* F F	L71CDD	6*6>>+;+;/RRR"+K"8&!>//11",	   

%))**<*B*B*D*DEEEEt8TUUVVV 	c 	c 	cu9OZ]^_Z`Z`aabbbbbbbb	cs#   8F" E&F" "
G,GGGNr  r;   r<   r=   rs  rs    s(         c  c  c  c  cr<   rs  c           
      B   d}d}t           j                             |d                                          }t           j                             |d                                          }t          j        |           }t          j                    }g d}	g }
d}	 |                                \  }}|sn|dz  }t          j        |||f          }|                    |          }t          j
        dt          j                  }t          j        |t          j        |d	
          }t          j        |t          j        |d	
          }d }t          j        |t          j        t          j                  \  }}|D ]}t          j        |          }|dk    rqt          j        |          \  }}}}|	d         d         |cxk    r|	d	         d         k    r2n `|	d         d         |cxk    r|	d	         d         k    r	n t           j                                                                         }||cxk    r|k    rgn ndt          j        |||f||z   ||z   fdd	           t          j        |ddt          j        ddd	           |}d|d}|
                    |           -t          j        |||f||z   ||z   fdd	           t          j        |ddt          j        ddd	           |}d|d}|
                    |           t          j        |t          j        |	          gddd	           t          j        d|           t          j        d          dz  }|t;          d          k    rn|                                 t          j                     |
S )Nr  ih  %H:%M))r  r  )r  r  )r   r  )r   r  r   Tr
   )   rz  rP  )
iterationsr  )r   r  r   z(Person Going Inside the Door (Green ROI))r3   r  zPerson DetectedrY  r  zIntrusion Detected (Red ROI)zIntrusion Detected)isClosedri  	thicknesszIntrusion Detectionr  r  ) r  r  r+   r  r  createBackgroundSubtractorKNNr%  r&  applyr^  onesuint8morphologyEx
MORPH_OPENMORPH_CLOSEra  rb  rc  contourAreard  r  r-  r.  r/  rv   	polylinesr_  r4  r5  r6  r7  r8  )r  start_time_strend_time_strr  r  rj  rk  r:  fgbg	fixed_roidetections_listrh  r<  r  resized_framefgmaskkernelopeningclosingdetected_timern  r   cntr~  r  r  ro  rp  current_timedetection_messager  s                                  r=   intrusion_detectionr    s   EF"++NGDDIIKKJ )),@@EEGGH

9
%
%C,..D>>>I OL0XXZZ
U 	
55&/::M****"63>6aPPP"7COVPQRRR&w0A3CZ[[! 	B 	BC?3''Dczz -c22
1aQ<?a::::9Q<?:::::y|ARS?f?f?f?fW`abWcdeWf?f?f?f?f?f#+#4#8#8#:#:#?#?#A#AL!\====X=====maVa!eQU^[Z[\\\M3]_gil  jB  DE  GR  TU  V  V  V(4:LWd,e,e)'../@AAAAmaVa!eQU^[Z[\\\M3QS[]`]uwx  {F  HI  J  J  J(4:OZg,h,h)'../@AAAmbhy&9&9%:TQ\hijjjj
(-888k!nnt##c((??a0d KKMMMr<   )BASE_DIRc                       e Zd Zd ZdS )IntrusionDetectionApiViewc                    	 |j                             d          }|j                            d          }|j                            d          }|st          ddit          j                  S t          j        dt          |	                                                    }t          j                            t          j        |          }t          |||          }	t           j                            d	          \  }
}|	D ]}t'          j        d
|d                   \  }}t          |                                d          }t-          |d         |t.          j                                        |
          }|                                 |j                            t6          j                                                   t          ddd          S # t8          $ r*}t          ddt;          |          d          cY d }~S d }~ww xY w)Nr9  rj  rk  rE   rE  r   rF  IntrusionDetectedrH  rI  r  rJ  rF   rZ  rK  TzIntrusion detected in the videorD   FrI   r  )rL  rM   rK   r   r   rM  r  rR   r  r%  r  r  r  r   r  r  r  rO   rN  r  rO  rP  rY  rw  rQ   r[  rS   r   rT   rU   )rV   rW   rX   rY   r9  rj  rk  r  rQ  intrusion_detectedintrusion_eventr   rZ  rN  rU  r`  r^   s                    r=   rC  zIntrusionDetectionApiView.post.  s    	c **<88J )),77J|''
33H k,D EfNijjjj"'(<k*//J[J[>\>\]]Dw||H$7>>H!4Xz8!T!T!,!4!B!BPc!B!d!dOQ/ F F	L71CDD	6*6>>+;+;/RRR $-k$:&!>//11$3	   

%))**<*B*B*D*DEEEEt8YZZ[[[ 	c 	c 	cu9OZ]^_Z`Z`aabbbbbbbb	cs%   A,G /E(G 
H"HHHNr  r;   r<   r=   r  r  -  s(        !c !c !c !c !cr<   r  c           
         t          d          }t          t          dz  d          }|                                }|                    d          }d\  }}}}t          j        |           }	t          j        d }
t          j        d|
dd	          }d
}g }	 |	                                \  }}|snt          j	        |d	          }|
                    |d          }|d
         j        j        }t          j        |                              d          }t          j        |||f||z   ||z   fdd           d}|                                D ]\  }}t%          t&          |d d                   \  }}}}}||         }d|v r||cxk     r	||z   k     rn G||cxk     r	||z   k     rsn Zt          j        |||f||fdd           t          j        |d||dz
  ft
          j        ddd           t          j        |d||dz
  ft
          j        ddd           d}|rd|d}|                    |           t          j        d|           |                    |           |dz  }t          j        d          dz  t5          d          k    rn|	                                 |                                 t          j                     |S ) Nzmodel/yolov8s.ptzcoco.txtrz/n)r  r  i  i  XVIDzoutput video/PV_5.avig      4@)i    r   Tg333333?)confr  )r  r   r   rP  F   personr  Personr3   r  zDanger Zoner*  zDetect in danger zonerY  RGBr
   r  r  )YOLOopenr  r%  r   r  r  VideoWriter_fourccVideoWriterr&  predictboxesrK   r  r  astyper-  iterrowsmapr   r.  r/  rv   r4  r  r5  r6  r7  r8  )r  r   filerK   
class_listroi_xroi_yroi_hroi_wr:  fourccoutframe_countr  r<  r  r  apxdanger_detectr  rM  x1y1x2y2dcr  s                                r=   danzer_detectionr  R  s   #$$E#S))D99;;DD!!J!3E5%

9
%
%C#V,F
/164
M
MCKO#XXZZ
U 	
5+..u4001IO \!__##G,,eeU^eemUU]-K[Z[\\\++-- 	% 	%JE3 #CRaR 1 1BBA1A1}}!;!;!;!;eem!;!;!;!;!;@Z@Z@Z@ZUUZ]@Z@Z@Z@Z@Zeb"XBxaHHHE8b"r']C<TVY[fhijjjE=2rBw-AY[^`kmnooo $ 	65! ! ""#4555
5%   		%q;q>>D CHH,,G#J KKMMMKKMMMr<   c                       e Zd Zd ZdS )DanzerDetectionApiViewc                    	 |j                             d          }|st          ddd          S t          j        dt          |                                                    }t          j        	                    t          j        |          }t          |          }t          j                            d          \  }}	|D ]}
t!          j        d|
d	                   \  }	}t          |                                d
          }t'          |
d         |t(          j                                        |          }|                                 |j                            t0          j                                                   t          ddd          S # t2          $ r*}t          ddt5          |          d          cY d }~S d }~ww xY w)Nr9  rE  F)rE   r   rF  DanzerDetectedrH  rI  r  rJ  rF   rZ  rK  TzDanzer detected in the videorD   rI   r  )rL  rM   r   r  rR   r  r%  r  r  r  r   r  r  r  rO   rN  r  rO  rP  rY  rw  rQ   r[  rS   r   rT   rU   )rV   rW   rX   rY   r9  r  rQ  rh  danzer_eventr   rZ  rN  rU  r`  r^   s                  r=   rC  zDanzerDetectionApiView.post  s   	c **<88J X,DPU V VWWW"'(<k*//J[J[>\>\]]Dw||H$7>>H)(33J)1??M]?^^OL!' F F	L71CDD	6*6>>+;+;/RRR"+K"8&!>//11".	   

%))**<*B*B*D*DEEEEt8VWWXXX 	c 	c 	cu9OZ]^_Z`Z`aabbbbbbbb	cs#   -F E&F 
G!G GGNr  r;   r<   r=   r  r    s(        c c c c cr<   r  )r  r  c                       e Zd ZegZeZd ZdS )AlertViewSetc           	      F   t           j                                        }t          j                            d          }t
          j                            d          \  }}t
          j                            d          \  }}t          j        t          j
                  }|t          d          z
  fdt          d	d          D             }d
}	d}
g }|D ]}t          j        dd
          }t          |          D ]}t          j        |	|
dz
            }t          j        d	d          }t          j        d	d          } |j        |||          }t          j        ddg          }|dk    r|n|}|dk    rdnd}t"          j                            ||||d          }|j                            |                                           |                    |           t-          |dd|i          }t/          dd|j        dt2          j                  S )NVisnx)r   r4  rH  exitr  r  c                 6    g | ]}t          |           z   S )r  )r)   )r   r  one_week_agos     r=   r   z'AlertViewSet.create.<locals>.<listcomp>  s)    PPPq,):):)::PPPr<   r   r3      r
   ;   )hourminutesecondzEntry detectedzExit detectedT)r  r  rZ  r&  rt  rW   rd  zAlert CreatedrJ   r   )rw  rO   rQ   r   rP   r  rN  r  r  r  utcr)   r\  randomrandintr  choicerY  r_   r[  rS   rv   rj  r   rK   r   r  )rV   rW   r  rL   entry_eventr   
exit_eventr  date_generated
start_hourend_hourcreated_alertsr*   
num_alertsrandom_hourrandom_minuterandom_second
alert_time
event_typer  rZ  r`  r   r  s                          @r=   r_   zAlertViewSet.create  s)   %%''!((g(>>$,:::PPQ#+99v9NN
AX\**ya0000PPPPE!QKKPPP
" 	- 	-D2..J:&& - -$nZAFF &q" 5 5 &q" 5 5)T\{=Yfggg
#]GV+<==
'1W'<'<*4>'4I4I 0 0,,!"'"/)$( -   %))$**,,777%%e,,,,'-* %^$T[H\]]]
4O:?[[ekewxxxxr<   N)r6   r7   r8   r   rm   rj  r   r_   r;   r<   r=   r  r    s6        "&*y *y *y *y *yr<   r  c                   T    e Zd ZegZej                                        Ze	Z
eZd ZdS )EntryExitCountc           	      	   |                      |                                           }	 | j        j        }|j                            dd          }|j                            dd          }|j                            dd          }|j                            dd          }	t          dd          }
t          dd          }|st          d	d
g d          S |r<|                    t          j
        |d                                                    }n:|                    t          j                                                    d          }|r|                    |          }|r|                    |          }g }|
|k     rt          j        t          j                    |
          t          d          z   }|                                }|r|                    t          j        t          j
        |d                                          |
t           j                  t          j        t          j
        |d                                          |t           j                  d          }n|                    t          j        t          j                                                    |
t           j                  t          j        t          j                                                    |t           j                  d          }|                    |dd                              d                                          }|                    |dd                              d                                          }|                    |
                    d          dz   |                    d          z   ||d           t          j        t          j                    |
          t          d          z   }
|
                                }
|
|k     |rt          dd|d          S t          d	dg d          S # t,          $ r*}t          d	dt/          |          d          cY d }~S d }~ww xY w) Nr  r   r  r   r   r   r     Frt  rJ   r  r  T)r  r  )camera__organization__id)camera__location__idr  )minutes)tzinfo)created_at__gtecreated_at__lter  r4  )'camera__organization__organization_userry  r  rL  r  ry  -)durationentry_count
exit_countzEntry Exit count Successfull.rM  rI   )r>  r?  rW   rL   r   rM   r+   r   rP   r  r  r*   r  combiner  r)   r  r  rU  r   rv   r  rT   rU   )rV   rW   rX   rY   r   rL   r  r  r   r   rj  rk  duration_wise_countsr  duration_alertr  r  r^   s                     r=   rl   zEntryExitCount.list  s   ''(9(9(;(;<<H	_<$D%2667H!LLO!.22=!DDK -11,CCJ+//
B??HaJB{{H i5=Zdf g ghhh #??h>OPZ\f>g>g>l>l>n>n?oo#??'/|~~':':'<'<# +    W#??o?VV O#??+?NN#% x''#+DJLL*EE	Z\H]H]H]]#==?? %-__$,$4X5FzS]5^5^5c5c5e5egq  {C  {G  %H  %H  %H$,$4X5FzS]5^5^5c5c5e5ego  yA  yE  %F  %F  %F# &5 & &NN &.__(0(89L9L9N9NPZckco(p(p(p(0(89L9L9N9NPXaiam(n(n(n#' &5 & &N -33^bSZ59 4 ; ;;C8M;R;RSXSXSZSZ  ,22]aRX48 3 : ::B(=:Q:QRWRWRYRY  %++ * 3 3G < <S @ARARSZA[A[ [#.!+- -    &-djllJGG)\^J_J_J__
'__..
K x''N $ \4<[ey z z{{{5=MWY Z Z[[[ 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s+   B,Q
 M Q
 7Q
 

Q>Q93Q>9Q>N)r6   r7   r8   r   rm   rY  rO   rj   r   rj  r   r2   r   rl   r;   r<   r=   r  r    sU        )*}  ""H&3K_ K_ K_ K_ K_r<   r  c                   r    e Zd ZegZej                                                            d          Z	d Z
dS )QueueManagementAPIrL  c                    |                      |                                           }	 | j        j        }|                    d          st          ddd          S |j                            dd          }|j                            dd          }|j                            dd	          }|j                            d
d	          }	|j                            dd	          }
t          j	        
                    d          }|st          ddg d          S |
                    |          }|r;|
                    t          j        |d                                                    }|r|
                    |          }|	r|
                    |	          }|
r|
                    |
          }|r(|
                    |                                          }|r|                                                                }|
                    t#          |          t#          |          z  t#          |          z  t#          |          z  t#          |          z                                d          }|r,t'          |dd|i          }t          dd|j        d          S t          dd g d          S # t*          $ r*}t          dd!t-          |          d          cY d }~S d }~ww xY w)"Nzmyprofile.view_queuemanagementFr   rD   r   r   r   r  r   r  r  Tr	  rt  rJ   ,roi__camera__organization__organization_userr  r  ro  r  r  roi__camera__in)roi__roi_name__icontains)currunt_queue_count__icontains)average_waiting_time__icontains)&recomanded_staff_adjustment__icontains)action__icontainsrL  rW   rd  zQueue data Successfully.rM  rI   )r>  r?  rW   rL   rN   r   r   rM   rw  rO   rP   r  r  r*   rz  r   r   r   rU  QueueManagementSerializerrK   rT   rU   )rV   rW   rX   rY   r   rL   r   r   r  r  r  r  r   r^   s                 r=   rl   zQueueManagementAPI.list7  sF   ''(9(9(;(;<<@	_<$D==!ABB r5=o p pqqq -11,CCJ"/33HbAAL%2667H!LLO!.22=!DDK*..y!<<G n+++>>G i5=Zdf g ghhhVZ[[H  p#??h>OPZ\f>g>g>l>l>n>n?oo M!..O.LL E!...DD =!..G.<< Q#??W?EENNPP j+113399;;#??1+U+U+U-.P\-]-]-],^-.Q]-^-^-^,_ ./Xd-e-e-e,f ./<-P-P-P	,Q R R S[RZ[hRiRi	   \6xdU^`gThiii
"  4<V`j`o p pqqq5=MWY Z Z[[[ 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s1   2K  B;K  FK  -K   
K4
K/)K4/K4N)r6   r7   r8   r   rm   QueueManagementrO   rj   rU  r   rl   r;   r<   r=   r  r  3  sX        )*&**,,55mDDHB_ B_ B_ B_ B_r<   r  c                   z    e Zd ZegZej                                                            d          Z	e
ZeZd ZdS )HeatMappingAPIrL  c                 H   |                      |                                           }	 | j        j        }|                    d          st          ddd          S |j                            dd          }|j                            dd          }|j                            dd	          }|j                            d
d	          }	|j                            dd	          }
t          j	        
                    d          }|st          ddg d          S |
                    |          }|r;|
                    t          j        |d                                                    }|r|
                    |          }|	r|
                    |	          }|
r|
                    |
          }|
                    |                                          }|rO|                                                                }|
                    |                              d          }|r,t%          |dd|i          }t          dd|j        d          S t          ddg d          S # t(          $ r*}t          ddt+          |          d          cY d }~S d }~ww xY w)Nzmyprofile.view_heatmappingFr   rD   r   r   r   r  r   r  r  Tr	  rt  rJ   r  r  r  ro  r  r  r  )'roi__camera__area__area_name__icontainsrL  rW   rd  zHeat Map list successfully.zHeat Map list not found!rI   )r>  r?  rW   rL   rN   r   r   rM   rw  rO   rP   r  r  r*   rz  r   r   rU  HeatMappingSerializerrK   rT   rU   rV   rW   rX   rY   r   rL   r   r   r  r  r  r  r   r^   s                 r=   rl   zHeatMappingAPI.list  s   ''(9(9(;(;<<.	_<$D==!=>> r5=o p pqqq"/33HbAAL -11,CCJ%2667H!LLO!.22=!DDK*..y!<<G n+++>>G i5=Zdf g ghhhVZ[[H  p#??h>OPZ\f>g>g>l>l>n>n?oo M!..O.LL E!...DD =!..G.<<  AAJJLLH {+113399;;#??Ua?bbkklyzz f28$QZ\cPdeee
4<Ycmcr s sttt5=Wac d deee  	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s1   2I- B;I- EI- I- -
J!7JJ!J!N)r6   r7   r8   r   rm   HeatMappingrO   rj   rU  r   r  r   r2   r   rl   r;   r<   r=   r  r  {  s_        )*"&&((11-@@H,31_ 1_ 1_ 1_ 1_r<   r  c                   z    e Zd ZegZej                                                            d          Z	e
ZeZd ZdS )DemographicDetailsAPIrL  c                 L   |                      |                                           }	 | j        j        }|                    d          st          ddd          S |j                            dd          }|j                            dd          }|j                            dd	          }|j                            d
d	          }	|j                            dd	          }
t          j	        
                    d          }|st          ddg d          S |
                    |          }|r;|
                    t          j        |d                                                    }|r|
                    |          }|	r|
                    |	          }|
r|
                    |
          }|r(|
                    |                                          }|rO|                                                                }|
                    |                              d          }|r,t%          |dd|i          }t          dd|j        d          S t          ddg d          S # t(          $ r*}t          ddt+          |          d          cY d }~S d }~ww xY w)Nz!myprofile.view_demographicdetailsFr   rD   r   r   r   r  r   r  r  Tr	  rt  rJ   r  r  r  ro  r  r  r  )age_range__icontainsrL  rW   rd  z'Demographics details list successfully.z$Demographics details list not found!rI   )r>  r?  rW   rL   rN   r   r   rM   rw  rO   rP   r  r  r*   rz  r   r   rU  DemographicDetailsSerializerrK   rT   rU   r  s                 r=   rl   zDemographicDetailsAPI.list  s   ''(9(9(;(;<<-	_<$D==!DEE r5=o p pqqq"/33HbAAL -11,CCJ%2667H!LLO!.22=!DDK*..y!<<G n+++>>G i5=Zdf g ghhhVZ[[H  p#??h>OPZ\f>g>g>l>l>n>n?oo M!..O.LL E!...DD =!..G.<< Q#??W?EENNPP h+113399;;#??,?OOXXYfgg r9(XacjWklll
4<eoyo~    A  A  A5=cmo p pqqq 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s1   2I/ B;I/ EI/ I/ /
J#9JJ#J#N)r6   r7   r8   r   rm   DemographicDetailsrO   rj   rU  r   r  r   r2   r   rl   r;   r<   r=   r  r    s_        )*!)--//88GGH33/_ /_ /_ /_ /_r<   r  c                   z    e Zd ZegZej                                                            d          Z	e
ZeZd ZdS )
ParkingAPIrL  c                 *   |                      |                                           }	 | j        j        }|                    d          st          ddd          S |j                            dd          }|j                            dd          }|j                            d	d          }|j                            d
d          }	t          j	        
                    d          }
|st          ddg d          S |
                    |          }|r|
                    |          }|r|

                    |          }
|r|

                    |          }
|	r|

                    |	          }
|
r(|
                    |
                                          }|r,t          |dd|i          }t          dd|j        d          S t          ddg d          S # t          $ r*}t          ddt          |          d          cY d }~S d }~ww xY w)Nzmyprofile.view_parkingFr   rD   r   r   r  r   r  r  Tr	  rt  rJ   r  r  ro  r  r  r  rW   rd  z"Parking details list successfully.zParking details list not found!rI   )r>  r?  rW   rL   rN   r   r   rM   rw  rO   rP   rz  ParkingSerializerrK   rT   rU   )rV   rW   rX   rY   r   rL   r   r  r  r  r  r   r^   s                r=   rl   zParkingAPI.list  sX   ''(9(9(;(;<<(	_<$D==!9:: r5=o p pqqq -11,CCJ%2667H!LLO!.22=!DDK*..y!<<G n+++>>G i5=Zdf g ghhhVZ[[H  I#??Z?HH M!..O.LL E!...DD =!..G.<< Q#??W?EENNPP m.xdYX_L`aaa
4<`jtjy z z{{{5=^hj k klll 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s1   2G B G =CG G 
H(HHHN)r6   r7   r8   r   rm   ParkingrO   rj   rU  r   r  r   r2   r   rl   r;   r<   r=   r  r    s^        )*""$$--m<<H(3*_ *_ *_ *_ *_r<   r  c                       e Zd Zd ZdS )AlertImageUploadViewc                    t          |j                  }|                                r|j        d         }t	          t
          j                  dz   |j        z   }t          j	        
                    |          }t          j	                            |          st          j        |           t          |d          5 }|                                D ]}	|                    |	           	 d d d            n# 1 swxY w Y   t!          d|dt"          j                  S t!          |j        t"          j                  S )N)rK   imagez/alert_images/zwb+zImage uploaded successfully)rE   r  r   )ImageUploadSerializerrK   r   validated_datarU   r   r  rA   r  r  dirnamer   makedirsr  chunksr  r   r   HTTP_201_CREATEDr   rM  )
rV   rW   rX   rY   r   r  	save_path	directorydestinationchunks
             r=   rC  zAlertImageUploadView.post-  s^   *===
   	{-g6E H/003CCejPI	22I7>>),, 'I&&&i'' -;"\\^^ - -E%%e,,,,-- - - - - - - - - - - - - - - (EyYYbhbyzzzz
)&2MNNNNs   =-C77C;>C;Nr  r;   r<   r=   r  r  ,  s(        O O O O Or<   r  c                       e Zd ZegZd ZdS )DashboardAPIc                    	 | j         j        }|                    d          r|                    d          st          ddd          S |j                            dd          }|j                            dd          }|r|rt          j        |d	                                          }t          j        |d	                                          }||k    rt          dd
d          S t          j
                            ||                                          }n3t          j
                            |d                                          }t          j
                            |d                                          }t          j
                            |                                          }	t          j
                            |                                          }
|||	|
d}t          j
                            |d                              d          }|r|r|}|}nzt          j                                                    }|                    d          }|                    d          t'          d          z   }|t'          |j                  z
  }g }|t'          d          z
  |k    r|}||k    rvt          j
                            |                                          }|                    |                    d          |d           |t'          d          z  }||k    vn^|t'          d          z
  |k    r|                    d          }||k    r|                    d          t'          d          z   }|t'          |j                  z
  }|                    |j        |j                                                  }|                    |                    d          |d           |t'          d          z   }||k    nt|}||k    rl|                    |                                          }|                    |                    d	          |d           |t'          d          z  }||k    lt          j
                            |d          }|r6|r4||k    r|                    |          }n|                    ||          }i }|D ]`}t3          |rB|                    |j                                                  |                                z  nddz            ||j        <   a|r|r.|r,|                    |||                               d          }n|}|                    |d!                              d          d d         }t7          |dd"|i#          }|j        }ng }t          j
                            |          }t;          |d$          }|||||j        d%}t          dd&|d'          S # t<          $ r*}t          dd(t?          |          d'          cY d }~S d }~ww xY w))Nz%myprofile.view_dashboardmanufacturingzmyprofile.view_dashboardretailFr   rD   r   r   r   r  z(Start date should be less then end date.r  Tr  r  r  rL  r
   r  r  r  r     r  r  r  r  r  r  r  r   r  )r  r  r  )r  r  rW   rd  rg   )!alert_event_camera_location_countr  undetected_event_percentagetop_four_alertscamera_listz Dashboard data get successfully.rJ   rI   ) rW   rL   rN   r   r   rM   r  r  r*   rY  rO   rP   r   r  rw  rs  rU  r  r  r)   r  rv   r  r  r  r  r  rj  rK   r  rT   rU   )rV   rW   rX   rY   rL   r   r   r  r  r  r  
count_datar  start_date_graphend_date_graphr  r  r  r  r  r  event_percentage_datar  top_alert_obj
top_alerts	top_alerttop_alert_datar  r  rK   r^   s                                  r=   rl   zDashboardAPI.listC  s   n	_<$D==!HII rQUQ^Q^_  RA  RA r5=o p pqqq -11,CCJ+//
B??H th t%.z:FFKKMM
#,XzBBGGII((#uAk$l$lmmm#m22:ow2xx~~  A  A#m22UYfj2kkqqss%-44W[hl4mmssuuK!>00SW0XX^^``L%-44W[4\\bbddN  +* ,"0	 J ,,t`d,eenno|}}I Oh O#- !)'|~~2244#/#7#7A#7#>#> -55"5==	q@Q@Q@QQ
",yjn/M/M/M"M!	q 1 1 115EEE/"n44"'-"6"6"6"U"U"["["]"]K$++ , 5 5d ; ;!,- -   
 !I1$5$5$55L #n44  )"4"4"447GGG/77A7>>"n44!-!5!5"!5!=!=	q@Q@Q@Q!QJ(2YJN5S5S5S(S%"+"2"2)5):*6*< #3 # # egg   %++ , 5 5d ; ;!,- -   
 $5ya7H7H7H#HL #n44  0"n44"+"2"2L"2"Q"Q"W"W"Y"YK$++ , 5 5j A A!,- -   
 !I1$5$5$55L #n44 )077Z^ko7ppN wh w)) ) 0 0J 0 O OII ) 0 0mu 0 v vI$&!' z z<A  dm  Dt9CSCSrw  sECS  DF  DF  DL  DL  DN  DN  OX  O^  O^  O`  O`  D`  D`  st  vy  Cy  =z  =z%e&899 	$ .( .$-$4$4_c  ~H  bj$4  %k  %k  %t  %t  uB  %C  %CMM$-M*11\`mq1rr{{  }J  K  K  LN  MN  LN  O
+JD)U\I]^^^	!*!#^**T*RRF*6t<<<K 5?#3.C"0). D t8Zdhiijjj 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s,   AX0 
BX0 *UX0 0
Y$:YY$Y$Nrz   r;   r<   r=   r$  r$  @  s6        )*o_ o_ o_ o_ o_r<   r$  c                   z    e Zd ZegZej                                                            d          Z	e
ZeZd ZdS )AlertForPPEApiViewrL  c                    |                      |                                           }	 | j        j        }|                    d          st          ddd          S |j                            dd          }|j                            dd          }|j                            dd          }|j                            d	d          }	|j                            d
d          }
|j                            dd          }|j                            dd          }|j                            dd          }|j                            dd          }|j                            dd          }|}|st          ddg d          S |r|r||k    rt          ddd          S d}t          j	        ||          
                                }t          j	        ||          
                                }||k    r*|                    |                              d          }n|                    ||                              d          }n|rd}t          j	        ||          
                                }t          |t                    r*|                    |                              d          }n t          ddt          |          d          S |r|                    |          }|	r(|                    |	                                          }|
r(|                    |
                                          }|r(|                    |                                          }|r(|                    |                                          }|r(|                    |                                          }|r(|                    |                                          }|st          ddg d          S |r|                                                                }|                    t%          |          t%          |           z  t%          |!          z  t%          |"          z  t%          |#          z  t%          |$          z                                d          }|r_|                     |          }g }|l|D ]h}ddg d%}t)          |j                                        d&d'|i(          }|j        }|j        |d)<   |j        |d*<   ||d+<   |                    |           ink|D ]h}ddg d%}t)          |j                                        d&d'|i(          }|j        }|j        |d)<   |j        |d*<   ||d+<   |                    |           i|rZ|                                }t9          |j                            d,d-                    }t          d&d.||z   d/z
  |z  ||d0          S t          d&dg d          S t          d&d1g d          S # t<          $ r*}t          dd2t          |          d          cY d }~S d }~ww xY w)3Nz"myprofile.view_alertpersontrackingFr   rD   r   r   r   r   r  r  r  r  r  rZ  	person_idzNo data found.rJ   r  r  r  rL  r  r  )tracking_id)alerts__organization__id)alerts__location__id)alerts__area__id)alerts__camera__id)alerts__camera_events__id) alerts__alert_message__icontainsrM  )%alerts__location__loc_name__icontains).alerts__camera_events__camera_event__icontains)&alerts__camera__camera_name__icontains))alerts__organization__org_name__icontainsr  )rc   r7  r  TrW   rd  rc   r7  r  r4   r3   r  r
   r   r  rI   )r>  r?  rW   rL   rN   r   r   rM   r  r  r*   rP   rU  r
  rU   rz  r   r   r   r   rj  r  rj   rK   rc   r7  rv   r   r   rt   rT   )rV   rW   rX   rY   r   rL   r   r   r   r  r  r  r  r  rZ  r6  ppe_alert_objr  r^   r   r6  rK   response_objr   
alert_datar   r   s                              r=   rl   zAlertForPPEApiView.list  s2   ''(9(9(;(;<<g	_<$D==!EFF r5=o p pqqq"/33HbAAL -11,CCJ+//
B??H%2667H"MMO!.22="EEK*..y"==G,00bAAI+//0A"EEH#044_RHHM,00R@@I$M ! [5=MVX Y YZZZ vh v((#uAj$k$klll( &.z;GGLLNN
#,X{CCHHJJ))$1$8$8*$8$U$U$^$^_l$m$mMM$1$8$8zqy$8$z$z  %D  %D  ER  %S  %SMM v(%.z;GGLLNN
j$// v$1$8$8*$8$U$U$^$^_l$m$mMM#uAempqrmsms$t$tuuu N - 4 49 4 M M l - 4 4P_ 4 ` ` i i k k d - 4 4K 4 X X a a c c \ - 4 4 4 P P Y Y [ [ ` - 4 4) 4 T T ] ] _ _ f - 4 4QY 4 Z Z c c e e r - 4 4Xe 4 f f o o q q  Y5<LTV W WXXX n+113399;; - 4 4QZf5g5g5g-.Wc-d-d-d6e-.`l-m-m-m6n ./Xd-e-e-e6f ./[g-h-h-h	6i
 ./|-T-T-T6U !V !V
 W_V^_lVmVm    X--m<< "# $ ; ;-/rB'O'O%4T[__5F5FT\egn[o%p%p%p
%/_
-1WT*6:6F]31;X.%,,\::::; !. ; ;-/rB'O'O%4T[__5F5FT\egn[o%p%p%p
%/_
-1WT*6:6F]31;X.%,,\::::  	\)//11ER @ @AAE#t?X385=13D2N,1,9%; %; < < <
 $t?OWY$Z$Z[[[4;KSU V VWWW 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_sK   2X# D$X# X# D4X# D(X# ;HX# =X# X# #
Y-YYYN)r6   r7   r8   r   rm   AlertPersonTrackingrO   rj   rU  r   AlertPersonTrackingSerializerr   r2   r   rl   r;   r<   r=   r4  r4    sd        )*"*..0099-HHH43i_ i_ i_ i_ i_r<   r4  c                       e Zd ZegZdZd ZdS )IdBasedAlertsApialert_idc                    	 | j         j        }| j                            d          }t          j                            |                                          }|st          ddg d          S t          |d|i          }t          dd	|j
        d          S # t          $ r*}t          dd
t          |          d          cY d }~S d }~ww xY wNrI  rb   FzAlert not found!rJ   rW   r   TzAlert data successfully.rI   )rW   rL   rY   rM   rY  rO   rP   rQ   r   rj  rK   rT   rU   	rV   rW   rX   rY   rL   rI  r  alert_serialized_objr^   s	            r=   rl   zIdBasedAlertsApi.list)  s    		_<$D{z22H,,(,;;AACCI ^5=OY[ \ \]]]#29iQXEY#Z#Z#Z t8R\p\uvvwww 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_$   A,B /*B 
C$C	C	CNr6   r7   r8   r   rm   r  rl   r;   r<   r=   rH  rH  %  6        )*L
_ 
_ 
_ 
_ 
_r<   rH  c                       e Zd ZegZdZd ZdS )IdBasedPPEAlertsApirI  c                    	 | j         j        }| j                            d          }t          j                            |                                          }|st          ddg d          S t          |d|i          }t          dd	|j
        d          S # t          $ r*}t          dd
t          |          d          cY d }~S d }~ww xY wrK  )rW   rL   rY   rM   rE  rO   rP   rQ   r   rF  rK   rT   rU   rL  s	            r=   rl   zIdBasedPPEAlertsApi.list9  s    		_<$D{z22H+3:::IIOOQQI ^5=OY[ \ \]]]#@T]_fSg#h#h#h t8R\p\uvvwww 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_rN  NrO  r;   r<   r=   rR  rR  5  rP  r<   rR  c                       e Zd ZegZdZd ZdS )CameraIDForROIr  c                    	 | j         j        }| j                            d          }t          j                            |                                          }|st          ddg d          S t          j
        |j                  }|                                \  }}	|                                 |st          ddd          S |	j        d d         \  }
}t          j                            |	          }t!          |d
d|i          }d}t"          j                            t(          j        d|          }t          j        ||	           t"          j                            |t(          j        dz             }t"          j                            t(          j        t(          j        z   dz   |          }dd||j        d}t          d
d|d          S # t6          $ r*}t          ddt9          |          d          cY d }~S d }~ww xY w)Nr  rb   FzCamera not found!rJ   zCamera Not woring.rD   rP  r  TrW   rd  zrtsp_temp_image.jpgrtsp_frame_imagesz/rtsp_frame_imagesr  i  )r  r  r  roi_datazRTSP Image successfully.rI   )rW   rL   rY   rM   rw  rO   rP   rQ   r   r  r  r  r%  r7  r,  ro  rp  r  r  r  r   r  imwriterelpathr  	MEDIA_URLrK   rT   rU   )rV   rW   rX   rY   rL   r  r  r:  r<  r  r  r  roisrX  r  r  relative_path	image_urlrK   r^   s                       r=   rl   zCameraIDForROI.listK  s   	_<$D44I..I.>>DDFFJ _5=PZ\ ] ]^^^":#677CJCKKMMM S%<P Q QRRR!KOMFE;%%9%==D$T	7?STTTH-IX%8:MyYYIK	5)))GOOIx7JK_7_``MX\(2D%DEX%XZghhI"#=	 D t8R\`aabbb 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s,   A,G /AG DG 
H	H>H	H	NrO  r;   r<   r=   rU  rU  G  s6        )*L_ _ _ _ _r<   rU  c                       e Zd Zd ZdS )DeleteLogApic                    	 | j         j        }|j                            d          |j                            d          |j                            d          }|j                            d          }|                    d          st          ddd          S t          j                            t          j        	                    t                    d	          }t          j                            |d
          }t          j                            |          rVt          |d          5 }		 t          j        |	          }
n# t          j        $ r g }
Y nw xY wd d d            n# 1 swxY w Y   ng }
r_r]	 t!          j        d          t!          j        d          fd|
D             }
n"# t$          $ r t          ddd          cY S w xY wg }|r[	 t'          |          }|
D ]#}|d         |k    r|                    |           $|}
n"# t$          $ r t          ddd          cY S w xY wg }|r(|
D ]#}|d         |k    r|                    |           $|}
t+          |
d d          }
t'          |j                            dd                    }t'          |j                            dd                    }t-          |
          }|dz
  |z  }||z   }|
||         }|rt          dd||z   dz
  |z  ||d          S t          ddg d          S # t.          $ r*}t          ddt1          |          d          cY d }~S d }~ww xY w)Nr   r   rD  r   zadmin.view_logentryFr   rD   logszapi_logs/delete_log.jsonr  r  c                 v    g | ]5}t          j        |d          dd         d          cxk    rk    0n n|6S )r*   Nr3   r  r  r  )r   logr   r   s     r=   r   z%DeleteLogApi.list.<locals>.<listcomp>  s`     # # # #%):3v;ss;KZ)X)Xdddd\dddddd dddr<   zEInvalid date format. Use YYYY-MM-DD for both start_date and end_date.z)Invalid status code. It must be a number.c                 8    t          j        | d         d          S )Nr*   z%Y-%m-%d %H:%M:%S.%frd  )r  s    r=   r  z#DeleteLogApi.list.<locals>.<lambda>  s    8;LQvYXn;o;o r<   T)r  reverser   r
   r4   r3   zDelete Log data successfully.r   zNo Log Founds.rJ   rI   )rW   rL   rt   rM   rN   r   r  r  r  r  __file__r   r  r>  loadJSONDecodeErrorr  r  r  r   rv   sortedlenrT   rU   )rV   rW   rX   rY   rL   rD  
status_strlog_dirdelete_log_filefdelete_logsfilterd_listre  r   r   r   startendpaginated_logsr^   r   r   s                       @@r=   rl   zDeleteLogApi.listn  s\   J	_<$D 66J{z22H!+//-88K 22J==!677 r5=o p pqqqgll27??8#<#<fEEG gll74NOOOw~~o.. !/3// )1)&*ill/ ) ) )&()) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ! Kh KK!)!2:z!J!JJ'0:FFH# # # # #'2# # #KK " K K K#u  BI  %J  %J  K  K  K  K  KK L oo"%k"2"2K* 5 5}-<<(//444".KK! o o o#uAl$m$mnnnnnoL +& 1 1C8}
22$++C000* 1o1ox|}}}Kw{vq1122DR8899E$$E AX&E%-C(s3N 	\">#(5=1#4">!*! !     5=MWY Z Z[[[ 	_ 	_ 	_u8NVYZ[V\V\]]^^^^^^^^	_s   BL  BL  0E*2EE*EE*EE*L  *E..L  1E.2
L  =9F7 6L  7GL  GL  7H L  H52L  4H55CL  L   
M*M	MMNr  r;   r<   r=   r`  r`  m  s-        K_ K_ K_ K_ K_r<   r`  )r  r  )rest_framework.responser   rest_framework.permissionsr   r   r   rest_framework_simplejwt.tokensr   django.contrib.auth.modelsr   rest_framework.paginationr	   serializersrest_frameworkr   r   r   rest_framework.viewsr   django.contrib.authr   django.contrib.auth.hashersr   r   "django.contrib.contenttypes.modelsr   django.db.modelsr   modelsr   r   r   numpyr^  django.httpr   rB  django.core.files.uploadedfiler   celeryr   django.core.managementr   re  r   reportlab.lib.pagesizesr   reportlab.platypusr   r   r    reportlab.lib.stylesr!   r"   reportlab.libr#   reportlab.platypus.tablesr$   r%   rB  r&   r  r'   r(   r  r)   r*   r+   collectionsr,   django.core.exceptionsr-   myprofile.filterfunctionr.   r/   decimalr0   r2   ModelViewSetr?   ro   r|   ViewSetr   r   r   r   r  r  r  r  r:  rC  rI  rl  r  r  r  r  r  r  r  r  r  r  r  r  r  r  	django.dbr  r  r!  django.shortcutsr&  r(  r-  apprN  rc  r|  r  r  r  r  r  r  r  rY  django.core.mailr   r  django.db.models.functionsr  django.utilsr  r  rV  rX  pandasr  rh  django_filters.rest_frameworkri  rj  rw  reportlab.pdfgenrk  	FilterSetrm  ListAPIViewr|  r  tzr  r  django.core.files.storager  r  r  r  
subprocessrest_framework.decoratorsr  r  r  r  django.confr   r  r  r  rw  r
  r  	mediapiper   django.core.files.baser  r!  r"  r  r  rA  rC  rq  rs  r  Nettyfy_visnx.settingsr  r  r  r  r  r  r  r  r  r  r  r  r$  r4  rH  rR  tempfilerU  r>  r`  r;   r<   r=   <module>r     s}   , , , , , , K K K K K K K K K K 8 8 8 8 8 8 , , , , , , : : : : : :     8 8 8 8 8 8 8 8 8 8 ( ( ( ( ( ( , , , , , , 6 6 6 6 6 6 1 1 1 1 1 1 : : : : : :           P P P P P P P P P P     $ $ $ $ $ $  ? ? ? ? ? ?       / / / / / / 



 $ $ $ $ $ $ * * * * * * C C C C C C C C C C D D D D D D D D             7 7 7 7 7 7 7 7             " " " " " " * * * * * * * * * * $ # # # # # 5 5 5 5 5 5 3 3 3 3 3 3 " " " " " "          #7   
;_ ;_ ;_ ;_ ;_h+ ;_ ;_ ;_z_ _ _ _ _x, _ _ _<,_ ,_ ,_ ,_ ,_8#8 ,_ ,_ ,_^B_ B_ B_ B_ B_) B_ B_ B_z%U %U %U %U %Ux4 %U %U %UPE_ E_ E_ E_ E_x, E_ E_ E_N_ _ _ _ _8( _ _ _2._ ._ ._ ._ ._X* ._ ._ ._`Rb Rb Rb Rb RbX* Rb Rb Rbh_ _ _ _ _& _ _ _&Kb Kb Kb Kb KbH) Kb Kb KbZ/b /b /b /b /bh+ /b /b /bb_ _ _ _ _H1 _ _ _>q_ q_ q_ q_ q_X2 q_ q_ q_f`_ `_ `_ `_ `_X2 `_ `_ `_D_ _ _ _ _(/ _ _ _.I_ I_ I_ I_ I_- I_ I_ I_VN_ N_ N_ N_ N_. N_ N_ N_bt_ t_ t_ t_ t_. t_ t_ t_l_ _ _ _ _h+ _ _ _@R_ R_ R_ R_ R_X* R_ R_ R_jn_ n_ n_ n_ n_X* n_ n_ n_b!_ !_ !_ !_ !_(' !_ !_ !_Hs_ s_ s_ s_ s_x, s_ s_ s_lv_ v_ v_ v_ v_- v_ v_ v_p6_ 6_ 6_ 6_ 6_H) 6_ 6_ 6_p_ _ _ _ _h&; _ _ _4_ _ _ _ _h3 _ _ _:"b "b "b "b "bx, "b "b "bH " ! ! ! ! !\b \b \b \b \bH1 \b \b \bH,b ,b ,b ,b ,b. ,b ,b ,b\ / . . . . .8b 8b 8b 8b 8b 5 8b 8b 8bH_ _ _ _ _(/ _ _ _B f[!;E_```; ; ; ; ;- ; ; ;~lb lb lb lb lbH) lb lb lb`dj dj dj dj dj& dj dj djN% % % % %80 % % %*U U U U UG U U UD_ _ _ _ _H,A _ _ _D8 8 8 8 8x4 8 8 8.F_ F_ F_ F_ F_x'< F_ F_ F_j&_ &_ &_ &_ &_H$9 &_ &_ &_PU' U' U' U' U'H,A U' U' U'r 
			 $ $ $ $ $ $       # # # # # # 6 6 6 6 6 6       ) ) ) ) ) )T T T T T- T T Tn 
			 % % % % % % % % 0 0 0 0 0 0 $ $ $ $ $ $ ! ! ! ! ! ! # # # # # # 6 6 6 6 6 6             * * * * * * V V V V V V V V V V V V V V D D D D D D D DW W W W Wh+ W W Wt 


 $ $ $ $ $ $ ( ( ( ( ( ( 6 6 6 6 6 6 % % % % % % % % < < < < < < < <5 5 5 5 5h+ 5 5 5p 


     # # # # # # 6 6 6 6 6 6 $ $ $ $ $ $ = = = = = =       ( ( ( ( ( (     * * * * * * # # # # # #      \ \ \ \ \.* \ \ \N N N N Nh* N N Nb(_ (_ (_ (_ (_80 (_ (_ (_T ( ' ' ' ' '_` _` _` _` _`8( _` _` _`B    J` J` J` J` J`h+ J` J` J`p 6 5 5 5 5 5t8c 8c 8c 8c 8c)> 8c 8c 8cv=c =c =c =c =cX%: =c =c =c@8c 8c 8c 8c 8cX-B 8c 8c 8cx     $ $ $ $ $ $     $ $ $ $ $ $@ " ! ! ! ! ! . . . . . . , , , , , , 	6(r r r, 
			 . . . . . . , , , , , , ! ! ! ! ! !            	5'q q q 8 7 7 7 7 7 , , , , , , ! ! ! ! ! ! ( ( ( ( ( ( 				                 ( ( ( ( ( ( , , , , , , ! ! ! ! ! ! . . . . . . . . . . . . . . . . 



     . . . . . .     
,
   * 


    1 1 1l&c &c &c &c &c7 &c &c &cV  <!c !c !c !c !c7 !c !c !cJH H HT , + + + + +"c "c "c "c "c "c "c "cJ9 9 9xc c c c cW c c cB ( ' ' ' ' ' ' ' -y -y -y -y -y8( -y -y -y^Q_ Q_ Q_ Q_ Q_X* Q_ Q_ Q_fF_ F_ F_ F_ F_. F_ F_ F_P7_ 7_ 7_ 7_ 7_X* 7_ 7_ 7_r5_ 5_ 5_ 5_ 5_H1 5_ 5_ 5_n0_ 0_ 0_ 0_ 0_& 0_ 0_ 0_BO O O O O7 O O O(r_ r_ r_ r_ r_8( r_ r_ r_ho_ o_ o_ o_ o_. o_ o_ o_b_ _ _ _ _x, _ _ _ _ _ _ _ _(/ _ _ _  #_ #_ #_ #_ #_X* #_ #_ #_J L_ L_ L_ L_ L_8( L_ L_ L_ L_ L_r<   