o
    Qd)                     @   s   d dl mZ d dlmZ ddlT d dlmZ d dlmZm	Z	 d dl
mZ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mZ d dlZd dlZd dlZdd Zdd ZG dd deeZ G dd deeZ!dd Z"dd Z#dS )    )LoginRequiredMixin)View   )*)messages)HttpResponseJsonResponse)redirectrender)FileSystemStorage)reverse)	Paginator)service_account)build)MediaIoBaseDownload)settingsNc                  C   s   i } t jjddjddd }t jjddjddd }t jjddjddd }t jjddjddd }t jjd	djddd }|| d
< || d< || d< || d< || d< | S )Nupdate_within_company_namenamevalueTflatupdate_within_company_logoupdate_within_company_numberupdate_within_company_emailupdate_within_company_imagecompany_namecompany_logocompany_numbercompany_emailcompany_image)Settingobjectsfiltervalues_listfirst)contextr   r   r   r   r     r'   //var/www/html/prime-uav/Admin/settings/views.pyget_company_data   s   r)   c                 C   s   t jjddjddd }t jjddjddd }t jjddjddd }t jjddjddd }t jjd	djddd }|||||d
}t|S )Nr   r   r   Tr   r   r   r   r   )r   r    r   r   r   )r!   r"   r#   r$   r%   r   )requestr   r   r   r   r    company_datar'   r'   r(   get_company_data2#   s   r,   c                   @   s   e Zd Zdd Zdd ZdS )SettingViewc                 C   s<  t  }tjjddd}|d dkrd }tjjddd}|d d dkr)d }tjjddd}|dkr9d }tjjddd}tjjd	dd}|dkrSd }tjjd
dd}tjjddd}	|dkrmd }tjjddd}
|d |d d |d |d |d |d |
d d |	d d|d
}t|d|S )Nupdate_within_ranger   r   r    update_within_range_statusr   r   r   r   r   update_siteinputSettings)
rangerange_statusr   r   r   r   r1   r   titler+   zmenu/settings/setting.html)r)   r!   r"   r#   valuesr
   )selfr*   r+   r3   r4   r   r   r   r   r   r1   r&   r'   r'   r(   get9   s2   (
zSettingView.getc                 C   s  |j dkr|jdd }|jd}|jdd }|jdd }|jdd }|jdd }|jdd }|jd	}	|rHtjjd
dj|d |rUtjjddj|d |rbtjjddj|d |rotjjddj|d |r|tjjddj|d tjjddj|	d |rtjjdd}
|
d	 }t
 }|d dvr||d  ||j|}tjjddj|d |rtjjdd}
|
d	 }t
 }|d dvr||d  ||j|}tjjddj|d tdS tdS )NPOSTr4   r3   r   r   r   company_phone_nor    editorr0   r   )r   r.   r   r   r   r1   r   r   )r/   Nr   r   zmenu/settings/setting.html.html)methodr9   r8   FILESr!   r"   r#   updater6   r%   r   deletesaver   r	   )r7   r*   r4   r3   r   r   r   r   r    
siteupdate	file_datadb_file_namefsfilenamer'   r'   r(   postY   sL   
zSettingView.postN)__name__
__module____qualname__r8   rF   r'   r'   r'   r(   r-   7   s     r-   c                   @   s   e Zd Zdd ZdS )database_backupc                 C   s   |j dd}g d}tj }t||v r|}nd}t|}t||}|j dd}||}	|	j	d |	j
j d }
|	D ]	}|
|_|
d7 }
q=|	dt d}t|d|S )	N
page_count
   )rL      2   d     pager   	Databases)page_objr5   r+   zmenu/database/database.html)GETr8   DatabaseBackupr"   allintlenr   get_pagenumber	paginatorper_pageserial_numberr)   r
   )r7   r*   pages	page_list	databasespage_passedcountr[   page_numberrS   r]   stater&   r'   r'   r(   r8      s&   



zdatabase_backup.getN)rG   rH   rI   r8   r'   r'   r'   r(   rJ      s    rJ   c                 C   s   d}t j|}tdd|d}| jd|  ddd }|d	 d
 d }| j|d}t| d}t	||}d}	|	sF|
 \}
}	|	r<d S d S )NzD/var/www/html/prime-uav/Admin/verdant-rider-387810-f3f9eae56e73.jsondrivev3)credentialszname=''z	files(id))qfieldsfilesr   id)fileIdwbF)r   Credentialsfrom_service_account_filer   rk   listexecute	get_mediaopenr   
next_chunk)r   credentials_pathcredsserviceresponsefile_idr*   file_stream
downloaderdonestatusr'   r'   r(   download_file   s   

r   c              
   C   s6  ztt jd d }t jd d }t jd d }t jd d }t jd d }t| t|}d| d| d	| d
| d| 
}ztj|ddd t| d W n tj	yj }	 zt
| d|	  W Y d }	~	nd }	~	ww t| tdW S  ty }
 zt| t
| d|
  tdddW  Y d }
~
S d }
~
ww )NdefaultNAMEUSERPASSWORDHOSTPORTz	mysql -h z -u z -p z < T)shellcheckzSQL file imported successfullyzError: rJ   zAn error occurred.rP   )r~   )r   	DATABASESr   shlexquote
subprocessrunr   successCalledProcessErrorerrorosremover	   	Exceptionr   )r*   r   db_namedb_userdb_passworddb_hostdb_portescaped_passwordcommandeexr'   r'   r(   import_mysql   s0   
"


r   )$django.contrib.auth.mixinsr   django.viewsr   modelsdjango.contribr   django.httpr   r   django.shortcutsr	   r
   django.core.files.storager   django.urlsr   django.core.paginatorr   google.oauth2r   googleapiclient.discoveryr   googleapiclient.httpr   django.confr   r   r   r   r)   r,   r-   rJ   r   r   r'   r'   r'   r(   <module>   s,    Z(