o
    Qd                     @   s  d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlT 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T d dlT 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Zd dlZd dl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&m'Z' d dl(m)Z) d dlm*Z* dd Z+G dd deeZ,G dd deeZ-G dd deeZ.dd Z/d d! Z0dS )"    )request)redirectrender)View)LoginRequiredMixin)get_company_data)*)User)Count)ExtractMonth)r   )	mark_safeN)escape)settings)HttpResponse)datetime)build)MediaFileUpload)service_account)contextmanager)DatabaseBackupc                 C   s2   g d}t jj|}t jj}t j| ||d}|S )z
    Renders the CKEditor-generated HTML to normal, sanitized HTML.

    Parameters:
        ckeditor_html (str): The HTML content generated by CKEditor.

    Returns:
        str: Sanitized HTML representation of the CKEditor content.
    )ph1h2h3h4h5h6)tags
attributes)bleach	sanitizerALLOWED_TAGSunionALLOWED_ATTRIBUTESclean)ckeditor_htmlcustom_tagsallowed_tagsallowed_attrssanitized_html r*   ,/var/www/html/prime-uav/Admin/nazox/views.pyrender_ckeditor_html    s
   r,   c                   @      e Zd Zdd ZdS )DashboardViewc           7   	   C   sR  g }g }g }g }g }g }d}d}	d}
d}d}d}t jj|jjd}tjj|jjddd}tjj|jjdd}|jjst jj|jjdddd	d
ddd	d}|
 d ur}|d d dkrfd}n|d d dkrqd}nd}|D ]P}|dt|d	  7 }|d
 d kr|dt|d
  7 }|d d kr|dt|d  7 }|d d kr|dt|d  7 }|d d kr|dt|d  7 }|d7 }qu|d d }|d7 }|r|d d s|d d rL|d d r
|d d r
dt|d d  d t|d d  d d | d }nH|d d s|d d rK|d d r;|d d d kr;d t|d d  d! d | d }nd"t|d d  d! d | }nd#| d }tj|}d$d% |D }|D ]\}}i }||d&< ||d'< || qa|r|d d s|d d r|d d r|d d rd(t|d d  d t|d d  d d | d) }nJ|d d s|d d r|d d r|d d d krd*t|d d  d! d | d) }nd+t|d d  d! d | d) }nd,| d) }tj|}|rtd-d. |D nd}|r|d d s!|d d r|d d rL|d d rLdt|d d  d t|d d  d d | d/ }nJ|d d sZ|d d r|d d r}|d d d kr}d t|d d  d! d | d/ }nd"t|d d  d! d | d/ }nd#| d/ }tj|}d0d% |D }|D ]\}}}i }||d1< ||d&< ||d'< || q|r|d d s|d d r?|d d r|d d rd(t|d d  d t|d d  d d | d2 }nJ|d d s	|d d r>|d d r,|d d d kr,d*t|d d  d! d | d2 }nd+t|d d  d! d | d2 }nd,| d2 }tj|}|rWtd3d. |D nd}	|rc|d d sj|d d r|d d r|d d rdt|d d  d t|d d  d d | d4 } nJ|d d s|d d r|d d r|d d d krd t|d d  d! d | d4 } nd"t|d d  d! d | d4 } nd#| d4 } tj| }!d5d% |!D }"|"D ]\}}}i }||d1< ||d&< ||d'< || q|r|d d s|d d r|d d rD|d d rDd(t|d d  d t|d d  d d | d6 }#nJ|d d sR|d d r|d d ru|d d d krud*t|d d  d! d | d6 }#nd+t|d d  d! d | d6 }#nd7| d8 }#tj|#}|rtd9d. |D nd}
|r|d d s|d d r"|d d r|d d rdt|d d  d t|d d  d d | d: }$nJ|d d s|d d r!|d d r|d d d krd t|d d  d! d | d: }$nd"t|d d  d! d | d: }$nd#| d: }$tj|$}%d;d% |%D }&|&D ]\}}}i }||d1< ||d&< ||d'< || q7|r[|d d sb|d d r|d d r|d d rd(t|d d  d t|d d  d d | d< }'nJ|d d s|d d r|d d r|d d d krd*t|d d  d! d | d< }'nd+t|d d  d! d | d< }'nd7| d= }'tj|'}|rtd>d. |D nd}|r|d d s|d d rk|d d r'|d d r'dt|d d  d t|d d  d d | d? }(nJ|d d s5|d d rj|d d rX|d d d krXd t|d d  d! d | d? }(nd"t|d d  d! d | d? }(nd#| d@ }(tj|(})dAd% |)D }*|*D ]\}}}i }||d1< ||d&< ||d'< || q|r|d d s|d d r|d d r|d d rd(t|d d  d t|d d  d d | dB }+nJ|d d s|d d r|d d r|d d d krd*t|d d  d! d | dB }+nd+t|d d  d! d | dB }+nd7| dC }+tj|+}|r2tdDd. |D nd}|r>|d d sE|d d r|d d rp|d d rpdt|d d  d t|d d  d d | dE },nJ|d d s~|d d r|d d r|d d d krd t|d d  d! d | dE },nd"t|d d  d! d | dE },ndF| dG },tj|,}-dHd% |-D }.|.D ]\}}}i }||d1< ||d&< ||d'< || q|r|d d s|d d rc|d d r|d d rd(t|d d  d t|d d  d d | dI }/nJ|d d s-|d d rb|d d rP|d d d krPd*t|d d  d! d | dI }/nd+t|d d  d! d | dI }/nd7| dJ }/tj|/}|r{tdKd. |D nd}ntjjtdLdMdNjtddO	dN}dPd% |D }|D ]\}}i }||d&< ||d'< || qdQ}tj|}|rtdRd. |D nd}dS}tj|}dTd% |D }|D ]\}}}i }||d1< ||d&< ||d'< || qdU}tj|}|	rtdVd. |D nd}	dW} tj| }!dXd% |!D }"|"D ]\}}}i }||d1< ||d&< ||d'< || 	qdY}#tj|#}|	rHtdZd. |D nd}
d[}$tj|$}%d\d% |%D }&|&D ]\}}}i }||d1< ||d&< ||d'< || 	q[d]}'tj|'}|	rtd^d. |D nd}d_}(tj|(})d`d% |)D }*|*D ]\}}}i }||d1< ||d&< ||d'< || 	qda}+tj|+}|	rtdbd. |D nd}dc},tj|,}-ddd% |-D }.|.D ]\}}}i }||d1< ||d&< ||d'< || 	qde}/tj|/}|
rtdfd. |D nd}|}0|0dk
r|	|0 dg nd}1|0dk
r'|
|0 dg nd}2|0dk
r4||0 dg nd}3|0dk
rA||0 dg nd}4|0dk
rN||0 dg nd}5i }6dh|6di< dj|6dk< ||6dl< |	|6dm< |
|6dn< ||6do< ||6dp< ||6dq< |1|6dr< |2|6ds< |3|6dt< |4|6du< |5|6dv< t |6dw< ||6dx< ||6dy< ||6dz< ||6d{< ||6d|< ||6d}< t|d~|6S )Nr   )user	from_dateto_date)id
groups__idr2   user_idstate_iddistrict_idcity_idarea_id
subarea_id   zstatus_id IN (1, 2, 4)  AND (   zstatus_id IN (2,3,5)  AND (z 1 AND (z(state_id_id = z AND district_id_id = z AND city_id_id = z AND area_id_id = z AND subarea_id_id = z) OR)zSELECT id, EXTRACT(MONTH FROM image_date) AS image_month, COUNT(id) AS total_count FROM dashboard_imagemaster WHERE 1 AND ( image_date <= 'z') AND (image_date >= 'z')z AND z. GROUP BY image_month, id ORDER BY image_monthzSELECT id, EXTRACT(MONTH FROM image_date) AS image_month, COUNT(id) AS total_count FROM dashboard_imagemaster WHERE image_date >= ''zSELECT id, EXTRACT(MONTH FROM image_date) AS image_month, COUNT(id) AS total_count FROM dashboard_imagemaster WHERE  image_date <= 'ztSELECT id, EXTRACT(MONTH FROM image_date) AS image_month, COUNT(id) AS total_count FROM dashboard_imagemaster WHERE c                 S   s   g | ]}|j |jfqS r*   image_monthtotal_count.0datar*   r*   r+   
<listcomp>w   s    z%DashboardView.get.<locals>.<listcomp>Monthcountz]SELECT id, COUNT(id) AS total_count FROM dashboard_imagemaster WHERE  1 AND ( image_date <= 'zGROUP BY idzTSELECT id, COUNT(id) AS total_count FROM dashboard_imagemaster WHERE image_date >= 'zUSELECT id, COUNT(id) AS total_count FROM dashboard_imagemaster WHERE  image_date <= 'zFSELECT id, COUNT(id) AS total_count FROM dashboard_imagemaster WHERE  c                 s       | ]}|j V  qd S NrA   rC   imager*   r*   r+   	<genexpr>       z$DashboardView.get.<locals>.<genexpr>zB AND status_id = '1' GROUP BY image_month, id ORDER BY image_monthc                 S      g | ]
}|j |j|jfqS r*   r2   r@   rA   rB   r*   r*   r+   rE          IDzAND (status_id = 1) GROUP BY idc                 s   rH   rI   rJ   rK   r*   r*   r+   rM      rN   zB AND (status_id = 4) GROUP BY image_month, id ORDER BY image_monthc                 S   rO   r*   rP   rB   r*   r*   r+   rE      rQ   zAND (status_id = 4) GROUP BY idzESELECT id, COUNT(id) AS total_count FROM dashboard_imagemaster WHERE z! AND (status_id = 4 ) GROUP BY idc                 s   rH   rI   rJ   rK   r*   r*   r+   rM      rN   zB AND (status_id = 2) GROUP BY image_month, id ORDER BY image_monthc                 S   rO   r*   rP   rB   r*   r*   r+   rE      rQ   zAND (status_id = 2) GROUP BY idzAND (status_id = 2 )GROUP BY idc                 s   rH   rI   rJ   rK   r*   r*   r+   rM     rN   zB AND (status_id = 5) GROUP BY image_month, id ORDER BY image_monthzAAND (status_id = 5) GROUP BY image_month, id ORDER BY image_monthc                 S   rO   r*   rP   rB   r*   r*   r+   rE   &  rQ   zAND (status_id = 5) GROUP BY idzAND (status_id = 5 )GROUP BY idc                 s   rH   rI   rJ   rK   r*   r*   r+   rM   ;  rN   zB AND (status_id = 3) GROUP BY image_month, id ORDER BY image_monthaU  
                    SELECT
                        id,
                        EXTRACT(MONTH FROM image_date) AS image_month,
                        COUNT(id) AS total_count
                    FROM
                        dashboard_imagemaster
                    WHERE
                        status_id = '3'
                        AND z
                    GROUP BY
                        id, image_month
                    ORDER BY
                        image_month
                c                 S   rO   r*   rP   rB   r*   r*   r+   rE   ^  rQ   zAND (status_id = 3) GROUP BY idz  AND (status_id = 3 )GROUP BY idc                 s   rH   rI   rJ   rK   r*   r*   r+   rM   t  rN   
image_date)r@   r@   rJ   c                 S   s   g | ]
}|d  |d fqS r?   r*   rB   r*   r*   r+   rE     rQ   zJSELECT id, COUNT(id) AS total_count FROM dashboard_imagemaster GROUP BY idc                 s   rH   rI   rJ   rK   r*   r*   r+   rM     rN   zSELECT id, EXTRACT(MONTH FROM image_date) AS image_month, COUNT(id) AS total_count FROM dashboard_imagemaster WHERE status_id = '1' GROUP BY image_month, id ORDER BY image_monthc                 S   rO   r*   rP   rB   r*   r*   r+   rE     rQ   z^SELECT id, COUNT(id) AS total_count FROM dashboard_imagemaster WHERE status_id = 1 GROUP BY idc                 s   rH   rI   rJ   rK   r*   r*   r+   rM     rN   zSELECT id, EXTRACT(MONTH FROM image_date) AS image_month, COUNT(id) AS total_count FROM dashboard_imagemaster WHERE status_id = '4' GROUP BY image_month, id ORDER BY image_monthc                 S   rO   r*   rP   rB   r*   r*   r+   rE     rQ   z^SELECT id, COUNT(id) AS total_count FROM dashboard_imagemaster WHERE status_id = 4 GROUP BY idc                 s   rH   rI   rJ   rK   r*   r*   r+   rM     rN   zSELECT id, EXTRACT(MONTH FROM image_date) AS image_month, COUNT(id) AS total_count FROM dashboard_imagemaster WHERE status_id = '2' GROUP BY image_month, id ORDER BY image_monthc                 S   rO   r*   rP   rB   r*   r*   r+   rE     rQ   z^SELECT id, COUNT(id) AS total_count FROM dashboard_imagemaster WHERE status_id = 2 GROUP BY idc                 s   rH   rI   rJ   rK   r*   r*   r+   rM     rN   zSELECT id, EXTRACT(MONTH FROM image_date) AS image_month, COUNT(id) AS total_count FROM dashboard_imagemaster WHERE status_id = '5' GROUP BY image_month, id ORDER BY image_monthc                 S   rO   r*   rP   rB   r*   r*   r+   rE     rQ   z^SELECT id, COUNT(id) AS total_count FROM dashboard_imagemaster WHERE status_id = 5 GROUP BY idc                 s   rH   rI   rJ   rK   r*   r*   r+   rM     rN   zSELECT id, EXTRACT(MONTH FROM image_date) AS image_month, COUNT(id) AS total_count FROM dashboard_imagemaster WHERE status_id = '3' GROUP BY image_month, id ORDER BY image_monthc                 S   rO   r*   rP   rB   r*   r*   r+   rE     rQ   z^SELECT id, COUNT(id) AS total_count FROM dashboard_imagemaster WHERE status_id = 3 GROUP BY idc                 s   rH   rI   rJ   rK   r*   r*   r+   rM     rN   d   	DashboardtitleNazoxpageview
total_datatotal_pendingcomp_gt
unreach_gtcomp_dt
unreach_dtpending_percentagecomp_gt_percentageunrech_gt_percentagecomp_dt_percentageunrech_dt_percentagecompany_datamonthly_datamonth_list_pendingmonth_list_com_gtmonth_list_unrech_gtmonth_list_com_dtmonth_list_unrech_dtzmenu/index.html)UserLocationobjectsfilterr/   r2   UserInfovaluesr	   is_superuserorder_byfirststrImageMasterrawappendsumannotater   r
   r   r   )7selfr   
month_listrf   rg   rh   ri   rj   total_count_datatotal_count_pendingtotal_count_comp_gttotal_count_unrech_gttotal_count_comp_dttotal_count_unrech_dtuser_locations	user_datecurrent_grpextra_wherer/   
querymonthre   monthly_listmonthrG   
month_dataqueryimagesquerymonthpendingmonthly_data_pendingmonthly_list_pendingr2   query1querymonthcompgtmonthly_data_com_gtmonthly_list__com_gtquery2querymonthcunreachgtmonthly_data_unreach_gtmonthly_list___unreach_gtquery3querymonthcompdtmonthly_data_com_dtmonthly_list__com_dtquery4querymonthcunreachdtmonthly_data_unreach_dtmonthly_list___unreach_dtquery5total_imagesr_   r`   ra   rb   rc   greetingr*   r*   r+   get6   sn  
*
: & ": &$": &$": &$": &$": &$": &$": &$": &$": &$": &$		": &$
zDashboardView.getN__name__
__module____qualname__r   r*   r*   r*   r+   r.   5       r.   c                   @   r-   )	UsersViewc                 C   s*   i }d|d< d|d< t  |d< t|d|S )NUsersrV   rW   rX   rd   zmenu/users.html)r   r   )ry   r   r   r*   r*   r+   r     s
   
zUsersView.getNr   r*   r*   r*   r+   r     r   r   c                   @   r-   )HomepageViewc                 C   sX   t j }tjjddd}t|d d }t|}|t|ddt	 d}t
|d|S )Nupdate_siteinput)namevaluer   Homepage)photosupdatesitesrV   rX   rd   zmenu/homepage/homepage.html)Imagesrl   allSettingrm   ro   rs   r,   r   r   r   )ry   r   r   r   ckeditor_contentr)   contextr*   r*   r+   r     s   
zHomepageView.getNr   r*   r*   r*   r+   r     r   r   c                 C   s    t |d}tjj| |d d S )N%d%m%Y%H%M%S)database_urldatabase_date)r   strptimer   rl   create)filenamecurrent_datetimeformatted_dater*   r*   r+   create_database_backup,  s   r   c                 C   s  d}t jd d }t jd d }t jd d }t jd d }t jd d }td}t|d	}t|d
}	ztj	t j
| d| d}
t|}d| d| d| d| d| d|
 }tj|dtjtjdd}|
dd }|	}t|| |jdkrt|d}|d|j d W d    n1 sw   Y  tdddW S t|
d d}t j}|dd d d }tj|}td!d"|d#}tj|
|gd$}t|
d%d&}| j||d'd(  }t!d)|"d' t|d}|d*t#| d W d    n	1 sw   Y  t$|
 t%d+W S  t&yX } z2t|d}|d,t#| d t!d-| W d    n	1 sCw   Y  td.ddW  Y d }~S d }~ww )/Nz*/var/www/html/prime-uav/Admin/errorlog.txtdefaultNAMEUSERPASSWORDHOSTPORTzAsia/Kolkataz%d_%m_%Y_%H_%M_%Sr   _export_z.sqlz/usr/bin/mysqldump -u z -pz -h z -P  z > T)shellstdoutstderrtext/r   az Command failed with return code 
zError exporting database.i  )statusi  zD/var/www/html/prime-uav/Admin/verdant-rider-387810-f3f9eae56e73.json?drivev3)credentials)r   parentszapplication/sql)mimetyper2   )body
media_bodyfieldszFile ID:zA file: database_backupzAn error occurred: zAn error occurredzAn error occurred.)'r   	DATABASESpytztimezoner   nowstrftimeospathjoin
MEDIA_ROOTshlexquote
subprocessrunPIPEsplitr   
returncodeopenwriter   chmodDATABASE_BACKUP_PATHr   Credentialsfrom_service_account_filer   basenamer   filesr   executeprintr   rs   remover   	Exception)r   log_file_pathdb_namedb_userdb_passworddb_hostdb_portistr   current_datetime2export_file_pathescaped_passwordcommandcompleted_processr   r   log_filecredentials_pathfolderid	folder_idcredsservicefile_metadatamediafileexr*   r*   r+   download_mysql_export1  s`   

&




r  )1django.httpr   django.shortcutsr   r   django.viewsr   django.contrib.auth.mixinsr   settings.viewsr   dashboard.modelsdjango.contrib.auth.modelsr	   django.db.modelsr
   django.db.models.functionsr   users.modelsslider_images.modelssettings.modelsdjango.utils.safestringr   r   htmlr   django.confr   r   r   r   r   r   r   googleapiclient.discoveryr   googleapiclient.httpr   google.oauth2r   
contextlibr   r   r,   r.   r   r   r   r  r*   r*   r*   r+   <module>   sL       `	