Пример #1
0
 def apagar(self):
     """Cierra la sesion y apaga la maquina"""
     user = user_session.get_user()
     controlador.insert_log(user, 'apagar', UNIDAD, 'Control')
     user_session.close()
     controlador.update_all_activos()
     os.system("/sbin/shutdown -h now")
Пример #2
0
 def cancel(self):
     """Vuelve a una pantalla anterior"""
     self.stop.set()
     self.cola_stop.put(True)
     if self.total_parcial:
         total = self.total_parcial
         log = controlador.insert_log(self.user, 'cargar', UNIDAD,
                                      str(self.total_parcial))
         controlador.update_saldo(self.user, self.total_parcial, 0)
         self.update_datos()
         if impresora.check_status() == 1:
             log = str(log)
             nom = self.data['nombre'].decode('utf8')
             dni = self.data['dni'].decode('utf8')
             cat = self.data['categoria'].decode('utf8')
             fac = self.data['facultad'].decode('utf8')
             fecha = str(int(time()))
             pco = total
             code = fecha + '0' * (10 - len(log)) + log
             msj = u"Gracias por usar el Comedor Universitario"
             sdo = self.user['saldo']
             print_thread = Thread(target=impresora.imprimir_ticket_carga,
                                   args=(nom, dni, fac, cat, code, UNIDAD,
                                         log, msj, pco, sdo))
             print_thread.start()
     id_log = controlador.insert_log(self.user, 'cancelar', UNIDAD)
     controlador.cancelar_tickets(self.reserva)
     self.manager.current = 'compra_1'
     self.update_ingreso("", True)
     self.manager.remove_widget(self.manager.get_screen('compra_2'))
Пример #3
0
 def comprar_tickets(self, excedente):
     """
     Realiza la inserción de los tickets en la db y cambia a la
     siguiente pantalla.
     """
     if self.bandera:
         id_log = controlador.insert_log(self.user, 'comprar', UNIDAD)
         if id_log:
             self.bandera = False
             controlador.comprar_tickets(self.reserva, id_log)
             controlador.update_saldo(self.user, self.saldo, 1)
             if excedente:
                 controlador.insert_log(self.user, 'cargar', UNIDAD,
                                        str(excedente))
                 controlador.update_saldo(self.user, excedente, 0)
             self.update_datos()
             self.imprimir_todos()
             self.manager.add_widget(
                 ConfirmacionScreen(len(self.reserva), name='confirmacion'))
             self.manager.current = 'confirmacion'
             self.manager.remove_widget(self.manager.get_screen('compra_1'))
             self.manager.remove_widget(self.manager.get_screen('compra_2'))
             self.total_parcial = 0
         else:
             self.cancel()
Пример #4
0
 def print_ticket_grupal(self, cant, delegacion, cat, date, recibo):
     """
     Imprime el ticket grupal para el día(date), para la delegación
     dada y la cantidad solicitada.
     """
     user = user_session.get_user()
     id_log = controlador.insert_log(user, 'comprar_grupal', UNIDAD)
     ticket_grupal = controlador.comprar_ticket_grupal(
         cant, delegacion, cat, date, recibo, id_log
     )
     row = controlador.get_ticket_grupal_by_id(ticket_grupal)
     id_log = controlador.insert_log(user, 'imprimir_grupal', UNIDAD)
     controlador.insert_ticket_log(ticket_grupal, id_log)
     print_thread = Thread(
         target=impresora.imprimir_ticket_grupal,
         args=(
             user['nombre'],
             user['dni'],
             row['id'],
             UNIDAD,
             row['fecha'].strftime('%d/%m/%Y'),
             row['cantidad'],
             row['barcode'],
             row['importe'],
             row['delegacion'],
             row['recibo']
         )
     )
     print_thread.start()
     Window.release_all_keyboards()
     self.cancel()
Пример #5
0
 def imprimir(self):
     """imprime un ticket de control"""
     print_status = impresora.check_status()
     papel_disponible = controlador.get_papel_disponible(UNIDAD)
     if ((print_status == 1)
             or (print_status == 2 and papel_disponible >= 1)):
         user = user_session.get_user()
         controlador.insert_log(user, 'imprimir', UNIDAD,
                                'Ticket de prueba')
         fecha = "dd/mm/aaaa"
         code = str(int(time())) + "0000000000"
         nom = user['nombre']
         dni = user['dni']
         cat = u"control"
         fac = u"Secretaría de Bienestar"
         msj = u"Ticket NO VALIDO"
         sdo = 0
         ticket = "XXX"
         print_thread = Thread(target=impresora.imprimir_ticket_alumno,
                               args=(nom, dni, fac, cat, code, UNIDAD,
                                     ticket, fecha, msj, sdo))
         print_thread.start()
         controlador.update_papel_disponible(UNIDAD, 0, 1)
     elif print_status == 2:
         mensaje = u"No hay papel"
         WarningPopup(mensaje).open()
     else:
         mensaje = u"Impresora desconectada"
         WarningPopup(mensaje).open()
Пример #6
0
 def comprar_tickets(self, excedente):
     """
     Realiza la inserción de los tickets en la db y cambia a la
     siguiente pantalla.
     """
     if self.bandera:
         id_log = controlador.insert_log(self.user, 'comprar', UNIDAD)
         if id_log:
             self.bandera = False
             controlador.comprar_tickets(self.reserva, id_log)
             controlador.update_saldo(self.user, self.saldo, 1)
             if excedente:
                 controlador.insert_log(
                     self.user,
                     'cargar',
                     UNIDAD,
                     str(excedente)
                 )
                 controlador.update_saldo(self.user, excedente, 0)
             self.update_datos()
             self.imprimir_todos()
             self.manager.add_widget(
                 ConfirmacionScreen(
                     len(self.reserva),
                     name='confirmacion'
                 )
             )
             self.manager.current = 'confirmacion'
             self.manager.remove_widget(self.manager.get_screen('compra_1'))
             self.manager.remove_widget(self.manager.get_screen('compra_2'))
             self.total_parcial = 0
         else:
             self.cancel()
Пример #7
0
 def cancel(self):
     """Vuelve a una pantalla anterior"""
     self.stop.set()
     self.cola_stop.put(True)
     if self.total_parcial:
         total = self.total_parcial
         log = controlador.insert_log(
             self.user,
             'cargar',
             UNIDAD,
             str(self.total_parcial)
         )
         controlador.update_saldo(self.user, self.total_parcial, 0)
         self.update_datos()
         if impresora.check_status() == 1:
             log = str(log)
             nom = self.data['nombre'].decode('utf8')
             dni = self.data['dni'].decode('utf8')
             cat = self.data['categoria'].decode('utf8')
             fac = self.data['facultad'].decode('utf8')
             fecha = str(int(time()))
             pco = total
             code = fecha + '0' * (10 - len(log)) + log
             msj = u"Gracias por usar el Comedor Universitario"
             sdo = self.user['saldo']
             print_thread = Thread(
                 target=impresora.imprimir_ticket_carga,
                 args=(nom, dni, fac, cat, code, UNIDAD, log, msj, pco, sdo)
             )
             print_thread.start()
     id_log = controlador.insert_log(self.user, 'cancelar', UNIDAD)
     controlador.cancelar_tickets(self.reserva)
     self.manager.current = 'compra_1'
     self.update_ingreso("", True)
     self.manager.remove_widget(self.manager.get_screen('compra_2'))
Пример #8
0
 def apagar(self):
     """Cierra la sesion y apaga la maquina"""
     user = user_session.get_user()
     controlador.insert_log(user, 'apagar', UNIDAD, 'Control')
     user_session.close()
     controlador.update_all_activos()
     os.system("/sbin/shutdown -h now")
Пример #9
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()
Пример #10
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()
Пример #11
0
 def iniciar(self):
     """Accede a la pantalla principal del sistema"""
     user = user_session.get_user()
     hora = controlador.get_hora_inicio(UNIDAD)
     retiro = controlador.get_log(UNIDAD, 'retiro')
     if not hora:
         controlador.insert_log(user, 'iniciar', UNIDAD, '1er control')
     else:
         controlador.insert_log(user, 'iniciar', UNIDAD, 'control')
     user_session.close()
     self.manager.current = 'splash'
Пример #12
0
 def iniciar(self):
     """Accede a la pantalla principal del sistema"""
     user = user_session.get_user()
     hora = controlador.get_hora_inicio(UNIDAD)
     retiro = controlador.get_log(UNIDAD, 'retiro')
     if not hora:
         controlador.insert_log(user, 'iniciar', UNIDAD, '1er control')
     else:
         controlador.insert_log(user, 'iniciar', UNIDAD, 'control')
     user_session.close()
     self.manager.current = 'splash'
Пример #13
0
 def billete_trabado(self):
     """ Registra los billetes trabados. """
     self.update_ingreso("jam", True)
     controlador.insert_log(self.user, 'jam', UNIDAD)
     self.stop.set()
     self.cola_stop.put(True)
     user = user_session.get_user()
     controlador.insert_log(user, 'salir', UNIDAD,
                            'Billete trabado - bloqueo')
     controlador.update_activo(user, 0)
     user_session.close()
     sleep(2)
     self.bloquear()
Пример #14
0
 def logout(self):
     """Cierra la sesion, libera las pantallas que no se van a usar y
     vuelve a la pantalla principal"""
     user = user_session.get_user()
     controlador.insert_log(user, 'salir', UNIDAD)
     controlador.update_activo(user, 0)
     user_session.close()
     if self.manager.has_screen('opciones'):
         self.manager.remove_widget(self.manager.get_screen('opciones'))
     if self.manager.has_screen('compra_1'):
         self.manager.remove_widget(self.manager.get_screen('compra_1'))
     if self.manager.has_screen('compra_2'):
         self.manager.remove_widget(self.manager.get_screen('compra_2'))
     self.manager.current = 'splash'
Пример #15
0
 def logout(self):
     """Cierra la sesion, libera las pantallas que no se van a usar y
     vuelve a la pantalla principal"""
     user = user_session.get_user()
     controlador.insert_log(user, 'salir', UNIDAD)
     controlador.update_activo(user, 0)
     user_session.close()
     if self.manager.has_screen('opciones'):
         self.manager.remove_widget(self.manager.get_screen('opciones'))
     if self.manager.has_screen('compra_1'):
         self.manager.remove_widget(self.manager.get_screen('compra_1'))
     if self.manager.has_screen('compra_2'):
         self.manager.remove_widget(self.manager.get_screen('compra_2'))
     self.manager.current = 'splash'
Пример #16
0
 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()
Пример #17
0
 def print_ticket_cierre(self, unidad, date):
     """ Imprime el ticket de cierre de la unidad y del día(date) dado """
     total, bills = controlador.get_total(unidad, date)
     user = user_session.get_user()
     desc = 'Control - Cierre de la maquina %d del dia %s' % (
         unidad, date.strftime('%d/%m/%Y'))
     id_log = controlador.insert_log(user, 'retiro', unidad, desc)
     id_ticket = controlador.get_id_ticket_cierre(unidad, date)
     if not id_ticket:
         id_ticket = controlador.insert_ticket_cierre(id_log, total, unidad)
     ticket = controlador.get_ticket_cierre(id_ticket)
     hora = controlador.get_hora_inicio(unidad, date)
     print_status = impresora.check_status()
     papel_disponible = controlador.get_papel_disponible(UNIDAD)
     if ((print_status == 1)
             or (print_status == 2 and papel_disponible >= 2)):
         print_thread = Thread(target=impresora.imprimir_ticket_cierre,
                               args=(user['nombre'], id_ticket, unidad,
                                     hora, bills, total, ticket['barcode'],
                                     date.strftime('%d/%m/%Y')))
         print_thread.start()
         controlador.update_papel_disponible(UNIDAD, 0, 2)
     elif print_status == 2:
         mensaje = u"No hay papel"
         WarningPopup(mensaje).open()
     else:
         mensaje = u"Impresora desconectada"
         WarningPopup(mensaje).open()
Пример #18
0
 def imprimir_todos(self):
     """
     Imprime todos los tickets que se hayan comprado.
     """
     id_log = controlador.insert_log(self.user, 'imprimir', UNIDAD)
     ticket_list = []
     for ticket, id_dia in self.reserva:
         row = None
         ticket_data = {}
         row = controlador.get_ticket_by_id(ticket)
         if row:
             id_ticket = row['id']
             ticket_data['fecha'] = row['fecha'].strftime('%d/%m/%Y')
             ticket_data['code'] = row['barcode']
             ticket_data['nombre'] = self.data['nombre'].decode('utf8')
             ticket_data['dni'] = self.data['dni'].decode('utf8')
             categoria = self.data['categoria'].decode('utf8')
             ticket_data['categoria'] = categoria
             ticket_data['facultad'] = self.data['facultad'].decode('utf8')
             ticket_data['unidad'] = UNIDAD
             mensaje = u"Gracias por usar el Comedor Universitario"
             ticket_data['mensaje'] = mensaje
             ticket_data['ticket'] = str(id_ticket)
             ticket_data['saldo'] = self.user['saldo']
             controlador.insert_ticket_log(id_ticket, id_log)
             ticket_list.append(ticket_data)
     controlador.update_papel_disponible(UNIDAD, 0, len(ticket_list))
     print_thread = Thread(
         target=impresora.imprimir_tickets_alumno,
         args=ticket_list
     )
     print_thread.start()
Пример #19
0
 def __init__(self, dias, saldo, **kwargs):
     """Pantalla para comprar usando efectivo."""
     self.user = user_session.get_user()
     id_log = controlador.insert_log(self.user, 'reservar', UNIDAD)
     self.reserva, full, state = controlador.reservar_tickets(
         self.user, dias, id_log, UNIDAD
     )
     self.data = {}
     self.saldo = saldo
     self.stop = Event()
     importe = controlador.get_categoria_importe(self.user['id_categoria'])
     self.faltante = (len(self.reserva) * importe) - saldo
     self.total_parcial = 0
     self.bandera = True
     self.cargar_datos()
     self.cargar_threads()
     if state:
         if full:
             for dia in full:
                 mensaje = "\rNo se pudo reservar: \r\n\t%s" % (
                                                 dia.strftime('%d/%m/%Y'))
                 WarningPopup(mensaje).open()
     else:
         mensaje = "\rHubo un error al reservar \r\nIntente nuevamente"
         WarningPopup(mensaje).open()
         self.cancel()
     super(Compra2Screen, self).__init__(**kwargs)
Пример #20
0
 def cancel(self):
     """Vuelve a una pantalla anterior"""
     if self.total:
         print_status = impresora.check_status()
         papel_disponible = controlador.get_papel_disponible(UNIDAD)
         if ((print_status == 1)
                 or (print_status == 2 and papel_disponible >= 1)):
             log = controlador.insert_log(self.user, 'cargar', UNIDAD,
                                          str(self.total))
             log = str(log)
             nombre = self.data['nombre'].decode('utf8')
             dni = self.data['dni'].decode('utf8')
             categoria = self.data['categoria'].decode('utf8')
             facultad = self.data['facultad'].decode('utf8')
             fecha = str(int(time()))
             total = self.total
             code = fecha + '0' * (10 - len(log)) + log
             mensaje = u"Gracias por usar el Comedor Universitario"
             saldo = self.user['saldo']
             print_thread = Thread(target=impresora.imprimir_ticket_carga,
                                   args=(nombre, dni, facultad, categoria,
                                         code, UNIDAD, log, mensaje, total,
                                         saldo))
             print_thread.start()
             controlador.update_papel_disponible(UNIDAD, 0, 1)
     self.stop.set()
     self.cola_stop.put(True)
     self.manager.current = 'menu'
     self.manager.remove_widget(self.manager.get_screen('carga'))
Пример #21
0
 def __init__(self, dias, saldo, **kwargs):
     """Pantalla para comprar usando efectivo."""
     self.user = user_session.get_user()
     id_log = controlador.insert_log(self.user, 'reservar', UNIDAD)
     self.reserva, full, state = controlador.reservar_tickets(
         self.user, dias, id_log, UNIDAD)
     self.data = {}
     self.saldo = saldo
     self.stop = Event()
     importe = controlador.get_categoria_importe(self.user['id_categoria'])
     self.faltante = (len(self.reserva) * importe) - saldo
     self.total_parcial = 0
     self.bandera = True
     self.cargar_datos()
     self.cargar_threads()
     if state:
         if full:
             for dia in full:
                 mensaje = "\rNo se pudo reservar: \r\n\t%s" % (
                     dia.strftime('%d/%m/%Y'))
                 WarningPopup(mensaje).open()
     else:
         mensaje = "\rHubo un error al reservar \r\nIntente nuevamente"
         WarningPopup(mensaje).open()
         self.cancel()
     super(Compra2Screen, self).__init__(**kwargs)
Пример #22
0
 def imprimir_todos(self):
     """
     Imprime todos los tickets que se hayan comprado.
     """
     id_log = controlador.insert_log(self.user, 'imprimir', UNIDAD)
     ticket_list = []
     for ticket, id_dia in self.reserva:
         row = None
         ticket_data = {}
         row = controlador.get_ticket_by_id(ticket)
         if row:
             id_ticket = row['id']
             ticket_data['fecha'] = row['fecha'].strftime('%d/%m/%Y')
             ticket_data['code'] = row['barcode']
             ticket_data['nombre'] = self.data['nombre'].decode('utf8')
             ticket_data['dni'] = self.data['dni'].decode('utf8')
             categoria = self.data['categoria'].decode('utf8')
             ticket_data['categoria'] = categoria
             ticket_data['facultad'] = self.data['facultad'].decode('utf8')
             ticket_data['unidad'] = UNIDAD
             mensaje = u"Gracias por usar el Comedor Universitario"
             ticket_data['mensaje'] = mensaje
             ticket_data['ticket'] = str(id_ticket)
             ticket_data['saldo'] = self.user['saldo']
             controlador.insert_ticket_log(id_ticket, id_log)
             ticket_list.append(ticket_data)
     controlador.update_papel_disponible(UNIDAD, 0, len(ticket_list))
     print_thread = Thread(target=impresora.imprimir_tickets_alumno,
                           args=ticket_list)
     print_thread.start()
Пример #23
0
 def billete_trabado(self):
     """ Registra los billetes trabados. """
     self.update_ingreso("jam", True)
     controlador.insert_log(self.user, 'jam', UNIDAD)
     self.stop.set()
     self.cola_stop.put(True)
     user = user_session.get_user()
     controlador.insert_log(
         user,
         'salir',
         UNIDAD,
         'Billete trabado - bloqueo'
     )
     controlador.update_activo(user, 0)
     user_session.close()
     sleep(2)
     self.bloquear()
Пример #24
0
 def imprimir(self):
     """imprime un ticket de control"""
     print_status = impresora.check_status()
     papel_disponible = controlador.get_papel_disponible(UNIDAD)
     if ((print_status == 1) or
             (print_status == 2 and papel_disponible >= 1)
         ):
         user = user_session.get_user()
         controlador.insert_log(
             user,
             'imprimir',
             UNIDAD,
             'Ticket de prueba'
         )
         fecha = "dd/mm/aaaa"
         code = str(int(time())) + "0000000000"
         nom = user['nombre']
         dni = user['dni']
         cat = u"control"
         fac = u"Secretaría de Bienestar"
         msj = u"Ticket NO VALIDO"
         sdo = 0
         ticket = "XXX"
         print_thread = Thread(
             target=impresora.imprimir_ticket_alumno,
             args=(
                 nom,
                 dni,
                 fac,
                 cat,
                 code,
                 UNIDAD,
                 ticket,
                 fecha,
                 msj,
                 sdo
             )
         )
         print_thread.start()
         controlador.update_papel_disponible(UNIDAD, 0, 1)
     elif print_status == 2:
         mensaje = u"No hay papel"
         WarningPopup(mensaje).open()
     else:
         mensaje = u"Impresora desconectada"
         WarningPopup(mensaje).open()
Пример #25
0
 def validar(self):
     """Valida las entradas y llama al metodo que cambia el password"""
     if not self.ids.old_pass.text:
         mensaje = u"Debe ingresar el password actual"
         self.ids.old_pass.focus = True
         WarningPopup(mensaje).open()
     elif not self.ids.new_pass.text:
         mensaje = u"Debe ingresar el password nuevo"
         self.ids.new_pass.focus = True
         WarningPopup(mensaje).open()
     elif not self.ids.re_new_pass.text:
         mensaje = u"Debe repetir el password nuevo"
         self.ids.re_new_pass.focus = True
         WarningPopup(mensaje).open()
     else:
         user = user_session.get_user()
         response = self.cambiar_pass(user)
         if response == 1:
             mensaje = u"Su password se actualizo correctamente"
             WarningPopup(mensaje).open()
             self.clear()
             self.manager.current = self.scr_accept
             if self.scr_accept == 'profile':
                 controlador.insert_log(user, 'perfil', UNIDAD)
             user_session.close()
             self.manager.remove_widget(self.manager.get_screen('pass'))
         elif response == 2:
             msje = u"\rEL password actual\r\n no coincide con el antiguo."
             WarningPopup(msje).open()
             self.clear()
         elif response == 3:
             mensaje = u"\rEl password actual\r\n no debe superar los 15"
             mensaje += u" caracteres\r\n y no puede contener"
             mensaje += u" símbolos extraños."
             WarningPopup(mensaje).open()
             self.clear()
         else:
             mensaje = u"El password nuevo no coincide"
             WarningPopup(mensaje).open()
             self.clear()
Пример #26
0
 def validar(self):
     """Valida las entradas y llama al metodo que cambia el password"""
     if not self.ids.old_pass.text:
         mensaje = u"Debe ingresar el password actual"
         self.ids.old_pass.focus = True
         WarningPopup(mensaje).open()
     elif not self.ids.new_pass.text:
         mensaje = u"Debe ingresar el password nuevo"
         self.ids.new_pass.focus = True
         WarningPopup(mensaje).open()
     elif not self.ids.re_new_pass.text:
         mensaje = u"Debe repetir el password nuevo"
         self.ids.re_new_pass.focus = True
         WarningPopup(mensaje).open()
     else:
         user = user_session.get_user()
         response = self.cambiar_pass(user)
         if response == 1:
             mensaje = u"Su password se actualizo correctamente"
             WarningPopup(mensaje).open()
             self.clear()
             self.manager.current = self.scr_accept
             if self.scr_accept == 'profile':
                 controlador.insert_log(user, 'perfil', UNIDAD)
             user_session.close()
             self.manager.remove_widget(self.manager.get_screen('pass'))
         elif response == 2:
             msje = u"\rEL password actual\r\n no coincide con el antiguo."
             WarningPopup(msje).open()
             self.clear()
         elif response == 3:
             mensaje = u"\rEl password actual\r\n no debe superar los 15"
             mensaje += u" caracteres\r\n y no puede contener"
             mensaje += u" símbolos extraños."
             WarningPopup(mensaje).open()
             self.clear()
         else:
             mensaje = u"El password nuevo no coincide"
             WarningPopup(mensaje).open()
             self.clear()
Пример #27
0
 def cancel(self):
     """Vuelve a una pantalla anterior"""
     if self.total:
         print_status = impresora.check_status()
         papel_disponible = controlador.get_papel_disponible(UNIDAD)
         if ((print_status == 1) or
                 (print_status == 2 and papel_disponible >= 1)
             ):
             log = controlador.insert_log(
                 self.user,
                 'cargar',
                 UNIDAD,
                 str(self.total)
             )
             log = str(log)
             nombre = self.data['nombre'].decode('utf8')
             dni = self.data['dni'].decode('utf8')
             categoria = self.data['categoria'].decode('utf8')
             facultad = self.data['facultad'].decode('utf8')
             fecha = str(int(time()))
             total = self.total
             code = fecha + '0' * (10 - len(log)) + log
             mensaje = u"Gracias por usar el Comedor Universitario"
             saldo = self.user['saldo']
             print_thread = Thread(
                 target=impresora.imprimir_ticket_carga,
                 args=(
                     nombre,
                     dni,
                     facultad,
                     categoria,
                     code,
                     UNIDAD,
                     log,
                     mensaje,
                     total,
                     saldo
                 )
             )
             print_thread.start()
             controlador.update_papel_disponible(UNIDAD, 0, 1)
     self.stop.set()
     self.cola_stop.put(True)
     self.manager.current = 'menu'
     self.manager.remove_widget(self.manager.get_screen('carga'))
Пример #28
0
 def print_ticket_cierre(self, unidad, date):
     """ Imprime el ticket de cierre de la unidad y del día(date) dado """
     total, bills = controlador.get_total(unidad, date)
     user = user_session.get_user()
     desc = 'Control - Cierre de la maquina %d del dia %s' % (
         unidad, date.strftime('%d/%m/%Y')
     )
     id_log = controlador.insert_log(user, 'retiro', unidad, desc)
     id_ticket = controlador.get_id_ticket_cierre(unidad, date)
     if not id_ticket:
         id_ticket = controlador.insert_ticket_cierre(
             id_log, total, unidad
         )
     ticket = controlador.get_ticket_cierre(id_ticket)
     hora = controlador.get_hora_inicio(unidad, date)
     print_status = impresora.check_status()
     papel_disponible = controlador.get_papel_disponible(UNIDAD)
     if ((print_status == 1) or
         (print_status == 2 and papel_disponible >= 2)
         ):
         print_thread = Thread(
             target=impresora.imprimir_ticket_cierre,
             args=(
                 user['nombre'],
                 id_ticket,
                 unidad,
                 hora,
                 bills,
                 total,
                 ticket['barcode'],
                 date.strftime('%d/%m/%Y')
             )
         )
         print_thread.start()
         controlador.update_papel_disponible(UNIDAD, 0, 2)
     elif print_status == 2:
         mensaje = u"No hay papel"
         WarningPopup(mensaje).open()
     else:
         mensaje = u"Impresora desconectada"
         WarningPopup(mensaje).open()
Пример #29
0
 def __init__(self, dias, titulo, **kwargs):
     """Pantalla para confirmar e imprimir los tickets"""
     self.user = user_session.get_user()
     id_log = controlador.insert_log(self.user, 'reservar', UNIDAD)
     self.reserva, full, state = controlador.reservar_tickets(
         self.user, dias, id_log, UNIDAD)
     if state:
         if full:
             for dia in full:
                 mensaje = "\rNo se pudo reservar: \r\n\t%s" % (
                     dia.strftime('%d/%m/%Y'))
                 WarningPopup(mensaje).open()
     else:
         mensaje = "\rHubo un error al reservar \r\nIntente nuevamente"
         WarningPopup(mensaje).open()
         self.cancel()
     self.bandera = True
     self.data = {}
     self.dias = dias
     self.titulo = titulo
     self.cargar_datos()
     super(Compra3Screen, self).__init__(**kwargs)
Пример #30
0
 def __init__(self, dias, titulo, **kwargs):
     """Pantalla para confirmar e imprimir los tickets"""
     self.user = user_session.get_user()
     id_log = controlador.insert_log(self.user, 'reservar', UNIDAD)
     self.reserva, full, state = controlador.reservar_tickets(
         self.user, dias, id_log, UNIDAD
     )
     if state:
         if full:
             for dia in full:
                 mensaje = "\rNo se pudo reservar: \r\n\t%s" % (
                                                 dia.strftime('%d/%m/%Y'))
                 WarningPopup(mensaje).open()
     else:
         mensaje = "\rHubo un error al reservar \r\nIntente nuevamente"
         WarningPopup(mensaje).open()
         self.cancel()
     self.bandera = True
     self.data = {}
     self.dias = dias
     self.titulo = titulo
     self.cargar_datos()
     super(Compra3Screen, self).__init__(**kwargs)
Пример #31
0
from src.screens.control import ControlScreen
# Kivy related imports
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, WipeTransition


class TicketApp(App):

    def build(self):
        # Cargamos el archivo con la interfaz
        Builder.load_file('kv/ticket.kv')
        # Creamos el screen manager con la WipeTransition
        sm = ScreenManager(transition=WipeTransition())
        # Agregamos las pantallas fijas del sistema
        sm.add_widget(SplashScreen(name='splash'))
        sm.add_widget(MenuScreen(name='menu'))
        sm.add_widget(FormScreen(name='formulario'))
        sm.add_widget(LoginScreen(name='login'))
        sm.add_widget(AyudaScreen(name='ayuda'))
        sm.add_widget(ControlScreen(name='menu_control'))
        return sm


if __name__ == '__main__':
    controlador.insert_log({'dni': '222'}, 'iniciar', UNIDAD, 'Pre Inicio')
    init_thread = Thread(target=billetes.init)
    init_thread.daemon = True
    init_thread.start()
    TicketApp().run()
Пример #32
0
from src.screens.ayuda import AyudaScreen
from src.screens.control import ControlScreen
# Kivy related imports
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, WipeTransition


class TicketApp(App):
    def build(self):
        # Cargamos el archivo con la interfaz
        Builder.load_file('kv/ticket.kv')
        # Creamos el screen manager con la WipeTransition
        sm = ScreenManager(transition=WipeTransition())
        # Agregamos las pantallas fijas del sistema
        sm.add_widget(SplashScreen(name='splash'))
        sm.add_widget(MenuScreen(name='menu'))
        sm.add_widget(FormScreen(name='formulario'))
        sm.add_widget(LoginScreen(name='login'))
        sm.add_widget(AyudaScreen(name='ayuda'))
        sm.add_widget(ControlScreen(name='menu_control'))
        return sm


if __name__ == '__main__':
    controlador.insert_log({'dni': '222'}, 'iniciar', UNIDAD, 'Pre Inicio')
    init_thread = Thread(target=billetes.init)
    init_thread.daemon = True
    init_thread.start()
    TicketApp().run()
Пример #33
0
 def retirar(self):
     """
     Controla que se pueda hacer un ticket de cierre para poder
     retirar el dinero.
     """
     user = user_session.get_user()
     retiro = controlador.get_log(UNIDAD, 'retiro')
     hora = controlador.get_hora_inicio(UNIDAD)
     if not retiro and hora:
         total, bills = controlador.get_total(UNIDAD)
         if total:
             desc = 'Control - 1er Cierre'
             id_log = controlador.insert_log(user, 'retiro', UNIDAD, desc)
             id_ticket = controlador.insert_ticket_cierre(
                 id_log, total, UNIDAD)
             ticket = controlador.get_ticket_cierre(id_ticket)
             hora = controlador.get_hora_inicio(UNIDAD)
             print_status = impresora.check_status()
             papel_disponible = controlador.get_papel_disponible(UNIDAD)
             if ((print_status == 1)
                     or (print_status == 2 and papel_disponible >= 2)):
                 print_thread = Thread(
                     target=impresora.imprimir_ticket_cierre,
                     args=(user['nombre'], id_ticket, UNIDAD, hora, bills,
                           total, ticket['barcode']))
                 print_thread.start()
             elif print_status == 2:
                 mensaje = u"No hay papel"
                 WarningPopup(mensaje).open()
             else:
                 mensaje = u"Impresora desconectada"
                 WarningPopup(mensaje).open()
         else:
             mensaje = u"No hay registros para hoy"
             WarningPopup(mensaje).open()
     elif retiro and hora:
         total, bills = controlador.get_total(UNIDAD)
         if total:
             desc = 'Control - Cierre'
             id_log = controlador.insert_log(user, 'retiro', UNIDAD, desc)
             total, bills = controlador.get_total(UNIDAD)
             id_ticket = controlador.get_id_ticket_cierre(UNIDAD)
             if not id_ticket:
                 id_ticket = controlador.insert_ticket_cierre(
                     id_log, total, UNIDAD)
             ticket = controlador.get_ticket_cierre(id_ticket)
             hora = controlador.get_hora_inicio(UNIDAD)
             print_status = impresora.check_status()
             papel_disponible = controlador.get_papel_disponible(UNIDAD)
             if ((print_status == 1)
                     or (print_status == 2 and papel_disponible >= 2)):
                 print_thread = Thread(
                     target=impresora.imprimir_ticket_cierre,
                     args=(user['nombre'], id_ticket, UNIDAD, hora, bills,
                           total, ticket['barcode']))
                 print_thread.start()
                 controlador.update_papel_disponible(UNIDAD, 0, 2)
             elif print_status == 2:
                 mensaje = u"No hay papel"
                 WarningPopup(mensaje).open()
             else:
                 mensaje = u"Impresora desconectada"
                 WarningPopup(mensaje).open()
         else:
             mensaje = u"No hay rergistros para hoy"
             WarningPopup(mensaje).open()
     else:
         msje = u"\rNo puede hacer cierre\r\n sin iniciar antes el sistema."
         WarningPopup(msje).open()
Пример #34
0
 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()
Пример #35
0
 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()
Пример #36
0
 def retirar(self):
     """
     Controla que se pueda hacer un ticket de cierre para poder
     retirar el dinero.
     """
     user = user_session.get_user()
     retiro = controlador.get_log(UNIDAD, 'retiro')
     hora = controlador.get_hora_inicio(UNIDAD)
     if not retiro and hora:
         total, bills = controlador.get_total(UNIDAD)
         if total:
             desc = 'Control - 1er Cierre'
             id_log = controlador.insert_log(user, 'retiro', UNIDAD, desc)
             id_ticket = controlador.insert_ticket_cierre(
                 id_log, total, UNIDAD
             )
             ticket = controlador.get_ticket_cierre(id_ticket)
             hora = controlador.get_hora_inicio(UNIDAD)
             print_status = impresora.check_status()
             papel_disponible = controlador.get_papel_disponible(UNIDAD)
             if ((print_status == 1) or
                 (print_status == 2 and papel_disponible >= 2)
                 ):
                 print_thread = Thread(
                     target=impresora.imprimir_ticket_cierre,
                     args=(
                         user['nombre'],
                         id_ticket,
                         UNIDAD,
                         hora,
                         bills,
                         total,
                         ticket['barcode']
                     )
                 )
                 print_thread.start()
             elif print_status == 2:
                 mensaje = u"No hay papel"
                 WarningPopup(mensaje).open()
             else:
                 mensaje = u"Impresora desconectada"
                 WarningPopup(mensaje).open()
         else:
             mensaje = u"No hay registros para hoy"
             WarningPopup(mensaje).open()
     elif retiro and hora:
         total, bills = controlador.get_total(UNIDAD)
         if total:
             desc = 'Control - Cierre'
             id_log = controlador.insert_log(user, 'retiro', UNIDAD, desc)
             total, bills = controlador.get_total(UNIDAD)
             id_ticket = controlador.get_id_ticket_cierre(UNIDAD)
             if not id_ticket:
                 id_ticket = controlador.insert_ticket_cierre(
                     id_log, total, UNIDAD
                 )
             ticket = controlador.get_ticket_cierre(id_ticket)
             hora = controlador.get_hora_inicio(UNIDAD)
             print_status = impresora.check_status()
             papel_disponible = controlador.get_papel_disponible(UNIDAD)
             if ((print_status == 1) or
                 (print_status == 2 and papel_disponible >= 2)
                 ):
                 print_thread = Thread(
                     target=impresora.imprimir_ticket_cierre,
                     args=(
                         user['nombre'],
                         id_ticket,
                         UNIDAD,
                         hora,
                         bills,
                         total,
                         ticket['barcode']
                     )
                 )
                 print_thread.start()
                 controlador.update_papel_disponible(UNIDAD, 0, 2)
             elif print_status == 2:
                 mensaje = u"No hay papel"
                 WarningPopup(mensaje).open()
             else:
                 mensaje = u"Impresora desconectada"
                 WarningPopup(mensaje).open()
         else:
             mensaje = u"No hay rergistros para hoy"
             WarningPopup(mensaje).open()
     else:
         msje = u"\rNo puede hacer cierre\r\n sin iniciar antes el sistema."
         WarningPopup(msje).open()