def registrar_usuario(self, estado=1): """Registra los usuarios de acuerdo a lo ingresado en el formulario. Llamando a los metodos insert_usuario y a send_mail""" user = controlador.get_usuario(self.ids.dni.text) if not user: data = {} data['dni'] = self.ids.dni.text data['nombre'] = self.ids.nombre.text data['lu'] = self.ids.lu.text data['email'] = self.ids.mail.text data['id_facultad'] = self.facultades[self.ids.facultad.text] data['id_provincia'] = self.provincias[self.ids.provincia.text] password = utils.generar_pass() data['password'] = utils.ofuscar_pass(password) data['estado'] = estado # 0 bloqueado / 1 registrado data['id_perfil'] = controlador.get_perfil('Alumno') data['id_categoria'] = controlador.get_categoria_id('Regular') # insertamos el usuario en la db controlador.insert_usuario(data, UNIDAD) # Enviamos el mail de confirmación datos_mail = controlador.get_configuracion() mail_thread = Thread( target=mailserver.send_mail, args=(data['nombre'], data['email'], password, datos_mail) ) mail_thread.start() mensaje = "\rGracias por registrarte!!\r\n\r\n" mensaje += "Comprueba tu mail\r\n para completar el registro" WarningPopup(mensaje).open() else: mensaje = "Ya existe un usario con ese DNI" WarningPopup(mensaje).open()
def update_datos(self): """Actualiza los datos de la pantalla para plasmar cambios""" user_session.update(controlador.get_usuario(self.data['dni'])) self.user = user_session.get_user() self.cargar_datos() self.ids.saldo.text = self.data['saldo'] self.ids.nombre.text = self.data['nombre']
def validar_login(self, dni, password): """Revisa el password de acuerdo al dni ingresado y devuelve los siguientes estados: 0: No existe el dni o no coincide con el password 1: Existe el usuario pero no confirmó su registro(cambiar pass) 2: Existe el usuario y está registrado(ingresar) 3: Existe el usuario pero esta suspendido(cancelar ingreso) 6: Existe el usuario y es de control(pantalla de control)""" user = controlador.get_usuario(dni) if user: if self.comparar_pass(password, user): if user['id_perfil'] == 4: # usuario alumno if not user['activo']: if user['estado'] == 1: # wait / login & cambiar pass return 1 elif user['estado'] == 2: # activo / login & menu return 2 else: # suspendido / cancel return 3 else: return 5 # usuario logueado en otra maquina elif user['id_perfil'] in [3, 5]: # usuario administrativo return 6 else: return 0 else: return 0 else: return 0
def update_profile(self): """Actualiza el perfil con los cambios realizados por el usuario""" self.updata = {} self.updata['email'] = self.ids.email.text self.updata['id_provincia'] = self.provincias[self.ids.provincia.text] controlador.update_usuario(self.user, self.updata) controlador.insert_log(self.user, 'perfil', UNIDAD) user_session.update(controlador.get_usuario(self.data['dni'])) self.cargar_datos()
def cargar_datos(self): """Carga los datos del usuario dentro de la pantalla de anulación""" try: user_session.update(controlador.get_usuario(self.data['dni'])) self.user = user_session.get_user() except KeyError: self.user = user_session.get_user() self.data['dni'] = self.user['dni'] self.data['saldo'] = '$ %.0f' % (self.user['saldo']) self.data['categoria'] = controlador.get_categoria_nombre( self.user['id_categoria']) self.data['facultad'] = controlador.get_facultad( self.user['id_facultad']) self.data['ruta_foto'] = self.user['ruta_foto']
def validar(self): """Valida las entradas y chequea en la base de datos por el par dni - password""" if self.ids.dni.text: if not self.ids.dni.text.isdigit(): self.ids.dni.text = "" self.ids.dni.focus = True mensaje = u"Su DNI solo puede contenter números" WarningPopup(mensaje).open() elif len(self.ids.dni.text) >= 10: mensaje = u"\rSu DNI no puede tener\r\n más de 10 caracteres." self.ids.dni.focus = True WarningPopup(mensaje).open() elif not self.ids.passw.text: mensaje = u"Su PASSWORD no puede estar vacío" self.ids.passw.focus = True WarningPopup(mensaje).open() elif len(self.ids.passw.text) >= 64: mensaje = u"\rSu PASSWORD no puede tener\r\n" mensaje += u"más de 64 caracteres." self.ids.passw.focus = True WarningPopup(mensaje).open() else: dni = self.ids.dni.text password = self.ids.passw.text login = self.validar_login(dni, password) if login: self.clear() user_session.init(controlador.get_usuario(dni), time()) user = user_session.get_user() controlador.insert_log( user, 'ingresar', UNIDAD, 'control - desbloqueo' ) self.manager.current = 'menu_control' self.manager.remove_widget( self.manager.get_screen('bloqueo') ) else: self.ids.passw.text = "" mensaje = u"DNI o PASSWORD incorrecto" WarningPopup(mensaje).open() else: mensaje = u"Su DNI no puede estar vacío" self.ids.dni.focus = True WarningPopup(mensaje).open()
def validar_login(self, dni, password): """Revisa el password de acuerdo al dni ingresado y devuelve los siguientes estados: 0: No existe el dni o no coincide con el password 1: Existe el usuario pero no confirmó su registro(cambiar pass) 2: Existe el usuario y está registrado(ingresar) 3: Existe el usuario pero esta suspendido(cancelar ingreso) 6: Existe el usuario y es de control(pantalla de control)""" user = controlador.get_usuario(dni) if user: if self.comparar_pass(password, user): if user['id_perfil'] in [3, 5]: # usuario administrativo return 1 else: return 0 else: return 0 else: return 0
def cargar_datos(self): """Carga los datos del usuario dentro de la pantalla de perfil""" try: user_session.update(controlador.get_usuario(self.data['dni'])) self.user = user_session.get_user() except KeyError: self.user = user_session.get_user() self.provincias_nombre = sorted(self.provincias.keys()) self.data['nombre'] = self.user['nombre'] self.data['dni'] = self.user['dni'] self.data['saldo'] = '$ %.0f' % (self.user['saldo']) self.data['categoria'] = controlador.get_categoria_nombre( self.user['id_categoria']) self.data['nombre'] = self.user['nombre'] self.data['email'] = self.user['email'] self.data['provincia'] = controlador.get_provincia( self.user['id_provincia']) self.data['facultad'] = controlador.get_facultad( self.user['id_facultad']) self.data['ruta_foto'] = self.user['ruta_foto']
def update_datos(self): """Actualiza los datos de la pantalla para plasmar cambios""" user_session.update(controlador.get_usuario(self.data["dni"])) self.cargar_datos() self.ids.saldo.text = self.data["saldo"] self.ids.nombre.text = self.data["nombre"]
def validar(self): """Valida las entradas y chequea en la base de datos por el par dni - password""" if self.ids.dni.text: if not self.ids.dni.text.isdigit(): self.ids.dni.text = "" self.ids.dni.focus = True mensaje = u"Su DNI solo puede contenter números" WarningPopup(mensaje).open() elif len(self.ids.dni.text) >= 10: mensaje = u"\rSu DNI no puede exceder\r\n los 10 caracteres." self.ids.dni.focus = True WarningPopup(mensaje).open() elif not self.ids.passw.text: mensaje = u"Su PASSWORD no puede estar vacío" self.ids.passw.focus = True WarningPopup(mensaje).open() elif len(self.ids.passw.text) >= 64: msje = u"\rSu PASSWORD no puede exceder\r\n los 64 caracteres." self.ids.passw.focus = True WarningPopup(msje).open() else: dni = self.ids.dni.text password = self.ids.passw.text login = self.validar_login(dni, password) if login: if login == 2: self.clear() user_session.init(controlador.get_usuario(dni), time()) user = user_session.get_user() controlador.insert_log(user, 'ingresar', UNIDAD) controlador.update_activo(user, 1) self.manager.current = 'menu' elif login == 1: self.clear() user_session.init(controlador.get_usuario(dni), time()) user = user_session.get_user() controlador.insert_log(user, 'ingresar', UNIDAD) self.manager.add_widget( PasswordScreen('splash', 'splash', 'pass') ) self.manager.current = 'pass' elif login == 6: self.clear() user_session.init(controlador.get_usuario(dni), time()) user = user_session.get_user() controlador.insert_log( user, 'ingresar', UNIDAD, 'control' ) self.manager.current = 'menu_control' elif login == 5: self.clear() msje = u"\rYa has iniciado sesión\r\n en otra maquina." WarningPopup(msje).open() else: self.clear() mensaje = u"\rSu cuenta esta bloqueada.\r\n Dirijase" mensaje += u" a la Administración \r\n del Comedor" mensaje += u" Universitario." WarningPopup(mensaje).open() else: self.ids.passw.text = "" mensaje = u"DNI o PASSWORD incorrecto" WarningPopup(mensaje).open() else: mensaje = u"Su DNI no puede estar vacío" self.ids.dni.focus = True WarningPopup(mensaje).open()
def validar(self): """Valida las entradas y chequea en la base de datos por el par dni - password""" if self.ids.dni.text: if not self.ids.dni.text.isdigit(): self.ids.dni.text = "" self.ids.dni.focus = True mensaje = u"Su DNI solo puede contenter números" WarningPopup(mensaje).open() elif len(self.ids.dni.text) >= 10: mensaje = u"\rSu DNI no puede exceder\r\n los 10 caracteres." self.ids.dni.focus = True WarningPopup(mensaje).open() elif not self.ids.passw.text: mensaje = u"Su PASSWORD no puede estar vacío" self.ids.passw.focus = True WarningPopup(mensaje).open() elif len(self.ids.passw.text) >= 64: msje = u"\rSu PASSWORD no puede exceder\r\n los 64 caracteres." self.ids.passw.focus = True WarningPopup(msje).open() else: dni = self.ids.dni.text password = self.ids.passw.text login = self.validar_login(dni, password) if login: if login == 2: self.clear() user_session.init(controlador.get_usuario(dni), time()) user = user_session.get_user() controlador.insert_log(user, 'ingresar', UNIDAD) controlador.update_activo(user, 1) self.manager.current = 'menu' elif login == 1: self.clear() user_session.init(controlador.get_usuario(dni), time()) user = user_session.get_user() controlador.insert_log(user, 'ingresar', UNIDAD) self.manager.add_widget( PasswordScreen('splash', 'splash', 'pass')) self.manager.current = 'pass' elif login == 6: self.clear() user_session.init(controlador.get_usuario(dni), time()) user = user_session.get_user() controlador.insert_log(user, 'ingresar', UNIDAD, 'control') self.manager.current = 'menu_control' elif login == 5: self.clear() msje = u"\rYa has iniciado sesión\r\n en otra maquina." WarningPopup(msje).open() else: self.clear() mensaje = u"\rSu cuenta esta bloqueada.\r\n Dirijase" mensaje += u" a la Administración \r\n del Comedor" mensaje += u" Universitario." WarningPopup(mensaje).open() else: self.ids.passw.text = "" mensaje = u"DNI o PASSWORD incorrecto" WarningPopup(mensaje).open() else: mensaje = u"Su DNI no puede estar vacío" self.ids.dni.focus = True WarningPopup(mensaje).open()