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()
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"))