Exemple #1
0
def usuarios_por_search(token=None):
    """
    para poder debuggear el require valid token.
    token = warden._require_valid_token()
    if not token:
        return warden._invalid_token()
    """

    search = request.args.get('q', None)
    offset = request.args.get('offset', None, int)
    limit = request.args.get('limit', None, int)

    admin = False
    prof = warden.has_all_profiles(token, ['users-super-admin'])
    if prof and prof['profile']:
        admin = True
    else:
        prof = warden.has_one_profile(token, ['users-admin', 'users-operator'])
        if prof:
            admin = prof['profile']

    if not admin:
        return ('no tiene los permisos suficientes', 403)

    with obtener_session() as session:
        us = UsersModel.usuarios(session=session,
                                 search=search,
                                 offset=offset,
                                 limit=limit)
        return us
Exemple #2
0
def correos_de_usuario(uid, cid, token=None):

    admin = False
    prof = warden.has_all_profiles(token, ['users-super-admin'])
    if prof and prof['profile']:
        admin = True
    else:
        prof = warden.has_one_profile(token, ['users-admin', 'users-operator'])
        if prof:
            admin = prof['profile']

    if not admin:
        auid = token['sub']
        if auid != uid:
            return ('no tiene los permisos suficientes', 403)

    offset = request.args.get('offset', None, int)
    limit = request.args.get('limit', None, int)
    h = request.args.get('h', False, bool)
    with obtener_session() as session:
        return UsersModel.correos(session=session,
                                  usuario=uid,
                                  historico=h,
                                  offset=offset,
                                  limit=limit)
Exemple #3
0
def usuarios_por_lista(uids=[], token=None):

    admin = False
    prof = warden.has_all_profiles(token, ['users-super-admin'])
    if prof and prof['profile']:
        admin = True
    else:
        prof = warden.has_one_profile(token, ['users-admin', 'users-operator'])
        if prof:
            admin = prof['profile']

    if not admin:
        auid = token['sub']
        if len(uids) != 1 and auid != uids[0]:
            return ('no tiene los permisos suficientes', 403)

    with obtener_session() as session:
        usuarios = []
        for uid in uids:
            try:
                us = UsersModel.usuario(session=session, uid=uid)
                usuarios.append(us)
            except NoResultFound as e:
                logging.warn('{} no existe'.format(uid))

        return usuarios
Exemple #4
0
def usuario_por_dni(dni, token=None):
    prof = warden.has_all_profiles(token, ['users-super-admin'])
    if not prof or not prof['profile']:
        return ('Insuficient access', 401)

    with obtener_session() as s:
        u = UsersModel.usuario_por_dni(session=s, dni=dni)
        return u
Exemple #5
0
def chequear_precondiciones_de_usuario(uid, token=None):
    assert uid is not None
    prof = warden.has_one_profile(token, ['users-super-admin', 'users-admin'])
    if not prof['profile']:
        return ('no tiene los permisos suficientes', 403)

    with obtener_session() as s:
        return UsersModel.precondiciones(s, uid)
Exemple #6
0
def eliminar_telefono(uid=None, tid=None, token=None):

    prof = warden.has_one_profile(token, ['users-super-admin', 'users-admin'])
    if not prof['profile']:
        return ('no tiene los permisos suficientes', 403)

    assert uid != None
    assert tid != None
    with obtener_session() as session:
        UsersModel.eliminar_telefono(session, tid)
        session.commit()
        return {'id': tid}
Exemple #7
0
def crear_usuario(token=None):

    prof = warden.has_one_profile(token, ['users-super-admin', 'users-admin'])
    if not prof['profile']:
        return ('no tiene los permisos suficientes', 403)

    usuario = request.get_json()
    logging.debug(usuario)
    with obtener_session() as session:
        uid = UsersModel.crear_usuario(session, usuario)
        session.commit()
        return uid
Exemple #8
0
def chequear_disponibilidad_cuenta(cuenta, token=None):

    prof = warden.has_one_profile(token, ['users-super-admin', 'users-admin'])
    if not prof['profile']:
        return ('no tiene los permisos suficientes', 403)

    with obtener_session() as session:
        correo = UsersModel.obtener_correo_por_cuenta(session=session,
                                                      cuenta=cuenta)
        if correo:
            return {'existe': True, 'correo': correo}
        else:
            return {'existe': False, 'correo': None}
Exemple #9
0
def uuids_usuarios(token=None):
    admin = False
    prof = warden.has_all_profiles(token, ['users-super-admin'])
    if prof and prof['profile']:
        admin = True
    else:
        prof = warden.has_one_profile(token, ['users-admin', 'users-operator'])
        if prof:
            admin = prof['profile']

    if not admin:
        return ('no tiene los permisos suficientes', 403)

    with obtener_session() as session:
        us = UsersModel.usuarios_uuids(session=session)
        return us
Exemple #10
0
def eliminar_correo(uid=None, cid=None, token=None):

    if not uid:
        uid = token['sub']

    prof = warden.has_one_profile(token, ['users-super-admin', 'users-admin'])
    if not prof['profile']:
        if uid != token['sub']:
            return ('no tiene los permisos suficientes', 403)

    assert uid != None
    assert cid != None
    with obtener_session() as session:
        UsersModel.eliminar_correo(session, cid)
        session.commit()
        return {'id': cid}
Exemple #11
0
def agregar_correo_confirmado(uid, token=None):

    admin = False
    prof = warden.has_all_profiles(token, ['users-super-admin'])
    if prof and prof['profile']:
        admin = True

    if not admin:
        return ('no tiene los permisos suficientes', 403)

    assert uid != None
    datos = json.loads(request.data)
    with obtener_session() as session:
        cid = UsersModel.agregar_correo_confirmado(session=session,
                                                   uid=uid,
                                                   datos=datos)
        session.commit()
        return {'cid': cid}
Exemple #12
0
def enviar_confirmar_correo(uid, cid, token=None):

    admin = False
    prof = warden.has_all_profiles(token, ['users-super-admin'])
    if prof and prof['profile']:
        admin = True
    else:
        prof = warden.has_all_profiles(token, ['users-admin'])
        if prof:
            admin = prof['profile']

    if not admin:
        auid = token['sub']
        if auid != uid:
            return ('no tiene los permisos suficientes', 403)

    with obtener_session() as session:
        UsersModel.enviar_confirmar_correo(session, cid)
        session.commit()
Exemple #13
0
def confirmar_correo(uid, cid, token=None):

    admin = False
    prof = warden.has_all_profiles(token, ['users-super-admin'])
    if prof and prof['profile']:
        admin = True
    else:
        prof = warden.has_all_profiles(token, ['users-admin'])
        if prof:
            admin = prof['profile']

    if not admin:
        auid = token['sub']
        if auid != uid:
            return ('no tiene los permisos suficientes', 403)

    assert cid is not None
    code = json.loads(request.data)['codigo']
    with obtener_session() as session:
        UsersModel.confirmar_correo(session=session, cid=cid, code=code)
        session.commit()
Exemple #14
0
def actualizar_usuario(uid, token=None):

    admin = False
    prof = warden.has_all_profiles(token, ['users-super-admin'])
    if prof and prof['profile']:
        admin = True
    else:
        prof = warden.has_all_profiles(token, ['users-admin'])
        if prof:
            admin = prof['profile']

    if not admin:
        auid = token['sub']
        if auid != uid:
            return ('no tiene los permisos suficientes', 403)

    datos = json.loads(request.data)
    with obtener_session() as session:
        UsersModel.actualizar_usuario(session, uid, datos)
        session.commit()
        return uid
Exemple #15
0
def agregar_correo_institucional(uid, token=None):

    prof = warden.has_one_profile(token, ['users-super-admin', 'users-admin'])
    if not prof['profile']:
        return ('no tiene los permisos suficientes', 403)

    assert uid != None
    datos = json.loads(request.data)
    assert datos['email'] != None
    with obtener_session() as session:
        if not UsersModel.existe(session=session, usuario=uid):
            raise Exception('Usuario no existente')

        mail = UsersModel.obtener_correo_por_cuenta(session=session,
                                                    cuenta=datos['email'])
        if not mail:
            mail = UsersModel.agregar_correo_institucional(session=session,
                                                           uid=uid,
                                                           datos=datos)
            session.commit()
        else:
            mail.confirmado = datetime.datetime.now()
            session.commit()
        return mail.id
import csv
import re
from dateutil.parser import parse
import logging
logging.getLogger().setLevel(logging.DEBUG)

if __name__ == '__main__':

    from users.model import obtener_session, UsersModel

    reg = re.compile('[A|B|C|D|E]+.*')

    archivo = sys.argv[1]
    with open(archivo, 'r') as f:
        c = csv.reader(f, delimiter=',', quotechar="\"")
        with obtener_session() as s:
            for r in c:
                cargo = r[7].strip()

                if cargo == 'Clase Grupo':
                    continue

                dni = r[1].strip().lower()
                nacimiento = parse(r[19])
                n = r[2].split(',')
                nombre = ''
                apellido = ''
                if len(n) >= 2:
                    apellido = n[0].strip().capitalize()
                    nombre = n[1].strip().capitalize()
                else:
Exemple #17
0
def sincronizar_usuario(uid, token=None):

    with obtener_session() as session:
        r = GoogleModel.sincronizar(session, uid)
        session.commit()
        return r
Exemple #18
0
def sincronizar_usuarios(token=None):

    with obtener_session() as session:
        r = GoogleModel.sincronizar_dirty(session)
        session.commit()
        return r
Exemple #19
0
def chequear_precondiciones_usuario(token=None):
    uid = token['sub']
    assert uid is not None
    with obtener_session() as s:
        return UsersModel.precondiciones(s, uid)
Exemple #20
0
def sincronizar_usuarios_detalle(token=None):

    with obtener_session() as session:
        r = GoogleModel.sincronizar_usuarios_detalle(session)
        return r