Index: bk_manager/trunk/functions/functions.py =================================================================== diff --git a/bk_manager/trunk/functions/functions.py b/bk_manager/trunk/functions/functions.py --- a/bk_manager/trunk/functions/functions.py (revision 46) +++ b/bk_manager/trunk/functions/functions.py (revision 47) @@ -19,16 +19,15 @@ #Crea directorios en la ruta indicada -def make_dirs(var_path, list_dirs, self): - var_cmd="mkdir -p "+str(var_path) +def make_dirs(list_dirs, self): + var_cmd="mkdir -p "+str(self.var_Rpath) for var_dir in list_dirs: var_output=commands.getstatusoutput(var_cmd+'/'+var_dir)[0] - print var_cmd+'/'+var_dir if var_output != 0: self.txtInfo.append("Error al crear el directorio "+var_dir+", output_error:" + str(var_output)) - return - else: - self.txtInfo.append('Carpetas creadas correctamente') + return False + self.txtInfo.append('Carpetas creadas correctamente') + return True #Se verifica que la ruta exista y sea un directorio @@ -72,6 +71,7 @@ self.lstStopDay.addItem(i) self.lstStopDay.setCurrentIndex(self.lstStartDay.count()-1) + get_sub_list(self) self.btnGbkp.setEnabled(True) @@ -90,6 +90,7 @@ return True +#Obtiene el rango de las fechas seleccionadas def get_sub_list(self): self.var_sublist=[] for i in self.var_list[self.lstStartDay.currentIndex():self.lstStartDay.currentIndex() + self.lstStopDay.currentIndex()+1]: @@ -98,3 +99,115 @@ self.txtInfo.append("No existen archivos encontrados") +#Busca los archivos con los parametros de busqueda +def list_files(self): + var_files_list=[] + for var_doy in self.var_sublist: + var_cmd="find " + str(self.var_Dpath) + " -name ?"+var_doy+"???."+ str(self.var_Dtype) + " |sort" + var_output=commands.getstatusoutput(var_cmd)[1] + for var_file in var_output.split(): + var_files_list.append(var_file) #Almacena cada archivo en la lista + return var_files_list + + +#Genera la lista de archivos .dat que contienen los archivos a grabar en cada DVD +def make_files_dat(var_files_list, self): + var_Rpath_ppath=self.var_Rpath+"/ppath" #Ruta de los archivos a grabar + var_n=1 #Numero del DVD actual + var_tmp=0 #Se usa para acumular el tamaño de los archivos de la lista + var_files_list_2=[] #Se usa para almacenar la lista de archivos agrbar en cada DVD + + for i in var_files_list: #Se asignan en i los archivos de la lista + self.txtInfo.append(i) + var_size_i=os.path.getsize(i)/1024+1 #tamaño en KB del archivo de la lista, se suma 1 KB para evitar problemas al momento de sumar + var_tmp += var_size_i #Se acumulan el tamaño de los archivos de la lista + + #Si el tamaño acumulado es mayor que el de el DVD + if var_tmp > self.var_Dcapacity: + var_tmp -= var_size_i #se quita el tamaño sumado para mostrar el tamaño real + #se crea un archivo con numeral en el sufijo y extension .dat + var_file = open(var_Rpath_ppath+"/"+self.var_Elabel+"_"+i2s(var_n)+".dat","w") + #Se añade la lista de archivos a grabar en el DVD al archivo .dat + for line in var_files_list_2: + var_tmp_path=(line.split(self.var_Dpath)[1]).split('/') + var_tmp_path2="/" + for l in range(0, len(var_tmp_path)-1): + var_tmp_path2=var_tmp_path2+str(var_tmp_path[l])+"/" + var_file.write(var_tmp_path2+'=') + var_file.write(line+'\n') + var_file.close() + + var_tmp = var_size_i #Se asigna a la variable el tamaño del archivo actual + var_files_list_2=[] #Se reinicia la lista + var_n += 1 + var_files_list_2.append(i) + + #se crea un archivo con numeral en el sufijo y extension .dat + var_file = open(var_Rpath_ppath+"/"+self.var_Elabel+"_"+i2s(var_n)+".dat","w") + #Se añade la lista de archivos a grabar en el DVD al archivo .dat + for line in var_files_list_2: + var_tmp_path=(line.split(self.var_Dpath)[1]).split('/') + var_tmp_path2="/" + for l in range(0, len(var_tmp_path)-1): + var_tmp_path2=var_tmp_path2+str(var_tmp_path[l])+"/" + var_file.write(var_tmp_path2+'=') + var_file.write(line+'\n') + var_file.close() + + return var_n + + +#Genera los archivos .print con los cuales se creara los postscript +def make_files_print(self): + + var_Rpath_ppath=self.var_Rpath+"/ppath" #Ruta de los archivos a grabar + + # Se leen todos los archivos .dat creados para crear las etiquetas en los archivos .print + for var_n in range(1, self.var_n_discs + 1): + #se abren los archivos .dat en modo lectura + var_file = open(var_Rpath_ppath+"/"+self.var_Elabel+"_"+i2s(var_n)+".dat","r") + lines=var_file.readlines() # Se lee las lineas en el archivo y se almacenan en la lista + # Se crea el archivo .print + var_file_print = open(var_Rpath_ppath+"/"+self.var_Elabel+"_"+i2s(var_n)+".print","w") + var_file_print.write(self.var_Elabel+" "+i2s(var_n)+"/"+i2s(self.var_n_discs)+"\n") + var_file_print.write("Year Doy Folder Set Time range\n") + + var_first_folder = lines[0].split('=')[0] + var_first_file = (lines[0].split('=')[1])[:-1] + var_date_first_file=commands.getstatusoutput("date -r "+var_first_file+" +'%T'")[1] + + for j in range(1, len(lines)-1): + var_tmp_folder = lines[j].split('=')[0] + var_tmp_file = (lines[j].split('=')[1])[:-1] + + # Si el subfolder superior o la fecha del archivo cambia se genera una nueva linea + if (var_tmp_folder != var_first_folder) or (var_tmp_file[0:-5] != var_first_file[0:-5]): + var_last_file = (lines[j-1].split('=')[1])[:-1] + var_date_last_file=commands.getstatusoutput("date -r "+var_last_file+" +'%T'")[1] + # Si el archivo se grabara directamente en la / del DVD y no en un /directorio/ + # se usa la etiqueta para indicar la parte de la etiqueta donde va el subdirectorio + if var_first_folder == '/': + var_folder = self.var_Elabel + else: + var_folder = var_first_folder.split('/')[1] + + var_file_print.write(var_first_file[-12:-8]+" "+var_first_file[-8:-5]+" "+var_folder +" "+var_first_file[-5:-2]+" " + +var_last_file[-5:-2]+" "+var_date_first_file+" "+var_date_last_file+"\n") + + var_first_folder = lines[j].split('=')[0] + var_first_file = (lines[j].split('=')[1])[:-1] + var_date_first_file=commands.getstatusoutput("date -r "+var_first_file+" +'%T'")[1] + + var_last_file = (lines[-1].split('=')[1])[:-1] + var_date_last_file=commands.getstatusoutput("date -r "+var_last_file+" +'%T'")[1] + + if var_first_folder == '/': + var_folder = self.txtElabel.text() + else: + var_folder = var_first_folder.split('/')[1] + + var_file_print.write(var_first_file[-12:-8]+" "+var_first_file[-8:-5]+" "+var_folder +" "+var_first_file[-5:-2]+" " + +var_last_file[-5:-2]+" "+var_date_first_file+" "+var_date_last_file+"\n") + + var_file.close() + var_file_print.close() Index: bk_manager/trunk/functions/functions2.py =================================================================== diff --git a/bk_manager/trunk/functions/functions2.py b/bk_manager/trunk/functions/functions2.py --- a/bk_manager/trunk/functions/functions2.py (revision 46) +++ b/bk_manager/trunk/functions/functions2.py (revision 47) @@ -19,7 +19,9 @@ self.txtElabel.setText('EW_DRIFTS') self.statusDpath = True self.statusRpath = True - self.var_n_files=0 + self.lstDcapacity.setCurrentIndex(4) + self.txtDcapacity.setValue(100.0) + self.txtDcapacity.setReadOnly(False) def detect_devices(self): Index: bk_manager/trunk/jro_backup_manager.e4p =================================================================== diff --git a/bk_manager/trunk/jro_backup_manager.e4p b/bk_manager/trunk/jro_backup_manager.e4p --- a/bk_manager/trunk/jro_backup_manager.e4p (revision 46) +++ b/bk_manager/trunk/jro_backup_manager.e4p (revision 47) @@ -1,7 +1,7 @@ - + en @@ -32,7 +32,6 @@ - functions/doc_tmp.txt main.py Index: bk_manager/trunk/ui/MainWindow.py =================================================================== diff --git a/bk_manager/trunk/ui/MainWindow.py b/bk_manager/trunk/ui/MainWindow.py --- a/bk_manager/trunk/ui/MainWindow.py (revision 46) +++ b/bk_manager/trunk/ui/MainWindow.py (revision 47) @@ -29,21 +29,22 @@ def setupUi2(self): + self.statusDpath = False + self.statusRpath = False + + functions2.set_parameters(self) #Establece ciertos parametros, para pruebas + self.var_Dpath = self.txtDpath.text() self.var_Rpath = self.txtRpath.text() - self.statusDpath = False - self.statusRpath = False - self.var_Dtype = self.txtDtype.text() self.var_Elabel = self.txtElabel.text() self.var_Copys = self.txtCopys.value() self.var_Dcapacity = self.txtDcapacity.value() * 1024 - self.var_n_files=0 + self.var_n_discs=0 self.var_list=[] self.var_sublist=[] - - functions2.set_parameters(self) #Establece ciertos parametros, para pruebas + functions2.detect_devices(self) #busca los dispositivos de grabacion @@ -109,7 +110,9 @@ if index != 3: self.txtDtype.setText(var_type) self.txtDtype.setReadOnly(True) + self.var_Dtype=self.txtDtype.text() functions.load_days(self) + else: self.txtDtype.setText('') self.txtDtype.setReadOnly(False) @@ -133,7 +136,7 @@ @pyqtSignature("") def on_txtDcapacity_editingFinished(self): - self.var_Dcapacity = self.txtDcapacity.value() * 1024 + self.var_Dcapacity = self.txtDcapacity.value() * 1024 #tamaño en KB @pyqtSignature("int") #CLOSED @@ -189,7 +192,9 @@ else: self.txtDcapacity.setValue(100.0) self.txtDcapacity.setReadOnly(False) - + + self.var_Dcapacity = self.txtDcapacity.value() * 1024 #tamaño en KB + @pyqtSignature("") def on_btnGbkp_clicked(self): @@ -201,124 +206,15 @@ return #Crea las carpetas en la ruta del proyecto y verifica que se crearon correctamente - list_dirs=['gpath', 'iso', 'ppath'] - functions.make_dirs(self.var_Rpath, list_dirs, self) - - #Cargando variables con los parametros - var_Rpath_ppath=self.var_Rpath+"/ppath" #Ruta de los archivos a grabar - - #Busca los archivos con los parametros de busqueda - var_files_list=[] - for var_doy in var_sublist: - var_cmd="find " + str(self.var_Dpath) + " -name ?"+var_doy+"???."+ str(self.var_Dtype) + " |sort" - var_output=commands.getstatusoutput(var_cmd)[1] - for var_file in var_output.split(): - var_files_list.append(var_file) #Almacena cada archivo en la lista - - # - #Genera la lista de archivos .dat que contienen los archivos a grabar en cada DVD - # - var_n=0 #Numero del DVD actual - var_tmp=0 #Se usa para acumulanr el tamaño de los archivos de la lista - var_files_list_2=[] #Se usa para almacenar la lista de archivos agrbar en cada DVD - - for i in var_files_list: #Se asignan en i los archivos de la lista - var_size_i=os.path.getsize(i)/1024+1 #tamaño en KB del archivo de la lista, se suma 1 KB para evitar problemas al momento de sumar - var_tmp += var_size_i #Se acumulan el tamaño de los archivos de la lista - - #Si el tamaño acumulado es mayor que el de el DVD - if var_tmp > self.var_Dcapacity: - var_tmp -= var_size_i #se quita el tamaño sumado para mostrar el tamaño real - #se crea un archivo con numeral en el sufijo y extension .dat - var_file = open(var_Rpath_ppath+"/"+self.txtElabel.text()+"_"+functions.i2s(var_n)+".dat","w") - #Se añade la lista de archivos a grabar en el DVD al archivo .dat - for line in var_files_list_2: - var_tmp_path=(line.split(self.var_Dpath)[1]).split('/') - var_tmp_path2="/" - for l in range(0, len(var_tmp_path)-1): - var_tmp_path2=var_tmp_path2+str(var_tmp_path[l])+"/" - var_file.write(var_tmp_path2+'=') - var_file.write(line+'\n') - var_file.close() - - var_tmp = var_size_i #Se asigna a la variable el tamaño del archivo actual - var_files_list_2=[] #Se reinicia la lista - var_n += 1 - var_files_list_2.append(i) - - #se crea un archivo con numeral en el sufijo y extension .dat - var_file = open(var_Rpath_ppath+"/"+self.txtElabel.text()+"_"+functions.i2s(var_n)+".dat","w") - #Se añade la lista de archivos a grabar en el DVD al archivo .dat - for line in var_files_list_2: - var_tmp_path=(line.split(self.var_Dpath)[1]).split('/') - var_tmp_path2="/" - for l in range(0, len(var_tmp_path)-1): - var_tmp_path2=var_tmp_path2+str(var_tmp_path[l])+"/" - var_file.write(var_tmp_path2+'=') - var_file.write(line+'\n') - var_file.close() - - # - #Genera los archivos .print con los cuales se creara los postscript - # - self.var_n_files = var_n # Numero del ultimo archivo .dat creado - var_n = 0 # Se reinicia a cero y se usa para poder acceder a cada una de los archivos - - # Se leen todos los archivos .dat creados para crear las etiquetas en los archivos .ps - for var_n in range(0, self.var_n_files+1): - print var_n - - #se abren los archivos .dat en modo lectura - var_file = open(var_Rpath_ppath+"/"+self.txtElabel.text()+"_"+functions.i2s(var_n)+".dat","r") - lines=var_file.readlines() # Se lee las lineas en el archivo y se almacenan en la lista - - # Se crea el archivo .print - var_file_print = open(var_Rpath_ppath+"/"+self.txtElabel.text()+"_"+functions.i2s(var_n)+".print","w") - var_file_print.write(self.txtElabel.text()+" "+functions.i2s(var_n)+"/"+str(self.var_n_files)+"\n") - var_file_print.write("Year Doy Folder Set Time range\n") - - #Se crean los archivos .print con los cuales se crearan los archivos .ps - var_first_folder = lines[0].split('=')[0] - var_first_file = (lines[0].split('=')[1])[:-1] - var_date_first_file=commands.getstatusoutput("date -r "+var_first_file+" +'%T'")[1] - - for j in range(1, len(lines)-1): - var_tmp_folder = lines[j].split('=')[0] - var_tmp_file = (lines[j].split('=')[1])[:-1] - - # Si el subfolder superior o la fecha del archivo cambia se genera una nueva linea - if (var_tmp_folder != var_first_folder) or (var_tmp_file[0:-5] != var_first_file[0:-5]): - - var_last_file = (lines[j-1].split('=')[1])[:-1] - var_date_last_file=commands.getstatusoutput("date -r "+var_last_file+" +'%T'")[1] - # Si el archivo se grabara directamente en la / del DVD y no en un /directorio/ - # se usa la etiqueta para indicar la parte de la etiqueta donde va el subdirectorio - if var_first_folder == '/': - var_folder = self.txtElabel.text() - else: - var_folder = var_first_folder.split('/')[1] - - var_file_print.write(var_first_file[-12:-8]+" "+var_first_file[-8:-5]+" "+var_folder +" "+var_first_file[-5:-2]+" " - +var_last_file[-5:-2]+" "+var_date_first_file+" "+var_date_last_file+"\n") - - var_first_folder = lines[j].split('=')[0] - var_first_file = (lines[j].split('=')[1])[:-1] - var_date_first_file=commands.getstatusoutput("date -r "+var_first_file+" +'%T'")[1] - - var_last_file = (lines[-1].split('=')[1])[:-1] - var_date_last_file=commands.getstatusoutput("date -r "+var_last_file+" +'%T'")[1] - - if var_first_folder == '/': - var_folder = self.txtElabel.text() - else: - var_folder = var_first_folder.split('/')[1] - - var_file_print.write(var_first_file[-12:-8]+" "+var_first_file[-8:-5]+" "+var_folder +" "+var_first_file[-5:-2]+" " - +var_last_file[-5:-2]+" "+var_date_first_file+" "+var_date_last_file+"\n") - - var_file.close() - var_file_print.close() - + list_dirs=['gpath','iso','ppath'] + bool_make_dirs = functions.make_dirs(list_dirs, self) + if bool_make_dirs == False: + return + + var_files_list = functions.list_files(self) #Se obtiene la lista de archivos a grabar + self.var_n_discs = functions.make_files_dat(var_files_list, self) #Se crean los archivos .dat + + functions.make_files_print(self) # Se crean los archivos .print #Se deshabilita el Tab Parameters y el boton btnGbkp self.tabParameters.setEnabled(False) @@ -326,18 +222,20 @@ self.txtDcapacity.setEnabled(False) self.btnGbkp.setEnabled(False) self.btnRestart.setEnabled(True) + self.btnStartburn.setEnabled(True) @pyqtSignature("") def on_btnRestart_clicked(self): """ - Slot documentation goes here. + Permite que se puedan cambiar los parametros """ self.tabParameters.setEnabled(True) self.lstDcapacity.setEnabled(True) self.txtDcapacity.setEnabled(True) self.btnGbkp.setEnabled(True) self.btnRestart.setEnabled(False) + self.btnStartburn.setEnabled(False) @pyqtSignature("") @@ -345,6 +243,12 @@ """ Se inicia el proceso de grabacion """ + self.btnRestart.setEnabled(False) + self.btnStartburn.setEnabled(False) + self.btnStopburn.setEnabled(True) + + return + sys.stdout = self #sys.stderr = self print "stdout_!!!" @@ -356,7 +260,7 @@ var_label=self.txtElabel.text() # Se leen todos los archivos .dat creados para crear las etiquetas en los archivos .ps - for var_n in range(0, self.var_n_files+1): + for var_n in range(0, self.var_n_discs+1): print var_n file_iso=var_Rpath_iso+"/"+functions.i2s(var_n)+".iso" @@ -381,9 +285,9 @@ """ Slot documentation goes here. """ - # TODO: not implemented yet - raise NotImplementedError - + self.btnRestart.setEnabled(True) + self.btnStartburn.setEnabled(True) + self.btnStopburn.setEnabled(False) @pyqtSignature("") def on_btnTdevA_clicked(self): Index: bk_manager/trunk/ui/MainWindow.ui =================================================================== diff --git a/bk_manager/trunk/ui/MainWindow.ui b/bk_manager/trunk/ui/MainWindow.ui --- a/bk_manager/trunk/ui/MainWindow.ui (revision 46) +++ b/bk_manager/trunk/ui/MainWindow.ui (revision 47) @@ -6,7 +6,7 @@ 0 0 - 754 + 806 737 @@ -780,8 +780,8 @@ 0 0 - 754 - 21 + 806 + 25