##// END OF EJS Templates
#para prueba de verificacion de datos en el proceso de grabacion
#para prueba de verificacion de datos en el proceso de grabacion

File last commit:

r83:84
r83:84
Show More
functions2.py
274 lines | 10.3 KiB | text/x-python | PythonLexer
# -*- coding: utf-8 -*-
from subprocess import *
import sys
import os
import subprocess
import commands
#----------------------------------------------------- Deteccion de los dispositivos de grabacion ---------------------------------------------------------------
def detect_devices(self):
"""
Deteccion de los dispositvos de grabacion
"""
#var_cmd="wodim --devices | grep /dev/ | awk -F\' '{print $2}'" #Funciona en consola pero no en python ¿?
var_cmd="wodim --devices | grep /dev/ | awk '{print $2}' | awk -F= '{print $2}'"
var_output = commands.getstatusoutput(var_cmd)
if var_output[0] != 0:
self.txtInfo.append("No recording devices")
else:
var_devices = var_output[1].split('\n')
var_tmp=[]
for i in range(0, 4):
if i < len(var_devices):
var_len = len(var_devices[i])
var_tmp.append(var_devices[i][1:var_len - 1])
else:
var_tmp.append('')
#Se escriben los dispostivos correspodientes, si existen
self.txtDeviceA.setText(str(var_tmp[0]))
self.txtDeviceB.setText(str(var_tmp[1]))
self.txtDeviceC.setText(str(var_tmp[2]))
self.txtDeviceD.setText(str(var_tmp[3]))
#Se desactivan los que no existen
if len(var_tmp[0]) == 0 :
self.chkDevA.setChecked(False)
self.chkDevA.setEnabled(False)
if len(var_tmp[1]) == 0 :
self.chkDevB.setChecked(False)
self.chkDevB.setEnabled(False)
if len(var_tmp[2]) == 0 :
self.chkDevC.setChecked(False)
self.chkDevC.setEnabled(False)
if len(var_tmp[3]) == 0 :
self.chkDevD.setChecked(False)
self.chkDevD.setEnabled(False)
#----------------------------------- expulsa los dispositivos de grabacion --------------------------------------------
def eject_devices(self):
for var_dev in self.var_devices:
var_cmd = 'eject ' + var_dev
commands.getstatusoutput(var_cmd)
#Expulsa el dispositivo de grabacion actual
def eject_one_device(self):
var_index = ( ( (self.var_disc_n - 1) * self.var_Copys) + (self.var_copy_n - 1) - self.var_burned_discs ) % len(self.var_devices)
var_dev = self.var_devices[var_index]
var_cmd = 'eject ' + var_dev
commands.getstatusoutput(var_cmd)
def eject_t_one_device(self):
var_index = ( ( (self.var_disc_n - 1) * self.var_Copys) + (self.var_copy_n - 1) - self.var_burned_discs ) % len(self.var_devices)
var_dev = self.var_devices[var_index]
var_cmd = 'eject -t ' + var_dev
commands.getstatusoutput(var_cmd)
def get_dev_sr(self):
var_index = ( ( (self.var_disc_n - 1) * self.var_Copys) + (self.var_copy_n - 1) - self.var_burned_discs ) % len(self.var_devices)
var_dev = self.var_devices[var_index]
var_output=commands.getstatusoutput('ls -lh '+var_dev)
if var_output[0] != 0:
return "FATAL ERROR"
else:
var_dev_sr = "/dev/"+var_output[1] .split()[-1]
return var_dev_sr
#----------------------------------- listado de los dispositivos de grabacion seleccionados --------------------------------------------
def selected_devices(self):
self.var_devices=[]
if self.chkDevA.isChecked():
self.var_devices.append(str(self.txtDeviceA.text()))
if self.chkDevB.isChecked():
self.var_devices.append(str(self.txtDeviceB.text()))
if self.chkDevC.isChecked():
self.var_devices.append(str(self.txtDeviceC.text()))
if self.chkDevD.isChecked():
self.var_devices.append(str(self.txtDeviceD.text()))
if len(self.var_devices) == 0:
return False
else:
return True
#----------------------------------------------------- Inicializacion para pruebas---------------------------------------------------------------
def set_parameters_test(self):
"""
Se usa para inicializar ciertos parametros para pruebas
"""
self.txtDpath.setText('/home/ricardoar/optional/STORAGE/EW_DRIFTS')
self.txtRpath.setText('/home/ricardoar/optional/prueba1_jro_backup_manager')
self.txtElabel.setText('EW_DRIFTS_pruebas')
self.lstDcapacity.setCurrentIndex(4)
self.txtDcapacity.setValue(100.0)
self.txtDcapacity.setReadOnly(False)
def set_devices_test(self):
self.txtDeviceA.setText("/dev/scd0")
self.txtDeviceB.setText("/dev/scd1")
self.txtDeviceC.setText("/dev/scd2")
self.txtDeviceD.setText("/dev/scd3")
#----------------------------------------------------- crea parameters.conf ---------------------------------------------------------------
def make_parameters_conf(self):
var_file = open("parameters.conf","w")
var_file.write(self.var_Dpath+"\n") #0 Ruta de los datos
var_file.write(self.var_Rpath+"\n") #1 Ruta del proyecto
var_file.write(str(self.var_lstDtype)+"\n") #2 opcion Data Type
var_file.write(self.var_Dtype+"\n") #3 extension Data Type
var_file.write(self.var_Elabel+"\n") #4 etiqueta
var_file.write(str(self.var_Copys)+"\n") #5 Numero de copias
var_file.write(str(self.var_lstDcapacity)+"\n") #6 opcion Device Capacity
var_file.write(str(self.var_Dcapacity)+"\n") #7 tamaño Device Capacity
var_file.write(str(self.var_Discs)+"\n") #8 Numero de discos a grabar
# var_file.write(str(self.lstStartDay.currentIndex())+"\n") #9 Indice fecha inicial
# var_file.write(str(self.lstStopDay.currentIndex())+"\n") #10 Indice fecha final
var_file.close()
#----------------------------------------------------- carga parameters.conf ---------------------------------------------------------------
def get_parameters_conf(self):
var_file = open("parameters.conf","r")
lines = var_file.readlines()
self.txtDpath.setText(lines[0][:-1]) #0
self.txtRpath.setText(lines[1][:-1]) #1
self.lstDtype.setCurrentIndex(int(lines[2])) #2
self.txtDtype.setText(lines[3][:-1]) #3
self.txtElabel.setText(lines[4][:-1]) #4
self.txtCopys.setValue(int(lines[5][:-1])) #5
self.lstDcapacity.setCurrentIndex(int(lines[6])) #6
self.txtDcapacity.setValue(float(lines[7])) #7
self.var_Discs = int(lines[8]) #8
# var_StartDay = int(lines[6]) #9
# var_StopDay = int(lines[7]) #10
################################
self.var_Copys = self.txtCopys.value() #5
################################
var_file.close()
#-------------------------- actualiza el valor de las variables con los parametros seleccionados -----------------------------
def set_vars(self):
self.var_Dpath = str(self.txtDpath.text()) #0
self.var_Rpath = str(self.txtRpath.text()) #1
self.var_lstDtype = self.lstDtype.currentIndex() #2
self.var_Dtype = str(self.txtDtype.text()) #3
self.var_Elabel = str(self.txtElabel.text()) #4
self.var_Copys = self.txtCopys.value() #5
self.var_lstDcapacity = self.lstDcapacity.currentIndex() #6
self.var_Dcapacity = self.txtDcapacity.value() #7
self.var_Discs = self.var_Discs #8
#-------------------------- crea burning.conf -----------------------------
def make_burning_conf(self):
var_file = open("burning.conf","w")
var_n_burned_discs = ( ( (self.var_disc_n - 1) * self.var_Copys) + self.var_copy_n - 1 )
var_file.write(str(var_n_burned_discs)+"\n") #0 Numero de discos ya grabados
var_file.write(str(self.var_disc_n)+"\n") #1 Disco actual para grabar
var_file.write(str(self.var_copy_n)+"\n") #2 Numero de copia actual para grabar
var_file.close()
#----------------------------------------------------- carga burning.conf ---------------------------------------------------------------
def get_burning_conf(self):
var_file = open("burning.conf","r")
lines = var_file.readlines()
self.var_burned_discs = int(lines[0]) #0
self.var_disc_n = int(lines[1])
self.var_copy_n = int(lines[2])
var_file.close()
#---------------------------------------------- Habilitacion y deshabilitacion de items -------------------------------------------------------
def enabled_items1(var_bool, self):
self.tabParameters.setEnabled(not(var_bool))
self.lstDcapacity.setEnabled(not(var_bool))
self.txtDcapacity.setEnabled(not(var_bool))
self.actionChange_Parameters.setEnabled(var_bool)
self.btnGbkp.setEnabled(not(var_bool))
self.btnRestart.setEnabled(var_bool)
self.btnStartburn.setEnabled(var_bool)
def enabled_items2(var_bool, self):
self.btnRestart.setEnabled(not(var_bool))
self.btnStartburn.setEnabled(not(var_bool))
self.btnStopburn.setEnabled(var_bool)
self.chkCheck.setEnabled(not(var_bool))
self.chkCheck.setChecked(False)
self.actionChange_Parameters.setEnabled(False)
#---------------------------------------------- Actualiza estado en los labels -------------------------------------------------------
def update_message(type, message, self, index=0, ):
if index == 0:
var_index = ( ( (self.var_disc_n - 1) * self.var_Copys) + (self.var_copy_n - 1) - self.var_burned_discs ) % len(self.var_devices)
else:
var_index = index
var_message = message
# var_message = "BURNING"
# var_message = "COMPLETED"
# var_message = "ERROR"
# var_message = "CHECKING"
# var_message = "CHECKED"
if type == 1:
if var_index == 0:
self.txtBstatusA.setText(var_message)
self.txtBdiscA.setText(str(self.var_disc_n))
self.txtBcopyA.setText(str(self.var_copy_n))
if var_index == 1:
self.txtBstatusB.setText(var_message)
self.txtBdiscB.setText(str(self.var_disc_n))
self.txtBcopyB.setText(str(self.var_copy_n))
if var_index == 2:
self.txtBstatusC.setText(var_message)
self.txtBdiscC.setText(str(self.var_disc_n))
self.txtBcopyC.setText(str(self.var_copy_n))
if var_index == 3:
self.txtBstatusD.setText(var_message)
self.txtBdiscD.setText(str(self.var_disc_n))
self.txtBcopyD.setText(str(self.var_copy_n))
if type == 2:
if var_index == 0:
self.txtCHstatusA.setText(var_message)
if var_index == 1:
self.txtCHstatusB.setText(var_message)
if var_index == 2:
self.txtCHstatusC.setText(var_message)
if var_index == 3:
self.txtCHstatusD.setText(var_message)