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