|
|
# -*- 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)
|
|
|
|
|
|
|
|
|
|