def extraer_evidencias_lista_cursos(driver, cursos, lista, ruta, terminados=False): for elemento in lista: curso = cursos[elemento] nombre = get_nombre_curso(curso) fecha = get_fecha_curso(curso) salidas.imprimir_salida('Extrayendo datos de curso: %s' % nombre, 1) salida0 = almacenamiento.crear_ruta(ruta, fecha) salida = almacenamiento.crear_ruta(salida0, nombre) extraer_evidencias_curso(driver, cursos, elemento, salida, terminados) driver.get(URL_MAIN) try: WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, 'lblTotalCursos'))) time.sleep(1) except: raise excepciones.CursosException( 'No se pudo refrescar página de cursos') if terminados: ir_a_cursos_terminados(driver) cursos = regresar_cursos(driver) # evitar stale
def extraer_evidencias_curso(driver, cursos, pk, ruta, terminados=False): if not pk in cursos.keys(): raise excepciones.CursosException('No existe el curso %s' % pk) curso = cursos[pk] ir_a_curso(driver, curso) actividades.ir_a_actividades(driver) salida = almacenamiento.crear_ruta(ruta, 'actividades') actividades.extraer_respuestas_actividades_curso(driver, salida) regresar_a_curso(driver, pk, terminados) evaluaciones.ir_a_evaluaciones(driver) salida = almacenamiento.crear_ruta(ruta, 'evaluaciones') evaluaciones.extraer_respuestas_evaluaciones_curso(driver, salida) regresar_a_curso(driver, pk, terminados)
def extraer_respuestas_entregas_curso(driver, ruta_salida, urlCurrent, urlStep2, urlStep3, etiqueta, cssClassEntrega): """ Realiza una extraccion de todas las respuestas de todas las entregas de un curso """ assert driver.current_url == urlCurrent index = 1 for entrega, isGrupo in regresar_entregas(driver, urlCurrent, cssClassEntrega): nombre = str(index) + '.- ' + get_nombre_entrega( driver, entrega, urlCurrent) salidas.imprimir_salida( 'Extrayendo datos de %s: %s' % (etiqueta, nombre), 2) ruta_entrega = almacenamiento.crear_ruta(ruta_salida, nombre) extraer_respuestas_entrega(driver, entrega, ruta_entrega, urlCurrent, urlStep2, urlStep3, etiqueta, isGrupo) driver.back() driver.refresh() index += 1 try: WebDriverWait( driver, 10).until(lambda browser: browser.current_url == urlCurrent) except: raise excepciones.EntregasException( 'No se pudo tener acceso a las entregas')
def extraer_respuestas_entrega(driver, entrega, ruta_salida, urlCurrent, urlStep2, urlStep3, etiqueta, grupo=False): """ Guarda todos los recursos de una entrega creando una estructura de directorios en ruta """ assert driver.current_url == urlCurrent ir_a_entrega(driver, entrega, urlCurrent) crear_screenshot_entrega(driver, ruta_salida, urlStep2) crear_descripcion_entrega(driver, ruta_salida, urlStep2) for matricula, alumno in regresar_alumnos_contestaron_entrega( driver, urlStep2, grupo): salidas.imprimir_salida('Extrayendo respuesta de %s' % matricula, 3) ruta_alumno = almacenamiento.crear_ruta(ruta_salida, matricula) ir_a_respuesta_alumno(driver, alumno, urlStep2) texto = regresar_texto_respuesta_alumno(driver, urlStep3) enlaces = regresar_enlaces_archivos_respuesta_alumno(driver, urlStep3) guardar_entrega_alumno(driver, texto, enlaces, ruta_alumno, urlStep3) driver.back() driver.refresh() try: WebDriverWait(driver, 10).until( EC.text_to_be_present_in_element((By.ID, 'EtiquetaTitulo1'), etiqueta)) except: raise excepciones.EntregasException( 'No se puede acceder a la entrega solicitada')
def extraer_evidencias_curso(driver, cursos, pk, ruta, terminados=False): if not pk in cursos.keys(): raise excepciones.CursosException('No existe el curso %s' % pk) curso = cursos[pk] ir_a_curso(driver, curso) actividades.ir_a_actividades(driver) salida = almacenamiento.crear_ruta(ruta, 'actividades') actividades.extraer_respuestas_actividades_curso(driver, salida) regresar_a_curso(driver, pk, terminados) evaluaciones.ir_a_evaluaciones(driver) salida = almacenamiento.crear_ruta(ruta, 'evaluaciones') evaluaciones.extraer_respuestas_evaluaciones_curso(driver, salida) regresar_a_curso(driver, pk, terminados) nombre_curso = ruta.split('/')[-1] os.system( f'cd "{ruta}"; zip -r "{nombre_curso}.zip" "actividades" "evaluaciones"; rm -r actividades; rm -r evaluaciones' )