##// END OF EJS Templates
descripcion por bloques
ralonso -
r54:55
parent child
Show More
@@ -1,111 +1,111
1 1 # -*- coding: utf-8 -*-
2 2
3 3
4 4 from subprocess import *
5 5 import sys
6 6 import os
7 7 import subprocess
8 8 import commands
9 9
10 10
11 11 def set_parameters(self):
12 12 """
13 13 Se usa para inicializar ciertos parametros para pruebas
14 14 """
15 self.txtDpath.setText('/home/ricardoar/optional/STORAGE/EW_DRIFTS/')
16 self.txtRpath.setText('/home/ricardoar/optional/prueba1_jro_backup_manager/')
15 self.txtDpath.setText('/home/ricardoar/optional/STORAGE/EW_DRIFTS')
16 self.txtRpath.setText('/home/ricardoar/optional/prueba1_jro_backup_manager')
17 17 self.txtElabel.setText('EW_DRIFTS_pruebas')
18 18 self.lstDcapacity.setCurrentIndex(4)
19 19 self.txtDcapacity.setValue(250.0)
20 20 self.txtDcapacity.setReadOnly(False)
21 21
22 22
23 23 def detect_devices(self):
24 24 """
25 25 Deteccion de los dispositvos de grabacion
26 26 """
27 27 #var_cmd="wodim --devices | grep /dev/ | awk -F\' '{print $2}'" #Funciona en consola pero no en python ΒΏ?
28 28 var_cmd="wodim --devices | grep /dev/ | awk '{print $2}' | awk -F= '{print $2}'"
29 29 var_output = commands.getstatusoutput(var_cmd)
30 30 if var_output[0] != 0:
31 31 self.txtInfo.append("No se pudo encontrar los dispositivos de grabacion, output_error:" + str(var_output))
32 32 else:
33 33 self.txtInfo.append("dispositivos encontrados")
34 34 var_devices = var_output[1].split('\n')
35 35
36 36 var_tmp=[]
37 37 for i in range(0, 4):
38 38 if i < len(var_devices):
39 39 var_len = len(var_devices[i])
40 40 var_tmp.append(var_devices[i][1:var_len - 1])
41 41 else:
42 42 var_tmp.append('')
43 43
44 44 #Se escriben los dispostivos correspodientes, si existen
45 45 self.txtDeviceA.setText(str(var_tmp[0]))
46 46 self.txtDeviceB.setText(str(var_tmp[1]))
47 47 self.txtDeviceC.setText(str(var_tmp[2]))
48 48 self.txtDeviceD.setText(str(var_tmp[3]))
49 49 #Se desactivan los que no existen
50 50 if len(var_tmp[0]) == 0 :
51 51 self.chkDevA.setChecked(False)
52 52 self.chkDevA.setEnabled(False)
53 53 if len(var_tmp[1]) == 0 :
54 54 self.chkDevB.setChecked(False)
55 55 self.chkDevB.setEnabled(False)
56 56 if len(var_tmp[2]) == 0 :
57 57 self.chkDevC.setChecked(False)
58 58 self.chkDevC.setEnabled(False)
59 59 if len(var_tmp[3]) == 0 :
60 60 self.chkDevD.setChecked(False)
61 61 self.chkDevD.setEnabled(False)
62 62
63 63 def enabled_items1(var_bool, self):
64 64 self.tabParameters.setEnabled(not(var_bool))
65 65 self.lstDcapacity.setEnabled(not(var_bool))
66 66 self.txtDcapacity.setEnabled(not(var_bool))
67 67 self.btnGbkp.setEnabled(not(var_bool))
68 68 self.btnRestart.setEnabled(var_bool)
69 69 self.btnStartburn.setEnabled(var_bool)
70 70
71 71
72 72 def make_parameters_conf(self):
73 73 var_file = open("parameters.conf","w")
74 74
75 75 var_file.write(self.var_Dpath+"\n") #0
76 76 var_file.write(self.var_Rpath+"\n") #1
77 77 var_file.write(str(self.var_lstDtype)+"\n") #2
78 78 var_file.write(self.var_Dtype+"\n") #3
79 79 var_file.write(self.var_Elabel+"\n") #4
80 80 var_file.write(str(self.var_Copys)+"\n") #5
81 81 var_file.write(str(self.var_lstDcapacity)+"\n") #6
82 82 var_file.write(str(self.var_Dcapacity)+"\n") #7
83 83
84 84 var_file.close()
85 85
86 86
87 87 def get_parameters_conf(self):
88 88 var_file = open("parameters.conf","r")
89 89 lines = var_file.readlines()
90 90
91 91 self.txtDpath.setText(lines[0][:-1]) #0
92 92 self.txtRpath.setText(lines[1][:-1]) #1
93 93 self.lstDtype.setCurrentIndex(int(lines[2])) #2
94 94 self.txtDtype.setText(lines[3][:-1]) #3
95 95 self.txtElabel.setText(lines[4][:-1]) #4
96 96 self.txtCopys.setValue(int(lines[5][:-1])) #5
97 97 self.lstDcapacity.setCurrentIndex(int(lines[6])) #6
98 98 self.txtDcapacity.setValue(float(lines[7]))
99 99
100 100 var_file.close()
101 101
102 102 def set_vars(self):
103 103 self.var_Dpath = self.txtDpath.text()
104 104 self.var_Rpath = self.txtRpath.text()
105 105 self.var_lstDtype = self.lstDtype.currentIndex()
106 106 self.var_Dtype = self.txtDtype.text()
107 107 self.var_Elabel = self.txtElabel.text()
108 108 self.var_Copys = self.txtCopys.value()
109 109 self.var_lstDcapacity = self.lstDcapacity.currentIndex()
110 110 self.var_Dcapacity = self.txtDcapacity.value()
111 111
@@ -1,328 +1,353
1 1 # -*- coding: utf-8 -*-
2 2
3 3 """
4 4 Module implementing MainWindow.
5 5 """
6 6
7 7 from PyQt4.QtGui import QMainWindow
8 8 from PyQt4.QtCore import pyqtSignature
9 9 from PyQt4 import QtCore
10 10 from Ui_MainWindow import Ui_MainWindow
11 11 from PyQt4 import QtGui
12 12 from subprocess import *
13 13 import sys
14 14 import os
15 15 import subprocess
16 16 import commands
17 17 from functions import functions
18 18 from functions import functions2
19 19
20 20 class MainWindow(QMainWindow, Ui_MainWindow):
21 21 """
22 22 Class documentation goes here.
23 23 """
24 24
25 25 def __init__(self, parent = None):
26 26 QMainWindow.__init__(self, parent)
27 27 self.setupUi(self)
28 28 self.setupUi2()
29 29 #sys.stdout = self #redirige salida estandar
30 30
31 31 def setupUi2(self):
32 32
33 33 functions2.detect_devices(self) #busca los dispositivos de grabacion
34 34
35 35 #Revisa si existe el archivo de confirguracion
36 36 if os.path.isfile("parameters.conf"):
37 37 self.txtInfo.append("Archivo de configuracion encontrado")
38 38 functions2.get_parameters_conf(self)
39 39 else:
40 40 self.txtInfo.append("Elija los parametros de configuracion")
41 41 functions2.set_parameters(self) #Establece ciertos parametros, para pruebas
42 42
43 43 functions2.set_vars(self) #Carga las variables de la clase con los parametros seleccionados
44 44
45 45 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
46 46 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
47 47
48 48 self.var_n_discs=0
49 49 self.var_list=[]
50 50 self.var_sublist=[]
51 51
52 52 functions.load_days(self)
53 53
54 54 self.var_process = QtCore.QProcess()
55 55 self.connect(self.var_process, QtCore.SIGNAL('readyReadStandardOutput()'), self.readOuput)
56 56 self.connect(self.var_process, QtCore.SIGNAL('readyReadStandardError()'), self.readError)
57 57 self.connect(self.var_process, QtCore.SIGNAL('finished(int,QProcess::ExitStatus)'), self.finished)
58 58
59 59 def readOuput(self):
60 60 self.txtSburn.insertPlainText("stdout: " + QtCore.QString(self.var_process.readAllStandardOutput()))
61 61
62 62
63 63 def readError(self):
64 64 self.txtSburn.insertPlainText("stderr: " + QtCore.QString(self.var_process.readAllStandardError()))
65 65
66 66
67 67 def finished(self):
68 68 self.txtInfo.append("proceso terminado finished()")
69 69 print self.var_process.exitCode()
70 70
71 71
72 72 def write(self, txt):
73 73 self.txtInfo.append(str(txt))
74 74
75 #----------------------------------------------------- Obtencion de las ruta de los datos ---------------------------------------------------------------
75 76
76 77 @pyqtSignature("")
77 78 def on_btnDpath_clicked(self):
78 79 """
79 80 Permite seleccionar graficamente el direcorio de los datos a grabar
80 81 """
81 82 self.var_Dpath= QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly)
82 83 self.txtDpath.setText(self.var_Dpath)
83 self.on_txtDpath_editingFinished() #llamada a funcion
84
85
86 @pyqtSignature("")
87 def on_btnRpath_clicked(self):
88 """
89 Permite seleccionar graficamente el direcorio del proyecto
90 """
91 self.var_Rpath = QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly)
92 self.txtRpath.setText(self.var_Rpath)
93 self.on_txtRpath_editingFinished() #llamada a funcion
94
95
84 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
85 functions.load_days(self)
86
87
96 88 @pyqtSignature("")
97 89 def on_txtDpath_editingFinished(self):
98 90 """
99 Permite buscar los archivos de extension seleccionada en la ruta de de datos
100 y cargar los valores para el rango de tiempo a ser grabado
91 Carga la ruta editada y verifica que sea correcta y carga la lista de dias
101 92 """
102 93 self.var_Dpath=self.txtDpath.text() #Se carga la variable con la ruta recien editada
103 94 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
104 95 functions.load_days(self)
96
97
98 #----------------------------------------------------- Obtencion de las ruta del proyecto ---------------------------------------------------------------
99
100 @pyqtSignature("")
101 def on_btnRpath_clicked(self):
102 """
103 Permite seleccionar graficamente el direcorio del proyecto
104 """
105 self.var_Rpath = QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly)
106 self.txtRpath.setText(self.var_Rpath)
107 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
105 108
106 109
107 110 @pyqtSignature("")
108 111 def on_txtRpath_editingFinished(self):
109 112 """
110 113 Valida la ruta del proyecto
111 114 """
112 115 self.var_Rpath=self.txtRpath.text() #Se carga la variable con la ruta recien editada
113 116 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
114
115
117
118
119 #----------------------------------------------------- Tipo de datos ---------------------------------------------------------------
120
116 121 @pyqtSignature("int")
117 122 def on_lstDtype_activated(self, index):
118 123 """
119 124 Permite elegir entre los tipos de archivos
120 125 """
121 126 self.txtDtype.setReadOnly(True)
122 127 if index == 0:
123 var_type='r'
128 self.var_Dtype ='r'
124 129 elif index == 1:
125 var_type='pdata'
130 self.var_Dtype ='pdata'
126 131 elif index == 2:
127 var_type='sswma'
132 self.var_Dtype ='sswma'
128 133 else :
129 var_type=''
134 self.var_Dtype =''
130 135 self.txtDtype.setReadOnly(False)
131 136
132 self.txtDtype.setText(var_type)
133 self.on_txtDtype_editingFinished()
134
135
137 self.txtDtype.setText(self.var_Dtype)
138 functions.load_days(self) #llamada a funcion
139
136 140 @pyqtSignature("")
137 141 def on_txtDtype_editingFinished(self):
138 142 self.var_Dtype=self.txtDtype.text()
139 143 functions.load_days(self) #llamada a funcion
140
141
144
145
146 #----------------------------------------------------- Etiqueta ---------------------------------------------------------------
147
142 148 @pyqtSignature("")
143 149 def on_txtElabel_editingFinished(self):
144 150 self.var_Elabel = self.txtElabel.text()
145 151
146
152 #----------------------------------------------------- Numero de copias ---------------------------------------------------------------
147 153 @pyqtSignature("")
148 154 def on_txtCopys_editingFinished(self):
149 155 self.var_Copys = self.txtCopys.value()
150 156
151
152 @pyqtSignature("")
153 def on_txtDcapacity_editingFinished(self):
154 self.var_Dcapacity = self.txtDcapacity.value()
155
156
157 #----------------------------------------------------- Seleccion del rango de fechas ---------------------------------------------------------------
158
157 159 @pyqtSignature("int") #CLOSED
158 160 def on_lstStartDay_activated(self, index):
159 161 """
160 162 Cambia la lista de opciones en lstStopDay
161 163 """
162 164 var_StopDay_index=self.lstStopDay.count() - self.lstStopDay.currentIndex()
163 165 self.lstStopDay.clear()
164 166
165 167 for i in self.var_list[index:]:
166 168 self.lstStopDay.addItem(i)
167 169
168 170 self.lstStopDay.setCurrentIndex(self.lstStopDay.count() - var_StopDay_index)
169 171
170 172 functions.get_sub_list(self)
171 173
172 174
173 175 @pyqtSignature("int") #CLOSED
174 176 def on_lstStopDay_activated(self, index):
175 177 """
176 178 Cambia la lista de opciones en lstStartDay
177 179 """
178 180 var_StartDay_index=self.lstStartDay.currentIndex()
179 181 var_end_index = self.lstStopDay.count() - index
180 182 self.lstStartDay.clear()
181 183
182 184 for i in self.var_list[:len(self.var_list) - var_end_index + 1]:
183 185 self.lstStartDay.addItem(i)
184 186
185 187 self.lstStartDay.setCurrentIndex(var_StartDay_index)
186 188
187 189 functions.get_sub_list(self)
188
189
190
191
192 #----------------------------------------------------- Capacidad del dispositivo de grabacion ---------------------------------------------------------------
193
194 @pyqtSignature("")
195 def on_txtDcapacity_editingFinished(self):
196 self.var_Dcapacity = self.txtDcapacity.value()
197
198
190 199 @pyqtSignature("int") #CLOSED
191 200 def on_lstDcapacity_activated(self, index):
192 201 """
193 202 Permite elegir el tamaΓ±o del disco
194 203 """
195 204 if index == 0:
196 205 var_size=25.0
197 206 elif index == 1:
198 207 var_size=8.5
199 208 elif index == 2:
200 209 var_size=4.7
201 210 elif index == 3:
202 211 var_size=0.7
203 212
204 213 if index != 4:
205 214 self.txtDcapacity.setValue(var_size*10**9/1024**2)
206 215 self.txtDcapacity.setReadOnly(True)
207 216 else:
208 217 self.txtDcapacity.setValue(100.0)
209 218 self.txtDcapacity.setReadOnly(False)
210 219
211 220 self.var_Dcapacity = self.txtDcapacity.value()
212 221
222
223 #==============================================================================
224 # Botones para la generacion de los archivos de configuracion y el proceso de grabacion
225 #==============================================================================
226
227 #----------------------------------------------------- Generacion de la configuracion usando los parametros ---------------------------------------------------------------
213 228
214 229 @pyqtSignature("")
215 230 def on_btnGbkp_clicked(self):
216 231 """
217 Cuando se presiona el boton btnGbkp
232 Generacion de archivos de configuracion usando los parametros
218 233 """
219 234
220 235 if functions.validate_parameters(self) == False:
221 236 return
222 237
223 238 #Crea las carpetas en la ruta del proyecto y verifica que se crearon correctamente
224 239 list_dirs=['gpath','iso','ppath']
225 240 bool_make_dirs = functions.make_dirs(list_dirs, self)
226 241 if bool_make_dirs == False:
227 242 return
228 243
229 244 var_files_list = functions.list_files(self) #Se obtiene la lista de archivos a grabar
230 245 self.var_n_discs = functions.make_files_dat(var_files_list, self) #Se crean los archivos .dat
231 246 functions.make_files_print(self) # Se crean los archivos .print
232 247 functions2.make_parameters_conf(self) # se crea el archivo parameters.conf
233 248
234 #Se deshabilitan los parametros de configuracion
249 #Se bloquean los parametros de configuracion
235 250 functions2.enabled_items1(True, self)
251
252
253 #----------------------------------------------------- Permite reiniciar la configuracion ---------------------------------------------------------------
236 254
237 255 @pyqtSignature("")
238 256 def on_btnRestart_clicked(self):
239 257 """
240 258 Permite que se puedan cambiar los parametros
241 259 """
242 260 functions2.enabled_items1(False, self)
243 261 os.remove("parameters.conf")
244 262
263
264 #----------------------------------------------------- Iniciar proceso de grabacion ---------------------------------------------------------------
245 265
246 266 @pyqtSignature("")
247 267 def on_btnStartburn_clicked(self):
248 268 """
249 269 Se inicia el proceso de grabacion
250 270 """
251 271 self.btnRestart.setEnabled(False)
252 272 self.btnStartburn.setEnabled(False)
253 273 self.btnStopburn.setEnabled(True)
254 274
255 275 sys.stdout = self
256 276 #sys.stderr = self
257 277 print "stdout_!!!"
258 278
259 279 #Inicializando variables
260 280 var_Rpath_ppath=self.var_Rpath+"/ppath"
261 281 var_Rpath_iso=self.var_Rpath+"/iso"
262 282
263 283 var_n=1
264 284 file_iso=var_Rpath_iso+"/"+functions.i2s(var_n)+".iso"
265 285 file_dat=var_Rpath_ppath+"/"+self.var_Elabel+"_"+functions.i2s(var_n)+".dat"
266 286
267 287 var_cmd = 'genisoimage -hide-joliet-trans-tbl -joliet-long -r '
268 288 var_cmd += ' -A '+self.var_Elabel+' -V '+self.var_Elabel
269 289 var_cmd += ' -graft-points -path-list '+ file_dat+' -o '+file_iso
270 290
271 291 # self.process.start(var_cmd)
272 292 self.var_process.start(var_cmd)
273 293 # self.var_process.waitForFinished()
274 294 self.txtInfo.append("ejecutandose")
275 295
276 296
277 297 # # Se leen todos los archivos .dat creados para crear las etiquetas en los archivos .ps
278 298 # for var_n in range(1, self.var_n_discs+1):
279 299 # self.txtInfo.append(str(var_n))
280 300 # file_iso=var_Rpath_iso+"/"+functions.i2s(var_n)+".iso"
281 301 # file_dat=var_Rpath_ppath+"/"+self.var_Elabel+"_"+functions.i2s(var_n)+".dat"
282 302 #
283 303 # var_cmd = 'genisoimage -hide-joliet-trans-tbl -joliet-long -r '
284 304 # var_cmd += ' -A '+self.var_Elabel+' -V '+self.var_Elabel
285 305 # var_cmd += ' -graft-points -path-list '+ file_dat+' -o '+file_iso
286 306 # self.txtInfo.append(var_cmd)
287 307 #
288 308 # var_output=commands.getstatusoutput(str(var_cmd))[0]
289 309 # self.txtInfo.append(str(var_output))
290 310
291 311 #os.system(str(var_cmd))
292 312 #p = subprocess.Popen(str('ls /'), shell=True, stdout=self)
293 313 #os.waitpid(p.pid, 0)
294 314 ####self.txtInfo.append(str(p.pid))
295 315
296 316
317 #----------------------------------------------------- Detener proceso de grabacion ---------------------------------------------------------------
318
297 319 @pyqtSignature("")
298 320 def on_btnStopburn_clicked(self):
299 321 """
300 322 Slot documentation goes here.
301 323 """
302 324 self.btnRestart.setEnabled(True)
303 325 self.btnStartburn.setEnabled(True)
304 326 self.btnStopburn.setEnabled(False)
305
327
328
329 #----------------------------------------------------- Testeo de las unidades de grabacion ---------------------------------------------------------------
330
306 331 @pyqtSignature("")
307 332 def on_btnTdevA_clicked(self):
308 333 var_dev = str(self.txtDeviceA.text())
309 334 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
310 335 commands.getstatusoutput(var_cmd)
311 336
312 337 @pyqtSignature("")
313 338 def on_btnTdevB_clicked(self):
314 339 var_dev = str(self.txtDeviceB.text())
315 340 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
316 341 commands.getstatusoutput(var_cmd)
317 342
318 343 @pyqtSignature("")
319 344 def on_btnTdevC_clicked(self):
320 345 var_dev = str(self.txtDeviceC.text())
321 346 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
322 347 commands.getstatusoutput(var_cmd)
323 348
324 349 @pyqtSignature("")
325 350 def on_btnTdevD_clicked(self):
326 351 var_dev = str(self.txtDeviceD.text())
327 352 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
328 353 commands.getstatusoutput(var_cmd)
General Comments 0
You need to be logged in to leave comments. Login now