コード例 #1
0
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))
コード例 #2
0
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))
コード例 #3
0
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))
コード例 #4
0
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))
コード例 #5
0
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))