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
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)
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
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
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)
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}
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
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}
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
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}
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}
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()
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()
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
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:
def sincronizar_usuario(uid, token=None): with obtener_session() as session: r = GoogleModel.sincronizar(session, uid) session.commit() return r
def sincronizar_usuarios(token=None): with obtener_session() as session: r = GoogleModel.sincronizar_dirty(session) session.commit() return r
def chequear_precondiciones_usuario(token=None): uid = token['sub'] assert uid is not None with obtener_session() as s: return UsersModel.precondiciones(s, uid)
def sincronizar_usuarios_detalle(token=None): with obtener_session() as session: r = GoogleModel.sincronizar_usuarios_detalle(session) return r