Example #1
0
def justificaciones(uid, token):

    prof = warden.has_one_profile(token, ['assistance-super-admin','assistance-admin','assistance-operator'])
    if prof and prof['profile'] == True:
        with obtener_session() as session:
            return AssistanceModel.justificaciones(session)

    autorizador_id = token['sub']
    if AssistanceModel.chequear_acceso(autorizador_id, uid):
        with obtener_session() as session:
            return AssistanceModel.justificacionesParaUsuario(session, uid)

    return ('no tiene los permisos suficientes', 403)
Example #2
0
def horario(uid,token):
    fecha_str = request.args.get('fecha', None)
    fecha = parser.parse(fecha_str).date() if fecha_str else None

    prof = warden.has_one_profile(token, ['assistance-super-admin','assistance-admin','assistance-operator','assistance-user'])
    if prof and prof['profile'] == True:
        with obtener_session() as session:
            return AssistanceModel.horario(session, uid, fecha)

    usuario_logueado = token['sub']
    if AssistanceModel.chequear_acceso(usuario_logueado, uid):        
        with obtener_session() as session:
            return AssistanceModel.horario(session, uid, fecha)

    return ('no tiene los permisos suficientes', 403)
Example #3
0
def relojes(token):
    prof = warden.has_one_profile(token, ['assistance-super-admin','assistance-admin'])
    if not prof or prof['profile'] == False:
        return ('no tiene los permisos suficientes', 403)

    with obtener_session() as session:
        return AssistanceModel.relojes(session)
Example #4
0
def eliminar_justificacion(jid, token):
    prof = warden.has_one_profile(token, ['assistance-super-admin','assistance-admin'])
    if not prof or prof['profile'] == False:
        return ('no tiene los permisos suficientes', 403)
    with obtener_session() as session:
        AssistanceModel.eliminarJustificacion(session, jid)
        session.commit()
Example #5
0
def actualizar_justificacion(jid, token):
    prof = warden.has_one_profile(token, ['assistance-super-admin', 'assistance-admin'])
    if not prof or prof['profile'] == False:
        return ('no tiene los permisos suficientes', 403)
    datos = request.get_json()
    with obtener_session() as session:
        AssistanceModel.actualizar_justificacion(session, jid, datos)
        session.commit()
Example #6
0
def reporte_justificaciones_realizadas(cantidad=10):

    #prof = warden.has_one_profile(token, ['assistance-super-admin','assistance-admin','assistance-operator'])
    #if prof and prof['profile'] == True:

    cantidad = int(cantidad)
    with obtener_session() as session:
        return AssistanceModel.reporte_justificaciones_realizadas(session, cantidad)
Example #7
0
def reporte_general(token):
    datos = request.get_json()
    fecha = parser.parse(datos["fecha"]).date() if 'fecha' in datos else None
    lugares = datos["lugares"]

    usuario_logueado = token['sub']

    prof = warden.has_one_profile(token, ['assistance-super-admin','assistance-admin','assistance-operator','assistance-user'])
    if prof and prof['profile'] == True:
        with obtener_session() as session:
            return AssistanceModel.reporteGeneralAdmin(session, lugares, fecha)

    if AssistanceModel.chequear_acceso_lugares(usuario_logueado, lugares):
        with obtener_session() as session:
            return AssistanceModel.reporteGeneral(session, usuario_logueado, lugares, fecha)

    return ('no tiene los permisos suficientes', 403)
Example #8
0
def reporte_justificaciones(uid, token):
    fecha_str = request.args.get('inicio', None)
    inicio = parser.parse(fecha_str).date() if fecha_str else None

    fecha_str = request.args.get('fin', None)
    fin = parser.parse(fecha_str).date() if fecha_str else None

    prof = warden.has_one_profile(token, ['assistance-super-admin', 'assistance-admin','assistance-operator','assistance-user'])
    if prof and prof['profile']:
        with obtener_session() as session:
            return AssistanceModel.reporteJustificaciones(session, uid, inicio, fin)

    usuario_logueado = token['sub']
    if AssistanceModel.chequear_acceso(usuario_logueado, uid):
        with obtener_session() as session:
                return AssistanceModel.reporteJustificaciones(session, uid, inicio, fin)
    return ('no tiene los permisos suficientes', 403)
Example #9
0
def usuarios(uid=None, token=None):
    prof = warden.has_one_profile(token, ['assistance-super-admin','assistance-admin','assistance-operator', 'assistance-user'])
    if prof and prof['profile'] == True:
        with obtener_session() as session:
            return AssistanceModel.usuario(session, uid, retornarClave=False)

    autorizador_id = token['sub']
    if AssistanceModel.chequear_acceso(autorizador_id, uid):
        with obtener_session() as session:
            return AssistanceModel.usuario(session, uid, retornarClave=False)

    ''' como no soy admin, ni tengo cargo, entonces chequea que se este consultando a si mismo '''
    if autorizador_id == uid:
        with obtener_session() as session:
            return AssistanceModel.usuario(session, autorizador_id, retornarClave=False)

    return ('no tiene los permisos suficientes', 403)
Example #10
0
def reloj_huellas(rid, token):
    prof = warden.has_one_profile(token, ['assistance-super-admin','assistance-admin'])
    if not prof or prof['profile'] == False:
        return ('no tiene los permisos suficientes', 403)

    assert rid is not None
    with obtener_session() as session:
        r = AssistanceModel.templates_por_reloj(session, rid)
        return r
Example #11
0
def crear_log_por_usuario(uid, token=None):
    prof = warden.has_one_profile(token, ['assistance-super-admin', 'assistance-admin'])
    if not prof or prof['profile'] == False:
        return ('no tiene los permisos suficientes', 403)

    with obtener_session() as session:
        r = AssistanceModel.crear_log_por_usuario(session, uid)
        session.commit()
        return r
Example #12
0
def perfil(uid, token):
    fecha_str = request.args.get('fecha', None)
    fecha = parser.parse(fecha_str).date() if fecha_str else None
    if not fecha:
        return ('fecha, parametro no encontrado',400)

    prof = warden.has_one_profile(token, ['assistance-super-admin', 'assistance-admin'])
    if prof and prof['profile']:
        with obtener_session() as session:
            return AssistanceModel.perfil(session, uid, fecha)

    usuario_logueado = token['sub']
    with obtener_session() as session:
        #if AssistanceModel.chequear_acceso_reporte(session, usuario_logueado, uid):
        if usuario_logueado == uid:
            return AssistanceModel.perfil(session, uid, fecha)
        else:
            return ('no tiene los permisos suficientes', 403)
Example #13
0
def reloj_eliminar_usuarios(rid, token):
    prof = warden.has_one_profile(token, 'assistance-super-admin')
    if not prof or prof['profile'] == False:
        return ('no tiene los permisos suficientes', 403)

    assert rid is not None
    with obtener_session() as session:
        r = AssistanceModel.eliminar_usuarios_reloj(session, rid)
        return r
Example #14
0
 def eventStream():
     while True:
         envio = datetime.datetime.now()
         eventos = []
         with obtener_session() as session:
             # obtengo los eventos y los retorno
             eventos.extend([
                 'id: {}\nevent: {}\ndata: {}\n\n'.format(e.id, e.evento, e.mensaje) 
                 for e in session.query(Evento).filter(Evento.enviado == None).all()
                 ]
             )
         
         for e in eventos:
             yield e
             
         with obtener_session() as session:
             for e in session.query(Evento).filter(Evento.enviado == None).all():
                 e.enviado = envio
             session.commit()
Example #15
0
def compensatorios(uid, token):
    assert uid is not None

    prof = warden.has_one_profile(token, ['assistance-super-admin'])
    if not prof or prof['profile'] == False:
        ''' Como no es admin compruebo si es una autoconsulta '''
        if uid != token['sub']:
            return ('no tiene los permisos suficientes', 403)

    with obtener_session() as session:
        return AssistanceModel.compensatorios(session, uid)
Example #16
0
def eliminar_fecha_justificada(uid, jid, token):
    autorizador_id = token['sub']

    prof = warden.has_one_profile(token, ['assistance-super-admin', 'assistance-admin'])
    if prof or prof['profile'] == True:
        with obtener_session() as session:
            jid = AssistanceModel.eliminarFechaJustificada(session, jid, autorizador_id)
            session.commit()
            return jid

    if autorizador_id == uid:
        return ('no tiene los permisos suficientes', 403)

    if AssistanceModel.chequear_acceso(autorizador_id, uid):
        with obtener_session() as session:
            id = AssistanceModel.eliminarFechaJustificadaJefe(session, jid, autorizador_id, uid)
            session.commit()
            return id

    return ('no tiene los permisos suficientes', 403)
Example #17
0
def crear_justificacion(token):
    prof = warden.has_one_profile(token, ['assistance-super-admin','assistance-admin'])
    if not prof or prof['profile'] == False:
        return ('no tiene los permisos suficientes', 403)

    justificacion = request.get_json()
    logging.debug(justificacion)
    with obtener_session() as session:
        jid = AssistanceModel.crear_justificacion(session, justificacion)
        session.commit()
        return jid
Example #18
0
def crear_horario(token):
    prof = warden.has_one_profile(token, ['assistance-super-admin','assistance-admin'])
    if not prof or prof['profile'] == False:
        return ('no tiene los permisos suficientes', 403)

    horarios = request.get_json()
    logging.debug(horarios)
    with obtener_session() as session:
        AssistanceModel.crearHorario(session, horarios)
        session.commit()
        return  True
Example #19
0
def crear_compensatorio(token):
    prof = warden.has_one_profile(token, ['assistance-super-admin'])
    if not prof or prof['profile'] == False:
        return ('no tiene los permisos suficientes', 403)

    id_creador_compensatorio = token['sub']

    compensatorio = request.get_json()
    logging.debug(compensatorio)
    with obtener_session() as session:
        cid = AssistanceModel.crear_compensatorio(session, compensatorio, id_creador_compensatorio)
        session.commit()
        return cid
 def obtener_marcaciones_por_uid_por_tiempo(self, uid, dias=2):
     """
     Obtiene de la DB las marcaciones hasta 2 dias atras (por defecto) para el usuario_id pasado como parametro
     """
     fecha = datetime.datetime.now() - timedelta(days=dias)
     marcaciones = []
     with obtener_session() as session:
         mmarcaciones = session.query(Marcacion).filter(
             Marcacion.usuario_id == uid,
             Marcacion.marcacion > fecha).order_by(
                 Marcacion.marcacion).all()
         for m in mmarcaciones:
             marcaciones.append(m)
         return marcaciones
Example #21
0
def justificar(token):
    fechaJustificada = request.get_json()

    prof = warden.has_one_profile(token, ['assistance-super-admin', 'assistance-admin','assistance-operator'])
    if prof and prof['profile'] == True:
        with obtener_session() as session:
            autorizador_id = token['sub']
            id = AssistanceModel.justificar(session, fechaJustificada, autorizador_id)
            session.commit()
            return id

    autorizador_id = token['sub']
    uid = fechaJustificada['usuario_id']
    if autorizador_id == uid:
        return ('no tiene los permisos suficientes', 403)

    if AssistanceModel.chequear_acceso(autorizador_id, uid):
        with obtener_session() as session:
            id = AssistanceModel.justificar(session, fechaJustificada, autorizador_id)
            session.commit()
            return id

    return ('no tiene los permisos suficientes', 403)
Example #22
0
def logs_por_usuario(uid,token):
   
    prof = warden.has_one_profile(token, ['assistance-super-admin', 'assistance-admin', 'assistance-operator'])
    if not prof or prof['profile'] == False:
        return ('no tiene los permisos suficientes', 403)

    inicio = datetime.datetime.now()
    fin = inicio + datetime.timedelta(days=1)
    marcaciones = []
    with obtener_session() as session:
        reporte = AssistanceModel.reporte(session, uid=uid, inicio=inicio, fin=fin)
        for r in reporte.reportes:
            marcaciones.extend(r.marcaciones)
            marcaciones.extend(r.duplicadas)
    return marcaciones
Example #23
0
def eliminar_horarios(uid, hid, token):

    prof = warden.has_one_profile(token, ['assistance-super-admin','assistance-admin'])
    if not prof or prof['profile'] == False:
        ''' como no soy admin, entonces chequea que se este consultando a si mismo '''
        if not uid or uid != token['sub']:
            return ('no tiene los permisos suficientes', 403)

    fecha_str = request.args.get('fecha_inicio', None)
    inicio = parser.parse(fecha_str).date() if fecha_str else None

    fecha_str = request.args.get('fecha_fin', None)
    fin = parser.parse(fecha_str).date() if fecha_str else None

    with obtener_session() as session:
        h = AssistanceModel.eliminar_horario(session, uid, hid)
        session.commit()
    
    return {'status':'ok', 'horario':h}
Example #24
0
def historial_horarios(uid, token):

    prof = warden.has_one_profile(token, ['assistance-super-admin','assistance-admin'])
    if not prof or prof['profile'] == False:
        ''' como no soy admin, entonces chequea que se este consultando a si mismo '''
        if not uid or uid != token['sub']:
            return ('no tiene los permisos suficientes', 403)

    fecha_str = request.args.get('fecha_inicio', None)
    inicio = parser.parse(fecha_str).date() if fecha_str else None

    fecha_str = request.args.get('fecha_fin', None)
    fin = parser.parse(fecha_str).date() if fecha_str else None

    timezone = request.args.get('timezone', 'America/Argentina/Buenos_Aires')

    with obtener_session() as session:
        ret = AssistanceModel.historial_horarios(session, uid, inicio, fin, timezone)
        return ret
Example #25
0
else:
    marcacion_tipo = 1

reloj_id = '0a609b5a-5e22-41fc-b9df-17429933ac50'


def _get_marcacion(marcacion):
    marc = datetime.datetime.strptime(marcacion, '%d/%m/%Y %H:%M:%S')
    marc += datetime.timedelta(hours=3)
    marc = pytz.utc.localize(marc)
    return marc


with open(archivo) as f:

    with obtener_session() as assis:
        with open_users_session() as users:
            for line in f:
                dni, nombres, fecha, algo, t, a = line.split(',')
                marcacion = _get_marcacion(fecha)
                print(f"DNI: {dni} - marcacion : {marcacion}")

                uid = UsersModel.get_uid_person_number(users, dni)
                print(f"dni: {dni} -- uid: {uid}")

                marcaciones_existentes = assis.query(Marcacion).filter(
                    Marcacion.user_id == uid,
                    Marcacion.marcacion == marcacion).all()
                for m in marcaciones_existentes:
                    print(m.marcacion)
                    print(m.usuario_id)
        si no, no se suma nada.
        la relacion de las entidades es:

        Asiento {
            fecha
            notas
            autorizador_id
            registros = [
                {
                    cantidad,
                    cuenta_id
                }
            ]
        }
    """
    with obtener_session() as session:
        for uid, u in cartera.items():
            logging.info('procesando : {}'.format(u['id']))
            saldo = CompensatoriosModel.obtenerSaldo(session, u['id'])
            fecha = datetime.datetime.now()
            reg_a_aplicar = saldo
            logging.debug(saldo)

            if reg_a_aplicar:
                #saldo_a_aplicar = u['stock'] - reg_a_aplicar['saldo']
                saldo_a_aplicar = u['stock']
                if saldo_a_aplicar > 0:
                    CompensatoriosModel.cambiarSaldo(
                        session,
                        ID_DE_AUTORIZADOR,
                        u['id'],
Example #27
0
def justificacion(jid, token):
    with obtener_session() as session:
        j = AssistanceModel.justificacion(session, jid)
        if not j:
            return (404, 'Justificacion No existente')
Example #28
0
def relojes_sincronizar():
    with obtener_session() as session:
        r = AssistanceModel.sincronizar(session)
        session.commit()
        return r
Example #29
0
 def generate():
     assert rid is not None
     with obtener_session() as session:
         for r in AssistanceModel.sincronizar_reloj(session, rid):
             session.commit()
             yield flask.json.dumps(r) + "\n"
Example #30
0
def reloj_marcaciones(rid):
    assert rid is not None
    with obtener_session() as session:
        r = AssistanceModel.marcaciones_por_reloj(session, rid)
        return r