##// END OF EJS Templates
***
ralonso -
r86:87
parent child
Show More
@@ -1,300 +1,305
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 #----------------------------------------------------- Deteccion de los dispositivos de grabacion ---------------------------------------------------------------
11 11
12 12 def detect_devices(self):
13 13 """
14 14 Deteccion de los dispositvos de grabacion
15 15 """
16 16 #var_cmd="wodim --devices | grep /dev/ | awk -F\' '{print $2}'" #Funciona en consola pero no en python ΒΏ?
17 17 var_cmd="wodim --devices | grep /dev/ | awk '{print $2}' | awk -F= '{print $2}'"
18 18
19 19 var_output = commands.getstatusoutput(var_cmd)
20 20 if var_output[0] != 0:
21 21 self.txtInfo.append("No recording devices")
22 22 else:
23 23 var_devices = var_output[1].split('\n')
24 24
25 25 var_tmp=[]
26 26 for i in range(0, 4):
27 27 if i < len(var_devices):
28 28 var_len = len(var_devices[i])
29 29 var_tmp.append(var_devices[i][1:var_len - 1])
30 30 else:
31 31 var_tmp.append('')
32 32
33 33 #Se escriben los dispostivos correspodientes, si existen
34 34 self.txtDeviceA.setText(str(var_tmp[0]))
35 35 self.txtDeviceB.setText(str(var_tmp[1]))
36 36 self.txtDeviceC.setText(str(var_tmp[2]))
37 37 self.txtDeviceD.setText(str(var_tmp[3]))
38 38 #Se desactivan los que no existen
39 39 if len(var_tmp[0]) == 0 :
40 40 self.chkDevA.setChecked(False)
41 41 self.chkDevA.setEnabled(False)
42 42 if len(var_tmp[1]) == 0 :
43 43 self.chkDevB.setChecked(False)
44 44 self.chkDevB.setEnabled(False)
45 45 if len(var_tmp[2]) == 0 :
46 46 self.chkDevC.setChecked(False)
47 47 self.chkDevC.setEnabled(False)
48 48 if len(var_tmp[3]) == 0 :
49 49 self.chkDevD.setChecked(False)
50 50 self.chkDevD.setEnabled(False)
51 51
52 52 #----------------------------------- expulsa los dispositivos de grabacion --------------------------------------------
53 53
54 54 def eject_devices(self):
55 55 for var_dev in self.var_devices:
56 56 var_cmd = 'eject ' + var_dev
57 57 commands.getstatusoutput(var_cmd)
58 58
59 59 #Expulsa el dispositivo de grabacion actual
60 60 def eject_one_device(self):
61 61 var_index = ( ( (self.var_disc_n - 1) * self.var_Copys) + (self.var_copy_n - 1) - self.var_burned_discs ) % len(self.var_devices)
62 62 var_dev = self.var_devices[var_index]
63 63 var_cmd = 'eject ' + var_dev
64 64 commands.getstatusoutput(var_cmd)
65 65
66 66 def eject_t_one_device(self):
67 67 var_index = ( ( (self.var_disc_n - 1) * self.var_Copys) + (self.var_copy_n - 1) - self.var_burned_discs ) % len(self.var_devices)
68 68 var_dev = self.var_devices[var_index]
69 69 var_cmd = 'eject -t ' + var_dev
70 70 commands.getstatusoutput(var_cmd)
71 71
72 72 def get_dev_sr(self):
73 73 var_index = ( ( (self.var_disc_n - 1) * self.var_Copys) + (self.var_copy_n - 1) - self.var_burned_discs ) % len(self.var_devices)
74 74 var_dev = self.var_devices[var_index]
75 75 var_output=commands.getstatusoutput('ls -lh '+var_dev)
76 76 if var_output[0] != 0:
77 77 return "FATAL ERROR"
78 78 else:
79 79 var_dev_sr = "/dev/"+var_output[1] .split()[-1]
80 80 return var_dev_sr
81 81
82 82
83 83 #----------------------------------- devuelve una lista con las carpetas en las cuales estan montados los dispositivos --------------------------------------------
84 84 def mounted_devices():
85 85
86 86 var_type = "tmpfs"
87 87 var_output=commands.getstatusoutput('df -hT | grep '+ var_type)
88 88
89 89 if var_output[0] != 0:
90 90 return "FATAL ERROR"
91 91
92 92 else:
93 93 if len(var_output[1]) == 0:
94 94 return "FATAL ERROR"
95 95
96 96 list_dirs = []
97 97 for var_dir in var_output[1].split('\n'):
98 98 list_dirs.append(var_dir.split()[-1])
99 99
100 100 return list_dirs
101 101
102 102
103 103 #----------------------------------- listado de los dispositivos de grabacion seleccionados --------------------------------------------
104 104
105 105 def selected_devices(self):
106 106 self.var_devices=[]
107 107 if self.chkDevA.isChecked():
108 108 self.var_devices.append(str(self.txtDeviceA.text()))
109 109 if self.chkDevB.isChecked():
110 110 self.var_devices.append(str(self.txtDeviceB.text()))
111 111 if self.chkDevC.isChecked():
112 112 self.var_devices.append(str(self.txtDeviceC.text()))
113 113 if self.chkDevD.isChecked():
114 114 self.var_devices.append(str(self.txtDeviceD.text()))
115 115
116 116 if len(self.var_devices) == 0:
117 117 return False
118 118 else:
119 119 return True
120 120
121 121
122 122 #----------------------------------------------------- Inicializacion para pruebas---------------------------------------------------------------
123 123
124 124 def set_parameters_test(self):
125 125 """
126 126 Se usa para inicializar ciertos parametros para pruebas
127 127 """
128 128 self.txtDpath.setText('/home/ricardoar/optional/STORAGE/EW_DRIFTS')
129 129 self.txtRpath.setText('/home/ricardoar/optional/prueba1_jro_backup_manager')
130 130 self.txtElabel.setText('EW_DRIFTS_pruebas')
131 131 self.lstDcapacity.setCurrentIndex(4)
132 132 self.txtDcapacity.setValue(100.0)
133 133 self.txtDcapacity.setReadOnly(False)
134 134
135 135 def set_devices_test(self):
136 136 self.txtDeviceA.setText("/dev/scd0")
137 137 self.txtDeviceB.setText("/dev/scd1")
138 138 self.txtDeviceC.setText("/dev/scd2")
139 139 self.txtDeviceD.setText("/dev/scd3")
140 140
141 141
142 142
143 143 #----------------------------------------------------- crea parameters.conf ---------------------------------------------------------------
144 144
145 145 def make_parameters_conf(self):
146 146 var_file = open("parameters.conf","w")
147 147 var_file.write(self.var_Dpath+"\n") #0 Ruta de los datos
148 148 var_file.write(self.var_Rpath+"\n") #1 Ruta del proyecto
149 149 var_file.write(str(self.var_lstDtype)+"\n") #2 opcion Data Type
150 150 var_file.write(self.var_Dtype+"\n") #3 extension Data Type
151 151 var_file.write(self.var_Elabel+"\n") #4 etiqueta
152 152 var_file.write(str(self.var_Copys)+"\n") #5 Numero de copias
153 153 var_file.write(str(self.var_lstDcapacity)+"\n") #6 opcion Device Capacity
154 154 var_file.write(str(self.var_Dcapacity)+"\n") #7 tamaΓ±o Device Capacity
155 155 var_file.write(str(self.var_Discs)+"\n") #8 Numero de discos a grabar
156 156 # var_file.write(str(self.lstStartDay.currentIndex())+"\n") #9 Indice fecha inicial
157 157 # var_file.write(str(self.lstStopDay.currentIndex())+"\n") #10 Indice fecha final
158 158 var_file.close()
159 159
160 160 #----------------------------------------------------- carga parameters.conf ---------------------------------------------------------------
161 161
162 162 def get_parameters_conf(self):
163 163 var_file = open("parameters.conf","r")
164 164 lines = var_file.readlines()
165 165 self.txtDpath.setText(lines[0][:-1]) #0
166 166 self.txtRpath.setText(lines[1][:-1]) #1
167 167 self.lstDtype.setCurrentIndex(int(lines[2])) #2
168 168 self.txtDtype.setText(lines[3][:-1]) #3
169 169 self.txtElabel.setText(lines[4][:-1]) #4
170 170 self.txtCopys.setValue(int(lines[5][:-1])) #5
171 171 self.lstDcapacity.setCurrentIndex(int(lines[6])) #6
172 172 self.txtDcapacity.setValue(float(lines[7])) #7
173 173 self.var_Discs = int(lines[8]) #8
174 174 # var_StartDay = int(lines[6]) #9
175 175 # var_StopDay = int(lines[7]) #10
176 176 ################################
177 177 self.var_Copys = self.txtCopys.value() #5
178 178 ################################
179 179
180 180 var_file.close()
181 181
182 182
183 183 #-------------------------- actualiza el valor de las variables con los parametros seleccionados -----------------------------
184 184
185 185 def set_vars(self):
186 186 self.var_Dpath = str(self.txtDpath.text()) #0
187 187 self.var_Rpath = str(self.txtRpath.text()) #1
188 188 self.var_lstDtype = self.lstDtype.currentIndex() #2
189 189 self.var_Dtype = str(self.txtDtype.text()) #3
190 190 self.var_Elabel = str(self.txtElabel.text()) #4
191 191 self.var_Copys = self.txtCopys.value() #5
192 192 self.var_lstDcapacity = self.lstDcapacity.currentIndex() #6
193 193 self.var_Dcapacity = self.txtDcapacity.value() #7
194 194 self.var_Discs = self.var_Discs #8
195 195
196 196
197 197 #-------------------------- crea burning.conf -----------------------------
198 198
199 199 def make_burning_conf(self):
200 200 var_file = open("burning.conf","w")
201 201 var_n_burned_discs = ( ( (self.var_disc_n - 1) * self.var_Copys) + self.var_copy_n - 1 )
202 202 var_file.write(str(var_n_burned_discs)+"\n") #0 Numero de discos ya grabados
203 203 var_file.write(str(self.var_disc_n)+"\n") #1 Disco actual para grabar
204 204 var_file.write(str(self.var_copy_n)+"\n") #2 Numero de copia actual para grabar
205 205 var_file.close()
206 206
207 207 #----------------------------------------------------- carga burning.conf ---------------------------------------------------------------
208 208
209 209 def get_burning_conf(self):
210 210 var_file = open("burning.conf","r")
211 211 lines = var_file.readlines()
212 212 self.var_burned_discs = int(lines[0]) #0
213 213 self.var_disc_n = int(lines[1])
214 214 self.var_copy_n = int(lines[2])
215 215 var_file.close()
216 216
217 217 #---------------------------------------------- Habilitacion y deshabilitacion de items -------------------------------------------------------
218 218
219 219 def enabled_items1(var_bool, self):
220 220 self.tabParameters.setEnabled(not(var_bool))
221 221 self.lstDcapacity.setEnabled(not(var_bool))
222 222 self.txtDcapacity.setEnabled(not(var_bool))
223 223 self.actionChange_Parameters.setEnabled(var_bool)
224 224 self.btnGbkp.setEnabled(not(var_bool))
225 225 self.btnRestart.setEnabled(var_bool)
226 226 self.btnStartburn.setEnabled(var_bool)
227 227
228 228
229 229 def enabled_items2(var_bool, self):
230 230 self.btnRestart.setEnabled(not(var_bool))
231 231 self.btnStartburn.setEnabled(not(var_bool))
232 232 self.btnStopburn.setEnabled(var_bool)
233 233 self.chkCheck.setEnabled(not(var_bool))
234 234 self.chkCheck.setChecked(False)
235 235
236 236 self.actionChange_Parameters.setEnabled(False)
237 237
238 238
239 239 def enabled_items3(var_bool, self):
240 240 self.btnRestart.setEnabled(not(var_bool))
241 241 self.btnStartburn.setEnabled(not(var_bool))
242 242 self.btnStopburn.setEnabled(var_bool)
243 243 self.chkCheck.setEnabled(not(var_bool))
244 244 self.chkCheck.setChecked(False)
245
246
247 self.actionChange_Parameters.setEnabled(False)
248
249 self.actionChange_Parameters.setEnabled(False)
245 250
246 251 self.actionChange_Parameters.setEnabled(False)
247 252
248 253
249 254 #---------------------------------------------- Actualiza estado en los labels -------------------------------------------------------
250 255
251 256 def update_message(type, message, self, index=-1):
252 257 if index == -1:
253 258 var_index = ( ( (self.var_disc_n - 1) * self.var_Copys) + (self.var_copy_n - 1) - self.var_burned_discs ) % len(self.var_devices)
254 259 else:
255 260 var_index = index
256 261
257 262 var_message = message
258 263 # var_message = "BURNING"
259 264 # var_message = "COMPLETED"
260 265 # var_message = "ERROR"
261 266 # var_message = "CHECKING"
262 267 # var_message = "CHECKED"
263 268
264 269 if type == 1:
265 270
266 271 if var_index == 0:
267 272 self.txtBstatusA.setText(var_message)
268 273 self.txtBdiscA.setText(str(self.var_disc_n))
269 274 self.txtBcopyA.setText(str(self.var_copy_n))
270 275
271 276 if var_index == 1:
272 277 self.txtBstatusB.setText(var_message)
273 278 self.txtBdiscB.setText(str(self.var_disc_n))
274 279 self.txtBcopyB.setText(str(self.var_copy_n))
275 280
276 281 if var_index == 2:
277 282 self.txtBstatusC.setText(var_message)
278 283 self.txtBdiscC.setText(str(self.var_disc_n))
279 284 self.txtBcopyC.setText(str(self.var_copy_n))
280 285
281 286 if var_index == 3:
282 287 self.txtBstatusD.setText(var_message)
283 288 self.txtBdiscD.setText(str(self.var_disc_n))
284 289 self.txtBcopyD.setText(str(self.var_copy_n))
285 290
286 291 if type == 2:
287 292
288 293 if var_index == 0:
289 294 self.txtCHstatusA.setText(var_message)
290 295
291 296 if var_index == 1:
292 297 self.txtCHstatusB.setText(var_message)
293 298
294 299 if var_index == 2:
295 300 self.txtCHstatusC.setText(var_message)
296 301
297 302 if var_index == 3:
298 303 self.txtCHstatusD.setText(var_message)
299 304
300 305
General Comments 0
You need to be logged in to leave comments. Login now