
    siu                         d dl 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lmZ d dlmZ d d	lmZ d
dlmZ d
dl  G d de      Z G d de      Zy)    N)Path)forms)ValidationError)ContentFile)default_storagerender_to_string)gettext_lazy)	ModelForm   )authenticate)*c                        e Zd ZdZ ej
                  dd      Z ej
                  dd      Z ej
                  dd      Z ej
                  dd      Z	 G d d	      Z
d
 Z fdZ xZS )LocalBackupSetupFormzServer BackupFz$Enable to backup database to server.required	help_textz+Enable to backup all media files to server.5Enable to automate the backup in a period of seconds..Enable to automate the backup in a fixed time.c                       e Zd ZeZdgZy)LocalBackupSetupForm.MetaactiveN)__name__
__module____qualname__LocalBackupmodelexclude     8/var/www/python-projects/worksol/horilla_backup/forms.pyMetar   "   s    *r    r"   c                 &    d| i}t        d|      }|S zS
        Render the form fields as HTML table rows with Bootstrap styling.
        formzcommon_form.htmlr   selfcontext
table_htmls      r!   as_pzLocalBackupSetupForm.as_p&         4.%&8'B
r    c                 T   t         |          }|j                  d      }|j                  d      }|j                  d      }|j                  d      }|j                  d      }|j                  d      }|j                  d      }|j                  d      }	t        |	      }
|
j	                         st        dt        d	      i      |d
k(  r|d
k(  rt        j
                  d      |d
k(  r|d
k(  rt        j
                  d      |dk(  r|d k(  rt        dt        d      i      |dk(  r|d k(  rt        dt        d      i      |r|dk  rt        dt        d      i      |r |dk  s|dkD  rt        dt        d      i      |r |dk  s|dkD  rt        dt        d      i      |S )N	backup_dbbackup_mediaintervalfixedsecondshourminutebackup_pathzThe directory does not exist.Fz Please select any backup option.z)Please select any backup automate option.TThis field is required.r   z"Negative value is not accepatable.   zEnter a hour between 0 to 24.<   Enter a minute between 0 to 60.)supercleangetr   existsr   _r   )r'   cleaned_datar-   r.   r/   r0   r1   r2   r3   r4   path	__class__s              r!   r:   zLocalBackupSetupForm.clean.   s   w} $$[1	#''7##J/  )""9-'!!(+"&&}5K {{}!=!4S2T"UVV,%"7''(JKKu%''(STTt4!9a0I.J"KLLD=TT\!61-F+G"HII{%"F GH  ax4"9%vq1P/Q&RSSzVb[%x3T1U&VWWr    r   r   r   verbose_namer   BooleanFieldr-   r.   r/   r0   r"   r*   r:   __classcell__r@   s   @r!   r   r      s    "L""""HI &5%%"OL "u!!IH E"RE    r    r   c                        e Zd ZdZ ej
                  ddd      Z ej
                  ddd      Z ej
                  dd	      Z ej
                  dd
	      Z	 G d d      Z
d Z fdZ xZS )GdriveBackupSetupFormzGoogle Drive BackupFz	Backup DBz)Enable to backup database to Google Drive)r   labelr   zBackup Mediaz0Enable to backup all media files to Google Driver   r   r   c                   B    e Zd ZeZddgZd ej                  d      iZy)GdriveBackupSetupForm.Metar   oauth_refresh_tokenoauth_client_secretT)render_valueN)	r   r   r   GoogleDriveBackupr   r   r   PasswordInputwidgetsr   r    r!   r"   rJ   e   s,    !23!#65#6#6D#I
r    r"   c                 &    d| i}t        d|      }|S r$   r   r&   s      r!   r*   zGdriveBackupSetupForm.as_pl   r+   r    c                    t         |          }|j                  d      }|j                  d      }|j                  d      }|j                  d      }|j                  d      }|j                  d      }|j                  d      }|j                  d      }	|j                  d	      }
|j                  d
      }|j                  d      }|	dk(  r|
st        j                  d      	 |
j                         }|
j                  }t        j                  j                         st        j                  |t        |            }t        j                  dd      5 }|j                  |       |j!                          |j                  }d d d        t#               t%        j&                  |       n|	dk(  r|r|st        j                  d      |dk(  r|dk(  rt        j                  d      |dk(  r|dk(  rt        j                  d      |dk(  r|d k(  rt	        dt+        d      i      |dk(  r|d k(  rt	        dt+        d      i      |r|dk  rt	        dt+        d      i      |r |dk  s|dkD  rt	        dt+        d      i      |r |dk  s|dkD  rt	        dt+        d      i      |S # 1 sw Y   *xY w# t(        $ r}t        j                  d      d }~ww xY w)Nr-   r.   r/   r0   r1   r2   r3   auth_methodservice_account_fileoauth_client_idrL   service_accountzDService Account File is required for Service Account authentication.Fz.json)deletesuffixz,Please provide a valid service account file.oauthzHOAuth Client ID and Client Secret are required for OAuth authentication.z)Please select at least one backup option.z)Please select a backup automation option.Tr5   r   z!Negative value is not acceptable.r6   zEnter an hour between 0 to 24.r7   r8   )r9   r:   r;   r   r   readnamerN   objectsr<   r   saver   tempfileNamedTemporaryFilewriteflushr   osremove	Exceptionr=   )r'   r>   r-   r.   r/   r0   r1   r2   r3   rS   rT   rU   rL   	file_data	file_namerelative_pathtmp_file	temp_pather@   s                      r!   r:   zGdriveBackupSetupForm.cleant   s   w} $$[1	#''7##J/  )""9-'!!(+"&&}5+//0FG&**+<=*../DE ++'++,rss\0557	055	 )00779$3$8$8KPYDZ$[M 00gN .RZNN9-NN$ (I. Y' 		)$
 G#"*=++,vww ,%"7''(STTu%''(STTt4!9a0I.J"KLLD=TT\!61-F+G"HIIw{!9a0S.T"UVVTAX!61-M+N"OPPvzVb[!8Q/P-Q"RSSQ. .  \++,Z[[\s1   (A0J; .J.(J; .J83J; ;	KKKrA   rE   s   @r!   rG   rG   Q   s    (L"""=I
 &5%%DL
 "u!!IH E"RE
 
E Er    rG   )rb   r^   pathlibr   djangor   django.core.exceptionsr   django.core.files.baser   django.core.files.storager   django.template.loaderr	   django.utils.translationr
   r=   
base.formsr   gdriver   modelsr   rG   r   r    r!   <module>ru      sD    	    2 . 5 3 6     <9 <~hI hr    