Example #1
0
 def iniciar(self, rut_num, rut_dv, user_pas):
     self.rut_num = rut_num
     self.rut_dv = rut_dv
     self.np = NavegaPucv(rut_num, rut_dv, user_pas)
     self.start()
Example #2
0
class Worker(QtCore.QThread):
    def iniciar(self, rut_num, rut_dv, user_pas):
        self.rut_num = rut_num
        self.rut_dv = rut_dv
        self.np = NavegaPucv(rut_num, rut_dv, user_pas)
        self.start()

    def run(self):
        self.emit(QtCore.SIGNAL("actOutput"), "Conectando al navegador...")
        self.emit(QtCore.SIGNAL("actProgreso(int)"),5)

        # Verifico si el usuario y contraseƱa son validos
        if not self.np.conectar():
            self.emit(QtCore.SIGNAL("actOutput"), "Error.")
            self.emit(QtCore.SIGNAL("error"),"Usuario o contraseƱa incorrectos")
            return
        else:
            self.emit(QtCore.SIGNAL("actOutput"), "OK. Conectado.")
        self.emit(QtCore.SIGNAL("actProgreso(int)"),10)

        # Pido la pagina con la lista de ramos...
        self.emit(QtCore.SIGNAL("actOutput"), "Descargando lista de ramos.")
        cursos = self.np.descargarListaCursos()
        self.emit(QtCore.SIGNAL("actProgreso(int)"),15)

        numeroCursos = len(cursos)

        if numeroCursos == 0:
            self.emit(QtCore.SIGNAL("actOutput"),
                "No hay cursos en tu horario.")
            return

        self.emit(QtCore.SIGNAL("actOutput"),
            "Hay {0} ramos inscritos.".format(len(cursos)))
        self.emit(QtCore.SIGNAL("actProgreso(int)"),20)

        avancePorCurso = 60/numeroCursos
        progreso = 20
        numeroHorarios = 0
        #lista = list()
        lista2 = {}
        ramos = list()

        # Descargo la pagina de cada ramos, extraigo los horarios y los guardo
        self.emit(QtCore.SIGNAL("actOutput"), "Descargando horarios.")
        for dato in cursos:
            for curso in self.np.descargarCurso(dato):
                progreso = progreso + (avancePorCurso/3)
                self.emit(QtCore.SIGNAL("actProgreso(int)"), progreso)
                idbloque = "{0}-{1}".format(curso[3],curso[4])
                if not idbloque in lista2:
                    lista2[idbloque] = [curso]
                else:
                    lista2[idbloque].append(curso)
                #lista.append(curso)
                numeroHorarios = numeroHorarios + 1
            self.emit(QtCore.SIGNAL("actOutput"),
                "Horario encontrado para {0}".format(curso[1][1]))
            ramos.append((curso[1][0], curso[1][1]))

        avancePorCurso = 18/numeroHorarios
        self.emit(QtCore.SIGNAL("actProgreso(int)"), progreso)

        self.emit(QtCore.SIGNAL("actOutput"), "Generando archivo javascript...")
        fp = open('horario.js',"w")
        fp.write("var version = '%s';\n" % (version))
        fp.write("var periodo = '%s';\n" % (self.np.periodo))
        fp.write('var clases = new Array();\n')
        fp.write('var topes = new Array();\n')
        fp.write('var ramos = new Array();\n\n')

        for ramo in ramos:
            fp.write("var ramo = new Array();\n")
            fp.write("ramo[0] = '%s';\n" % (ramo[0])) # sigla de asignatura
            fp.write("ramo[1] = '%s';\n" % (ramo[1])) # nombre de asignatura
            fp.write("ramos.push(ramo);\n")

        for idbloque,datos in lista2.iteritems():
            if len(datos) > 1:
                fp.write("var tope = new Array();\n")
                for tope in datos:
                    fp.write("var clase = new Array();\n")
                    fp.write("clase[0] = %s;\n" % (tope[0])) # id de asignatura
                    fp.write("clase[1] = '%s';\n" % (tope[1][0])) # sigla de asignatura
                    fp.write("clase[2] = '%s';\n" % (tope[1][1])) # nombre de asignatura
                    fp.write("clase[3] = %d;\n" % (tope[2])) # catedra o ayudantia ( 1 o 2 )
                    fp.write("clase[4] = %d;\n" % (tope[3])) # dia (1 al 6)
                    fp.write("clase[5] = %s;\n" % (tope[4])) # bloque
                    fp.write("clase[6] = '%s';\n" % (tope[5])) # sala
                    fp.write("tope.push(clase);\n\n")
                    progreso = progreso + avancePorCurso
                    self.emit(QtCore.SIGNAL("actProgreso(int)"), progreso)
                fp.write("topes.push(tope);\n\n")
                
            else:
                fp.write("var clase = new Array();\n")
                fp.write("clase[0] = %s;\n" % (datos[0][0])) # id de asignatura
                fp.write("clase[1] = '%s';\n" % (datos[0][1][0])) # sigla de asignatura
                fp.write("clase[2] = '%s';\n" % (datos[0][1][1])) # nombre de asignatura
                fp.write("clase[3] = %d;\n" % (datos[0][2])) # catedra o ayudantia ( 1 o 2 )
                fp.write("clase[4] = %d;\n" % (datos[0][3])) # dia (1 al 6)
                fp.write("clase[5] = %s;\n" % (datos[0][4])) # bloque
                fp.write("clase[6] = '%s';\n" % (datos[0][5])) # sala
                fp.write("clases.push(clase);\n\n")
                progreso = progreso + avancePorCurso
                self.emit(QtCore.SIGNAL("actProgreso(int)"), progreso)

        buf = """var dias = ["Lunes", "Martes","Miercoles","Jueves","Viernes","Sabado"];
var bloques = new Array();
bloques['1'] = '1-2';
bloques['3'] = '3-4';
bloques['5'] = '5-6';
bloques['7'] = '7-8';
bloques['9'] = '9-10';
bloques['11'] = '11-12';
bloques['13'] = '13-14';

function cargarHorario()
{
    var sigla = '<table width="80%" border="1" cellpadding="3" cellspacing="0" align="center"><tr><td class="titulo_td">Sigla</td><td class="titulo_td">Nombre Ramo</td></tr>';
    for(i=0;i < clases.length; i++)
    {
        id = clases[i][4]+'-'+clases[i][5];
        document.getElementById(id).innerHTML = '<div onmouseover="showBox(\\''+clases[i][2]+'\\', this)" onmouseout="hideBox()">'+clases[i][1] + '<br>'+clases[i][6]+'</div>';
        if(clases[i][3] == 1)
            document.getElementById(id).className = "td_catedra";
        else if(clases[i][3] == 2)
            document.getElementById(id).className = "td_ayudantia";
    }
    var i;
    var j;
    var tabla_topes = document.getElementById('tabla_topes');
    var buf = '<TABLE width="90%" border="1" cellpadding="0" cellspacing="0" align="center"><tr><td class="titulo_td" colspan="2">Detalle Topes de Horario</td></tr>';
    for (i in topes)
    {
        id = topes[i][0][4]+'-'+topes[i][0][5];
        document.getElementById(id).className = "td_tope";
        buf += '<tr><td class="topes" rowspan="'+topes[i].length+'">'+ dias[topes[i][0][4]-1] + '<br><b>Bloque '+ bloques[topes[i][0][5]] +'</b></td>';
        for(j in topes[i])
        {
            if(j != 0)
                buf += '<tr>';
            buf += '<td>'+topes[i][j][1]+' '+topes[i][j][2]+', Sala '+topes[i][j][6]+'</td>';
            if(j == 0)
                buf += '</tr>';
        }
        buf += '</tr>';
    }
    buf += '</table>';
    tabla_topes.innerHTML = buf;
    for(i=0;i < ramos.length;i++)
    {
        sigla = sigla + '<tr><td>' + ramos[i][0] + '</td><td>' + ramos[i][1] + '</td></tr>';
    }
    document.getElementById('siglas').innerHTML = sigla;
    document.getElementById('version').innerHTML = version;
    document.getElementById('periodo').innerHTML = periodo;
}
"""
        fp.write(buf)
        fp.close()
        self.emit(QtCore.SIGNAL("actOutput"), "Listo.")
        self.emit(QtCore.SIGNAL("actProgreso(int)"), 100)
        self.emit(QtCore.SIGNAL("listo"))