def importarReserva(): if (validate_login(request)): proc = procesos.obtenerProcesos() if request.method == 'GET': #solo mostrar el formulario errores = [ 'Descarga el formato de la base <a href="/static/formato/' + 'FORMATO CONTROLADORES DE RESERVA.xlsx' + '">Descargar el formato</a>' ] return render_template("importarReserva.tpl.html", procesos=proc, messages=errores) else: #Si es POST entonces se subió un archivo proceso_select = request.form['proceso-select'] procX = procesos.getProcesoPorId(proceso_select) if 'archivos' in request.files: files = request.files.to_dict(flat=False)['archivos'] for f in files: if f and allowed_file(f.filename): filename = secure_filename(f.filename) f.save( os.path.join(app.config['UPLOAD_FOLDER'], filename)) #folder = "/var/www/asistenciaControladores/asistenciaPucp/uploaded_files/" folder = "uploaded_files/" files = listdir(folder) errores = [] for file in files: print("Leyendo: " + folder + file + "...\n") reserva_data = pd.read_excel(folder + file, 'CONTROLADORES') #reserva_data #print(reserva_data['Código'][0]) guardarReserva(reserva_data, errores, proceso_select) #Se eliminan los archivos for file in files: if (file[file.find("."):] in [".xls", ".xlsx"]): os.remove(folder + file) if len(errores) == 0: errores.append( 'Se importó con éxito a los controladores de reserva') return render_template('importar.tpl.html', procesos=proc, messages=errores) else: return redirect('login?dest=' + quote_plus(request.full_path))
def exportarExcelAsistencia(): if (validate_login(request)): proc = procesos.obtenerProcesos() if request.method == 'GET': return render_template('exportar_capacitacion.tpl.html', procesos=proc) else: proceso_select = request.form['proceso-select'] #print("Este es el select " + str(proceso_select)) resultados = reportes.getReporteAsistencia(proceso_select) procX = procesos.getProcesoPorId(proceso_select) codigos = [] nombres = [] correos = [] aula = [] labor = [] hora = [] asistio = [] obs = [] column_names = [ 'codigo', 'nombres', 'correo', 'LaborPUCP', 'aula_capacitacion', 'hora_capacitacion', 'obs_capacitacion' ] for res in resultados: codigos.append(res.codigo) nombres.append(res.nombres) correos.append(res.correo) labor.append(res.tipoPersona) aula.append(res.aula_capacitacion) hora.append(res.hora_capacitacion) if (res.hora_capacitacion is not None): asistio.append("SI") else: asistio.append("NO") obs.append(res.obs_capacitacion) d = { 'Código': codigos, 'Nombres': nombres, 'Correo': correos, 'LaborPUCP': labor, 'Aula de Capacitación': aula, 'Hora Capacitación': hora, '¿Asistió?': asistio, 'Observaciones': obs } df = pd.DataFrame(data=d, columns=[ 'Código', 'Nombres', 'Correo', 'Labor PUCP', 'Aula de Capacitación', 'Hora Capacitación', '¿Asistió?', 'Observaciones' ]) file_name = "ReporteDeAsistencia-" + quitarEspacios( procX.nombre) + "(" + datetime.now().strftime( '%d-%m-%Y-%H_%M_%S') + ").xlsx" #writer = pd.ExcelWriter('/var/www/asistenciaControladores/asistenciaPucp/static/reportes/'+file_name) writer = pd.ExcelWriter('static/reportes/' + file_name) df.to_excel(writer, sheet_name='Hoja 1', index=False) writer.save() m = [ 'Descargar reporte de asistencia a capacitación, <a href="/static/reportes/' + file_name + '">Descargar</a>' ] return render_template('exportar_capacitacion.tpl.html', procesos=proc, messages=m) else: return redirect('login?dest=' + quote_plus(request.full_path))
def nuevoControlador(): if (validate_login(request)): pro = procesos.obtenerProcesos() return render_template('controlador_new.tpl.html', procesos=pro) else: return redirect('login?dest=' + quote_plus(request.full_path))
def importar2(): if (validate_login(request)): proc = procesos.obtenerProcesos() if request.method == 'GET': #solo mostrar el formulario errores = [ 'Descarga el formato de la base, <a href="/static/formato/' + 'FORMATO LISTA CONTROLADORES Y COORDINADORES.xlsx' + '">Descargar el formato</a>' ] return render_template("importar.tpl.html", procesos=proc, messages=errores) else: #Si es POST entonces se subió un archivo proceso_select = request.form['proceso-select'] procX = procesos.getProcesoPorId(proceso_select) if 'archivos' in request.files: #verificar si se selecciono archivos files = request.files.to_dict(flat=False)['archivos'] for f in files: if f and allowed_file( f.filename): #verificar que se subio xls o xlsx filename = secure_filename( f.filename) #crear nombre seguro para evitar XSS f.save( os.path.join(app.config['UPLOAD_FOLDER'], filename)) #guardar el archivo #Se procesan los archivos #folder = "/var/www/asistenciaControladores/asistenciaPucp/uploaded_files/" folder = "uploaded_files/" files = listdir(folder) arch_name = 'BaseParaAccess' + quitarEspacios( procX.nombre) + '.xlsx' #arch_name.replace(' ','_') #folder_base = "/var/www/asistenciaControladores/asistenciaPucp/static/bases/" folder_base = "static/bases/" files_base = listdir(folder_base) #if(len(files_base)!=0): # os.remove('static/bases/' + arch_name) #writer = xlsxwriter.Workbook('/var/www/asistenciaControladores/asistenciaPucp/downloaded_files/'+arch_name) #writer2 = xlsxwriter.Workbook('/var/www/asistenciaControladores/asistenciaPucp/static/bases/'+arch_name) writer = xlsxwriter.Workbook('downloaded_files/' + arch_name) writer2 = xlsxwriter.Workbook('static/bases/' + arch_name) errores = [] for file in files: print("Leyendo: " + folder + file + "...\n") coordinadores_data = pd.read_excel(folder + file, 'COORDINADORES') #print(coordinadores_data) controladores_data = pd.read_excel(folder + file, 'CONTROLADORES') importar.writeToCoordinadores(writer, coordinadores_data, errores, 1) importar.writeToControladores(writer, controladores_data, errores, 1) importar.writeToCoordinadores(writer2, coordinadores_data, errores, 0) importar.writeToControladores(writer2, controladores_data, errores, 0) worksheet = writer.add_worksheet('AULAS') worksheet = writer2.add_worksheet('AULAS') importar.writeToBaseParaExportar(writer, coordinadores_data, controladores_data, errores) importar.writeToBaseParaExportar(writer2, coordinadores_data, controladores_data, errores) writer.close() writer2.close() #Se eliminan los archivos for file in files: if (file[file.find("."):] in [".xls", ".xlsx"]): os.remove(folder + file) if (len(errores) == 0): añadirBD(arch_name, controladores_data, coordinadores_data, proceso_select) #errores = ['Desde aquí puede descargar la base para access, <a href="/downloaded_files/'+ arch_name +'">Descargar base para access</a>' errores.append([ 'Desde aquí puede descargar la base para access, <a href="/static/bases/' + arch_name + '">Descargar base para access</a>' ]) return render_template('importar.tpl.html', procesos=proc, messages=errores) else: return redirect('login?dest=' + quote_plus(request.full_path))
def exportarExcelEvaluacion(): if (validate_login(request)): proc = procesos.obtenerProcesos() if request.method == 'GET': return render_template('exportar_evaluacion.tpl.html', procesos=proc) else: proceso_select = request.form['proceso-select'] resultados = reportes.getReporteEvaluacion(proceso_select) procX = procesos.getProcesoPorId(proceso_select) codigos = [] nombres = [] correos = [] labor = [] proceso_names = [] es_coord = [] es_apoyo = [] es_asistente = [] aulas = [] aulas_coord = [] fechas = [] codigos_coord = [] calificaciones = [] observaciones = [] asistio = [] asistio_cap = [] for res in resultados: codigos.append(res.codigo) nombres.append(res.nombres) correos.append(res.correo) labor.append(res.tipoPersona) proceso_names.append(res.nombre) if (res.es_coord == 1): es_coord.append("VERDADERO") es_asistente.append("FALSO") es_apoyo.append("FALSO") elif (res.es_apoyo == 1): es_coord.append("FALSO") es_asistente.append("FALSO") es_apoyo.append("VERDADERO") elif (res.es_asistente == 1): es_coord.append("FALSO") es_asistente.append("VERDADERO") es_apoyo.append("FALSO") else: es_coord.append("FALSO") es_asistente.append("FALSO") es_apoyo.append("FALSO") aulas.append(res.aula) aulas_coord.append(res.aula_coord) if (res.hora_proceso is not None): asistio.append("SI") else: asistio.append("NO") if (res.calificacion == '0'): calificaciones.append("-") else: calificaciones.append(res.calificacion) observaciones.append(res.obs_proceso) fechas.append(res.fecha) codigos_coord.append(res.cod_coord) if (res.hora_capacitacion is not None): asistio_cap.append("SI") else: asistio_cap.append("NO") d = { 'Codigo': codigos, 'Nombres': nombres, 'Correo': correos, 'Labor PUCP': labor, 'Proceso': proceso_names, 'Es Coordinador': es_coord, 'Es Apoyo': es_apoyo, 'Es Asistente': es_asistente, 'Aula': aulas, 'Aula de Coordinacion': aulas_coord, 'Fecha del Proceso': fechas, 'Asistio al proceso': asistio, 'Asistio a la capacitacion': asistio_cap, 'Codigo de Coordinador': codigos_coord, 'Calificacion': calificaciones, 'Observaciones': observaciones } df = pd.DataFrame( data=d, columns=[ 'Codigo', 'Nombres', 'Correo', 'Labor PUCP', 'Proceso', 'Es Coordinador', 'Es Apoyo', 'Es Asistente', 'Aula', 'Aula de Coordinacion', 'Fecha del Proceso', 'Asistio al proceso', 'Asistio a la capacitacion', 'Codigo de Coordinador', 'Calificacion', 'Observaciones' ]) file_name = "EvaluacionDeColaboradores-" + quitarEspacios( procX.nombre) + "(" + datetime.now().strftime( '%d-%m-%Y-%H_%M_%S') + ").xlsx" #writer = pd.ExcelWriter('/var/www/asistenciaControladores/asistenciaPucp/static/reportes/'+file_name) writer = pd.ExcelWriter('static/reportes/' + file_name) df.to_excel(writer, sheet_name='Hoja 1', index=False) writer.save() m = [ 'Descargar reporte de evaluación de controladores, <a href="/static/reportes/' + file_name + '">Descargar</a>' ] return render_template('exportar_evaluacion.tpl.html', procesos=proc, messages=m) else: return redirect('login?dest=' + quote_plus(request.full_path))