B
    Òîb,  ã               @   sŒ   d dl Z d dlZd dlZd dlmZ d dlmZ dZdd„ Z	dd„ Z
d	d
„ Zdd„ Zddd„Zdd„ Zdd„ Zdd„ Zdd„ Zddd„ZdS )é    N)Úsettings)Úgettext_lazyzphoto_backup.zipc          
   C   sž   d|  d¡ }tj | ¡s"d|  } tj | |¡}dtjtjtjtj	|dœ }yt 
|¡ |S  tk
r˜ } z dd l}| ¡  ttdƒƒ‚W d d }~X Y nX d S )Nz%s.bakz%Y%m%d%H%M%Szapache/zcsqlcmd -U %(user)s -P %(password)s -S %(host)s -Q "backup database %(name)s to disk='%(location)s'")ÚuserÚpasswordÚhostÚnameÚlocationr   Z3backup_failed_please_make_sure_sqlcmd_is_configured)ÚstrftimeÚosÚpathÚexistsÚjoinr   ÚDATABASE_USERÚDATABASE_PASSWORDÚDATABASE_HOSTÚDATABASE_NAMEÚsystemÚ	ExceptionÚ	tracebackÚ	print_excÚ_)r   Úbackup_timeÚdb_fileÚbackup_fileÚcmdÚer   © r   ú4G:\easytimepro\master/mysite/base\database_backup.pyÚmsssql_backup   s"    

r   c          
   C   s¶   d|  d¡ }tj | ¡s"d|  } tj | |¡}tjrBdtj }nd}dtj|tjtj	tj
|dœ }yt |¡ |S  tk
r° } z dd l}| ¡  ttd	ƒƒ‚W d d }~X Y nX d S )
Nz%s.sqlz%Y%m%d%H%M%Szapache/z-p%s Ú z’mysqldump --hex-blob -l --opt -q -R --default-character-set=utf8 -h %(host)s -u%(user)s %(password)s-P %(port)s --databases %(name)s >%(location)s)r   r   r   r   Úportr   r   Z6backup_failed_please_make_sure_mysqldump_is_configured)r	   r
   r   r   r   r   r   r   r   r   ÚDATABASE_PORTr   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   Úmysql_backup,   s*    


r"   c          
   C   s´   d|  d¡ }tj | ¡s"d|  } tj | |¡}dtjtjtjtj	tj
dd … |dœ }ytd|ƒ t |¡ |S  tk
r® } z dd l}| ¡  ttd	ƒƒ‚W d d }~X Y nX d S )
Nz%s.dmpz%Y%m%d%H%M%Szapache/zHexp "%(user)s/%(password)s@%(host)s:%(port)s/%(name)s" file=%(location)sé   )r   r   r   r    r   r   z[*]Oracle Backup Command:r   Z0backup_failed_please_make_sure_exp_is_configured)r	   r
   r   r   r   r   r   r   r   r!   r   Úprintr   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   Úoracle_backupP   s&    


r%   c       
   
   C   sæ   d|  d¡ }tj | ¡s"d|  } tj | |¡}dtjtjtjtj	|tj
dœ }yRdtj }d||f }tj|dtjd	}| ¡  |jd
kr|S | ¡ }t|ƒ‚W n> tk
rà } z d
d l}	|	 ¡  ttdƒƒ‚W d d }~X Y nX d S )Nz%s.sqlz%Y%m%d%H%M%Szapache/z\%(pg_path)s\pgsql\bin\pg_dump -h %(host)s -c -p %(port)s -U %(user)s %(name)s > %(location)s)r   r   r    r   r   Úpg_pathzset PGPASSWORD=%sz%s&&%sT)ÚshellÚstderrr   Z4backup_failed_please_make_sure_pg_dump_is_configured)r	   r
   r   r   r   r   r   r   r!   r   ÚFILEPATHr   Ú
subprocessÚPopenÚPIPEÚwaitÚ
returncodeÚcommunicater   r   r   r   )
r   r   r   r   r   Úcmd_passwordÚpÚstd_errr   r   r   r   r   Úpostgresql_backupo   s0    

r3   Fc          
   C   s”   t j  ¡ }ttttdœ}| tjd ¡}|r2t	|ƒsDt
tdƒtj ƒ‚|| |ƒ}|rŒyttj | |¡ƒ W n" t
k
rŠ } zW d d }~X Y nX ||fS )N)Z
sql_serverZmysqlZoracleÚ
postgresqlz%(engine)_backup_is_unavailable)ÚdatetimeÚnowr   r"   r%   r3   Úgetr   ÚDATABASE_ENGINEÚcallabler   r   Úbackup_photor
   r   r   )r   Zneed_backup_photor6   Zbackup_funcÚfuncr   r   r   r   r   Úbackup’   s    

r<   c          
   C   s  dd l }ddlm} tj | ¡}|dƒ}|dƒ}|dƒ}|dƒ}tj |¡sVt |¡ |  dd¡}| 	|d	|j
¡}	d}
d}d}d}t |¡}x,|D ]$}|	 tj ||¡tj |
|¡¡ q’W t |¡}x,|D ]$}|	 tj ||¡tj ||¡¡ qÊW t |¡}x.|D ]&}|	 tj ||¡tj ||¡¡ qW t |¡}xÈ|D ]À}tj ||¡}tj |¡r<tj ||¡}t |¡}x„|D ]|}tj ||¡}tj |¡rztj ||¡}t |¡}x@|D ]8}tj ||¡}tj |¡r¸|	 |tj ||¡¡ q¸W qzW q<W |	 ¡  d S )
Nr   )Úget_or_create_folderÚphotoZbiophotoÚuploadÚregisterÚsqlÚzipÚw)ÚzipfileZmysite.utilsr=   r
   r   Údirnamer   ÚmakedirsÚreplaceÚZipFileÚZIP_DEFLATEDÚlistdirÚwriter   ÚisdirÚisfileÚclose)r   rD   r=   r   Zphoto_store_dirZbiophoto_store_dirZupload_store_dirZregister_photo_store_dirZphoto_backup_filerB   Zbackup_photo_store_dirZbackup_biophoto_store_dirZbackup_upload_store_dirZbackup_register_photo_store_dirÚphotosr>   Z	biophotosZregister_photosZdatesÚdZupload_store_date_dirZbackup_dZsnsZsnZupload_store_pics_dirZ	backup_snZpicsZpicZpic_pathr   r   r   r:   ¨   sP    


$

$

&





(r:   c          
   C   s°   dt jt jt j| t jdœ }y\td|ƒ dt j }d||f }tj|dtj	d}| 
¡  |jdkrfd S | ¡ }t|ƒ‚W n2 tk
rª } zdd l}| ¡  W d d }~X Y nX d S )	NzK%(pg_path)s\pgsql\bin\createdb -h %(host)s -p %(port)s -U %(user)s %(name)s)r   r   r    r   r&   z [*]PostgreSQL Create DB Command:zset PGPASSWORD=%sz%s&&%sT)r'   r(   r   )r   r   r   r!   r)   r$   r   r*   r+   r,   r-   r.   r/   r   r   r   )Údb_namer   r0   r1   r2   r   r   r   r   r   Úpostgresql_create_dbÜ   s&    


rR   c          
   C   s¤   dt jt jt j| t j|dœ }yBtd|ƒ dt j }d||f }t |¡}|dkrVd S t	dƒ‚W n> t	k
rž } z dd l
}| ¡  t	tdƒƒ‚W d d }~X Y nX d S )	NzZ%(pg_path)s\pgsql\bin\psql -h %(host)s -p %(port)s -U %(user)s -d %(name)s -f %(bak_path)s)r   r   r    r   r&   Úbak_pathz![*] Postgres SQL Restore Command:zset PGPASSWORD=%sz%s&&%sr   zRestore FailedZ*dbBackup_action_dbRestoreErrorPSQLNotFount)r   r   r   r!   r)   r$   r   r
   r   r   r   r   r   )rQ   rS   r   r0   r1   r   r   r   r   r   Úpostgresql_restoreö   s&    



rT   c             C   sD   dd l }tj | ¡r@| | d¡}x| ¡ D ]}| |tj¡ q*W d S )Nr   Úr)	rD   r
   r   r   rH   ÚnamelistÚextractr   ZADDITION_FILE_ROOT)Úzip_filerD   ÚfÚfiler   r   r   Úrestore_photo  s
    r[   c             C   sp   |rt | dd¡ƒ tjdkr*ttdƒƒ‚tj |¡sBttdƒƒ‚| tj	fkrZttdƒƒ‚t
| ƒ t| |ƒ d S )NrA   rB   )r4   Z'dbBackup_action_dbRestoreErrorNoSupportZ)dbBackup_action_dbRestoreErrorFileNoFoundZ1dbBackup_action_dbRestoreErrorIllegalDatabaseName)r[   rG   r   r8   r   r   r
   r   rM   r   rR   rT   )rQ   rS   Zneed_restore_photor   r   r   Úrestore  s    
r\   )F)F)r*   r
   r5   Zdjango.confr   Zdjango.utils.translationr   r   Zbackup_photo_file_namer   r"   r%   r3   r<   r:   rR   rT   r[   r\   r   r   r   r   Ú<module>   s   $#
4