def persona():
    if (validate_login(request)):
        if (request.method == 'GET'):
            reg = funciones.getAllWorkers()
            return render_template('persona_index.tpl.html', registros=reg)
        else:
            codigo = request.form.get('codigo', '')
            per = personas.getPersonaSola(codigo)
            db.session.delete(per)
            db.session.commit()
            reg = funciones.getAllWorkers()
            return render_template('persona_index.tpl.html', registros=reg)
    else:
        return redirect('login?dest=' + quote_plus(request.full_path))
def procesarJSONEditar():
    #print("Estoy aquí")
    codigo = request.form.get('codigo', '')
    proceso = request.form.get('proceso', '')
    name = request.form.get('name', '')
    email = request.form.get('email', '')
    labor = request.form.get('labor', '')
    aula = request.form.get('aula', '')
    aula_coord = request.form.get('aula_coord', '')
    cod_coord = request.form.get('cod_coord', '')
    calificacion = request.form.get('calificacion', '')
    obs_proceso = request.form.get('obs_proceso', '')
    password = request.form.get('password', '')

    controlador = personas.getPersonaEditar(codigo, proceso)
    person = personas.getPersonaSola(codigo)
    #print(codigo + "\n" + proceso)
    #print(name + "\n" + aula)
    if controlador is not None:
        #print("Encontré controlador")
        person.nombres = name
        person.correo = email
        if (labor == "CONTROLADOR"):
            controlador.es_coord = 0
            controlador.es_apoyo = 0
            controlador.es_asistente = 0
        elif (labor == "COORDINADOR"):
            controlador.es_coord = 1
            controlador.es_apoyo = 0
            controlador.es_asistente = 0
        elif (labor == "ASISTENTE"):
            controlador.es_coord = 0
            controlador.es_apoyo = 0
            controlador.es_asistente = 1
        elif (labor == "APOYO"):
            controlador.es_coord = 0
            controlador.es_apoyo = 1
            controlador.es_asistente = 0
        controlador.aula = aula
        controlador.aula_coord = aula_coord
        controlador.cod_coord = cod_coord
        controlador.calificacion = calificacion
        controlador.obs_proceso = obs_proceso
        controlador.password = password
        db.session.commit()
        return json.dumps(True)
    else:
        print("No se encontró el Controlador")
        return json.dumps(False)
def procesarJSONEditarPersona():
    codigo = request.form.get('codigo', '')
    name = request.form.get('name', '')
    email = request.form.get('email', '')
    tipo = request.form.get('tipo', '')

    person = personas.getPersonaSola(codigo)
    if person is not None:
        person.nombres = name
        person.correo = email
        person.tipoPersona = tipo
        db.session.commit()
        return json.dumps(True)
    else:
        print("No se encontró el Controlador")
        return json.dumps(False)
def procesarJSONNuevoPersona():
    codigoPUCP = request.form.get('codigoPUCP', '')
    name = request.form.get('name', '')
    email = request.form.get('email', '')
    tipo = request.form.get('tipo', '')

    person = personas.getPersonaSola(codigoPUCP)
    if person is not None:
        person.nombres = name
        person.correo = email
        person.tipoPersona = tipo
    else:
        controlador = Persona(
            str(codigoPUCP).zfill(8), name, email, tipo, 0, 0)
        db.session.add(controlador)
        #print("No se encontró el Controlador")
    db.session.commit()
    return json.dumps(False)
def guardarReserva(reserva_data, errores, proceso_select):
    row = 1
    for codigo in reserva_data['Código']:
        nombres = reserva_data['Primer apellido'][
            row - 1] + " " + reserva_data['Segundo apellido'][
                row - 1] + ", " + reserva_data['Nombres'][row - 1]
        #Revisar si la persona ya existe o no
        controladorR = personas.getPersonaSola(codigo)
        if controladorR is None:
            controladorR = Persona(str(codigo).zfill(8), nombres, '', '', 0, 0)
            db.session.add(controladorR)
        else:
            controladorR.nombres = nombres
        db.session.commit()

        #Agregando Labor_Por_Proceso
        proceso = procesos.getProcesoPorId(proceso_select)

        aula = reserva_data['AULA'][row - 1]
        aula_coord = reserva_data['AULA DE COORDINACIÓN'][row - 1]

        #Esto aun no está listo desde aquí...
        coordinador = personas.getCoordinador(aula_coord, proceso.idproceso)

        new_controladorR = personas.getPersonaEditar(codigo, proceso.idproceso)

        #Si ya hay un controlador registrado con ese código en ese proceso
        if new_controladorR is not None:
            new_controladorR.aula = aula
            new_controladorR.aula_coord = aula_coord
            new_controladorR.cod_coord = str(coordinador.codigo).zfill(8)
            new_controladorR.es_coord = 0
            new_controladorR.es_apoyo = 0
            new_controladorR.es_asistente = 0
        else:
            lxp = LaborPorProceso(
                str(codigo).zfill(8), proceso.idproceso, 0, 0, 0, aula,
                aula_coord, '',
                datetime.now().date(),
                datetime.now().date(), None, None,
                str(coordinador.codigo).zfill(8), '0', '', '', '', '')
            db.session.add(lxp)
        db.session.commit()
        row = row + 1
def editarPersona(codigo=None):
    if (validate_login(request)):
        reg = personas.getPersonaSola(codigo)
        return render_template('persona_edit.tpl.html', registro=reg)
    else:
        return redirect('login?dest=' + quote_plus(request.full_path))
def procesarJSONNuevo():
    #Agregando Persona
    codigo = request.form.get('codigo', '')
    name = request.form.get('name', '')
    email = request.form.get('email', '')

    nuevo_controlador = personas.getPersonaSola(codigo)
    #Si ya hay un controlador en la tabla Persona con ese código
    if nuevo_controlador is not None:
        #Se actualizan los datos
        nuevo_controlador.nombres = name
        nuevo_controlador.email = email
        nuevo_controlador.nro_asistencias = 0
        nuevo_controlador.nro_convocatorias = 0
    else:
        #De lo contrario se crea a esa persona
        controlador = Persona(codigo, name, email, '', 0, 0)
        db.session.add(controlador)
    db.session.commit()

    #Agregando Labor_Por_Proceso
    proceso = request.form.get('proceso', '')
    labor = request.form.get('labor', '')
    aula = request.form.get('aula', '')
    aula_coord = request.form.get('aula_coord', '')
    cod_coord = request.form.get('cod_coord', '')
    new_controlador = personas.getPersonaEditar(codigo, proceso)
    #Si ya hay un controlador registrado con ese código.
    if new_controlador is not None:
        new_controlador.aula = aula
        new_controlador.aula_coord = aula_coord
        new_controlador.cod_coord = cod_coord
        if (labor == "CONTROLADOR"):
            new_controlador.es_coord = 0
            new_controlador.es_apoyo = 0
            new_controlador.es_asistente = 0
        elif (labor == "COORDINADOR"):
            new_controlador.es_coord = 1
            new_controlador.es_apoyo = 0
            new_controlador.es_asistente = 0
        elif (labor == "ASISTENTE"):
            new_controlador.es_coord = 0
            new_controlador.es_apoyo = 0
            new_controlador.es_asistente = 1
        elif (labor == "APOYO"):
            new_controlador.es_coord = 0
            new_controlador.es_apoyo = 1
            new_controlador.es_asistente = 0
        #controlador.labor = request.form.get('labor','')
    else:
        if (labor == "CONTROLADOR"):
            lxp = LaborPorProceso(codigo, proceso, 0, 0, 0, aula, aula_coord,
                                  '',
                                  datetime.now().date(),
                                  datetime.now().date(), None, None, cod_coord,
                                  '0', '', '', '', '')
        elif (labor == "COORDINADOR"):
            lxp = LaborPorProceso(codigo, proceso, 1, 0, 0, aula, aula_coord,
                                  '',
                                  datetime.now().date(),
                                  datetime.now().date(), None, None, cod_coord,
                                  '0', '', '', '', '')
        elif (labor == "ASISTENTE"):
            lxp = LaborPorProceso(codigo, proceso, 0, 0, 1, aula, aula_coord,
                                  '',
                                  datetime.now().date(),
                                  datetime.now().date(), None, None, cod_coord,
                                  '0', '', '', '', '')
        elif (labor == "APOYO"):
            lxp = LaborPorProceso(codigo, proceso, 0, 1, 0, aula, aula_coord,
                                  '',
                                  datetime.now().date(),
                                  datetime.now().date(), None, None, cod_coord,
                                  '0', '', '', '', '')
        #controlador.labor = request.form.get('labor','')
        db.session.add(lxp)
    db.session.commit()
    return json.dumps(True)
def añadirBD(arch_name, controladores_data, coordinadores_data,
             proceso_select):
    #folder = "/var/www/asistenciaControladores/asistenciaPucp/downloaded_files/"
    folder = "downloaded_files/"
    files = listdir(folder)

    for file in files:
        print("Leyendo: " + folder + file + "...\n")
        personas_data = pd.read_excel(folder + file, 'PARA EXPORTAR')
        #print(controladores_data)
        row = 1
        #Primero hacemos un import en la tabla personas
        for codigo in personas_data['Código']:
            nombres = personas_data['Apellido Paterno'][
                row - 1] + " " + personas_data['Apellido Materno'][
                    row - 1] + ", " + personas_data['Nombres'][row - 1]
            correo = getCorreo(codigo, controladores_data, coordinadores_data)
            nuevo_controlador = personas.getPersonaSola(codigo)
            if nuevo_controlador is None:
                print("No se encontró código")
                controlador = Persona(
                    str(codigo).zfill(8), nombres, correo, '', 0, 0)
                db.session.add(controlador)
            else:
                print("Se encontró código")
                nuevo_controlador.nombres = nombres
                nuevo_controlador.correo = correo
            db.session.commit()
            #Agregando Labor_Por_Proceso
            proceso = procesos.getProcesoPorId(proceso_select)
            es_coord = personas_data['Es coordinador'][row - 1]
            es_apoyo = personas_data['Apoyo OCAI'][row - 1]
            es_asistente = personas_data['Asistente OCAI'][row - 1]
            aula = personas_data['Aula'][row - 1]
            aula_coord = personas_data['Aula coordinación'][row - 1]
            cod_coord = personas_data['codigo Coordinador'][row - 1]
            new_controlador = personas.getPersonaEditar(
                codigo, proceso.idproceso)
            aula_capacitacion = getAulaCapacitacion(codigo, controladores_data,
                                                    coordinadores_data)
            #Si ya hay un controlador registrado con ese código en ese proceso
            if new_controlador is not None:
                new_controlador.aula = aula
                new_controlador.aula_coord = aula_coord
                new_controlador.cod_coord = str(cod_coord).zfill(8)
                new_controlador.es_coord = 0 if es_coord == 'FALSO' else 1
                new_controlador.es_apoyo = 0 if es_apoyo == 'FALSO' else 1
                new_controlador.es_asistente = 0 if es_asistente == 'FALSO' else 1
                new_controlador.aula_capacitacion = aula_capacitacion
            else:
                lxp = LaborPorProceso(
                    str(codigo).zfill(8), proceso.idproceso,
                    0 if es_coord == 'FALSO' else 1,
                    0 if es_apoyo == 'FALSO' else 1,
                    0 if es_asistente == 'FALSO' else 1, aula, aula_coord,
                    aula_capacitacion,
                    datetime.now().date(),
                    datetime.now().date(), None, None,
                    str(cod_coord).zfill(8), '0', '', '', '', '')
                db.session.add(lxp)
            db.session.commit()
            row = row + 1
    #os.remove('/var/www/asistenciaControladores/asistenciaPucp/downloaded_files/' + arch_name)
    os.remove('downloaded_files/' + arch_name)