Advertisement
Sax

PyTransactio - Failed Betatest

Sax
Nov 27th, 2012
350
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 13.80 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2.  
  3. #------- TODO -----------#
  4. # X) Hacer GUI:
  5. #   X) Hacer Pantallas -CHECK!
  6. #   X) Agregar Message Boxes y limitaciones
  7. # 2) Integrar Comunicación
  8. #   2.1)
  9. # 3) Probar
  10. #-------------------------#
  11.  
  12. import sys
  13. from socket import *
  14. from PySide import QtGui, QtCore
  15. from time import sleep
  16.  
  17. class App(QtGui.QMainWindow):
  18.    
  19.     def __init__(self, parent=None):
  20.         super(App, self).__init__(parent)
  21.  
  22.         self.comunica()
  23.         self.initUI()
  24.  
  25.     def comunica(self):
  26.  
  27.         self.HOST = 'localhost'
  28.         self.PORT = 9999
  29.         self.ADDR = (self.HOST, self.PORT)
  30.         self.BUFSIZE = 4096
  31.         self.cli = socket(AF_INET, SOCK_STREAM)
  32.         #self.cli.connect((self.ADDR))
  33.  
  34.     def sendData(self, func, user, monto=None, password=None):
  35.  
  36.         funcion = func
  37.         usuario = user
  38.         retiro = monto
  39.         pw = password
  40.  
  41.         self.cli.send(funcion)
  42.         sleep(2)
  43.         self.cli.send(usuario)
  44.         sleep(2)
  45.  
  46.         if monto == None:
  47.             retiro = 'None'
  48.         self.cli.send(retiro)
  49.         sleep(2)
  50.  
  51.         if password == None:
  52.             pw = 'None'
  53.         self.cli.send(password)
  54.         sleep(2)
  55.  
  56.         result = self.cli.recv(self.BUFSIZE)
  57.  
  58.         return result #Siempre es una string
  59.  
  60.     def initUI(self):
  61.  
  62.         self.statusBar().showMessage(str('Listo')) #Status Bar //      str(self.cli.recv(self.BUFSIZE))
  63.  
  64.         self.central_widget = QtGui.QStackedWidget() #Crea un stacked widget
  65.         self.setCentralWidget(self.central_widget) #Settea el stacked widget como widget central
  66.  
  67.         self.login_widget = LoginWidget(self) #Login Screen
  68.         self.retiro_widget = RetiroWidget(self) #Retiro Screen
  69.         self.saldo_widget = SaldoWidget(self) #Saldo Screen
  70.        
  71.         self.login_widget.loginButton.clicked.connect(self.login)
  72.         self.central_widget.addWidget(self.login_widget)
  73.  
  74.         self.user = None
  75.         self.saldo_user = None
  76.        
  77.         self.setGeometry(300, 300, 600, 280) #Window Size
  78.         self.setWindowTitle('PyTransactio - Client') #Window Title
  79.         self.setWindowIcon(QtGui.QIcon('icon.png')) #App Icon
  80.         self.show()
  81.  
  82.     def login(self):
  83.         """ Accede a la pantalla de login para seleccionar tarea """
  84.         #Valida
  85.        
  86.         if self.login_widget.usuarioEdit.text() == '':
  87.             alert = QtGui.QMessageBox.warning(self, 'Aviso', "Por favor, llena el campo de Usuario")
  88.         elif self.login_widget.passwordEdit.text() == '':
  89.             alert = QtGui.QMessageBox.warning(self, 'Aviso', "Por favor, llena el campo de Password")
  90.         else:
  91.             if True: #self.sendData("0", self.login_widget.usuarioEdit.text(), None, self.login_widget.passwordEdit.text()) == '1':
  92.                 logged_in_widget = LoggedWidget(self)
  93.                 self.central_widget.addWidget(logged_in_widget)
  94.                 self.central_widget.setCurrentWidget(logged_in_widget)
  95.                 self.user = self.login_widget.usuarioEdit.text()
  96.                 self.statusBar().showMessage('Hola '+ self.user + '!')
  97.             else:
  98.                  alert = QtGui.QMessageBox.warning(self, 'Aviso', "Usuario o clave incorrecta")
  99.  
  100.     def retiro(self):
  101.         """ Accede a la pantalla de retiro para realizar un retiro de efectivo """
  102.         #Comunicacion
  103.         self.central_widget.addWidget(self.retiro_widget)
  104.         self.central_widget.setCurrentWidget(self.retiro_widget)
  105.         self.statusBar().showMessage('Introduce la cantidad a retirar.')
  106.  
  107.     def saldo(self):
  108.         """ Accede a la pantalla de consulta de saldo para revisar los fondos en la cuenta """
  109.         #Comunicacion
  110.         self.central_widget.addWidget(self.saldo_widget)
  111.         self.central_widget.setCurrentWidget(self.saldo_widget)
  112.         self.statusBar().showMessage('Revisa tu saldo disponible.')
  113.  
  114.     def withdraw(self):
  115.         """ Retira fondos de la cuenta """
  116.         #Valida
  117.         if self.retiro_widget.retiroEdit.text() == '':
  118.             alert = QtGui.QMessageBox.warning(self, 'Aviso', "Por favor, llena el campo con el monto a retirar")
  119.         elif int(self.retiro_widget.retiroEdit.text()) == 0:
  120.             alert = QtGui.QMessageBox.warning(self, 'Aviso', "Por favor, introduce una cantidad positiva no mayor a 5000")
  121.  
  122.         self.monto = int(self.retiro_widget.retiroEdit.text())
  123.  
  124.         self.saldo_user = 4000 #self.sendData("1", self.user) ESTO LO TENGO QUE CAMBIAR VITEH
  125.        
  126.         if self.monto > int(self.saldo_user):
  127.             alert = QtGui.QMessageBox.warning(self, 'Aviso', "Usted tiene menos fondos de los que intenta retirar")
  128.         else:
  129.             #self.saldo_user = self.sendData("2", self.user, self.monto)
  130.             confirm_widget = ConfirmWidget(self)
  131.             self.central_widget.addWidget(confirm_widget)
  132.             self.central_widget.setCurrentWidget(confirm_widget)
  133.             self.statusBar().showMessage('Retiro hecho satisfactoriamente.')
  134.             self.retiro_widget.retiroEdit.setText('')
  135.  
  136.     def logout(self):
  137.         """ Cierra sesion """
  138.         #Comunicacion
  139.         self.central_widget.setCurrentWidget(self.login_widget)
  140.         self.statusBar().showMessage('Gracias por usar PyTransactio!')
  141.         self.login_widget.usuarioEdit.setText('')
  142.         self.login_widget.passwordEdit.setText('')
  143.  
  144.     def closeEvent(self, event):
  145.         reply = QtGui.QMessageBox.question(self, 'Salir?', "Seguro que desea salir?", QtGui.QMessageBox.Yes |
  146.                                            QtGui.QMessageBox.No, QtGui.QMessageBox.No)
  147.         if reply == QtGui.QMessageBox.Yes:
  148.             #Cierra sesion
  149.             event.accept()
  150.         else:
  151.             event.ignore()
  152.    
  153. class LoginWidget(QtGui.QWidget):
  154.  
  155.     def __init__(self, parent=None):
  156.         super(LoginWidget, self).__init__(parent)
  157.  
  158.         self.initUI()
  159.  
  160.     def initUI(self):
  161.  
  162.         self.logo = QtGui.QPixmap('icon.png') #Logo
  163.         self.lbl = QtGui.QLabel(self) #Crea etiqueta para poner el logo
  164.         self.lbl.setPixmap(self.logo) #Mete el logo en la etiqueta
  165.         self.title = QtGui.QLabel('PyTransactio') #Texto en plan Logo
  166.         self.title.setFont(QtGui.QFont('SansSerif', 48))
  167.        
  168.         self.usuario = QtGui.QLabel('Usuario') #Label del User
  169.         self.password = QtGui.QLabel('Password') #Label del pass
  170.  
  171.         self.usuarioEdit = QtGui.QLineEdit() #Line Edit del username
  172.         self.usuarioEdit.setStatusTip('Introduce tu nombre de usuario.')
  173.         self.passwordEdit = QtGui.QLineEdit() #Line Edit del password
  174.         self.passwordEdit.setStatusTip('Introduce tu password.')
  175.         self.passwordEdit.setEchoMode(QtGui.QLineEdit.Password) #Hacer que sea para password y ver **** en lugar de caracteres
  176.  
  177.         self.loginButton = QtGui.QPushButton('Entrar') #Crea boton de login
  178.  
  179.         self.loginButton.clicked.connect(self.parent().login) #Metodo llamado al presionar el Login
  180.         self.loginButton.setStatusTip('Ingresa con tus datos.') #Mostrar tip en la barra de estado
  181.        
  182.         self.grid = QtGui.QGridLayout() #Layout en Grid
  183.         self.grid.setSpacing(10) #Espacio entre widgets del Layout
  184.  
  185.         self.grid.addWidget(self.lbl, 1, 0, 1, 2) #Agrega el logo al grid
  186.         self.grid.addWidget(self.title, 1, 2, 1, 5) #Agrega el logotipo al grid
  187.        
  188.         self.grid.addWidget(self.usuario, 2, 0) #Agrega el texto 'Usuario' al grid
  189.         self.grid.addWidget(self.usuarioEdit, 2, 1, 1, 5) #Agrega el textfield para el usuario
  190.  
  191.         self.grid.addWidget(self.password, 3, 0) #Agrega el texto 'Password' al grid
  192.         self.grid.addWidget(self.passwordEdit, 3, 1, 1, 5) #Agrega el textfield para el pass
  193.         self.grid.addWidget(self.loginButton, 3, 6) #Agrega el boton de login al grd
  194.        
  195.         self.setLayout(self.grid) #Settea el Layout en Grid
  196.  
  197.         #self.setGeometry(300, 300, 450, 400) #Widget Size
  198.         self.show()
  199.  
  200. class LoggedWidget(QtGui.QWidget):
  201.  
  202.     def __init__(self, parent=None):
  203.         super(LoggedWidget, self).__init__(parent)
  204.  
  205.         self.initUI()
  206.  
  207.     def initUI(self):
  208.  
  209.        self.logo = QtGui.QPixmap('icon.png') #Logo
  210.        self.lbl = QtGui.QLabel(self) #Crea etiqueta para poner el logo
  211.        self.lbl.setPixmap(self.logo) #Mete el logo en la etiqueta
  212.        self.title = QtGui.QLabel('PyTransactio') #Texto en plan Logo
  213.        self.title.setFont(QtGui.QFont('SansSerif', 48))
  214.  
  215.        self.retiro = QtGui.QPushButton('Retiro')
  216.        self.retiro.setStatusTip('Realiza un retiro en tu cuenta.')
  217.        self.retiro.clicked.connect(self.parent().retiro)
  218.  
  219.        self.saldo = QtGui.QPushButton('Saldo')
  220.        self.saldo.setStatusTip('Revisa los fondos disponibles en tu cuenta.')
  221.        self.saldo.clicked.connect(self.parent().saldo)
  222.  
  223.        self.salir = QtGui.QPushButton('Salir')
  224.        self.salir.setStatusTip('Salir del sistema PyTransactio.')
  225.        self.salir.clicked.connect(self.parent().logout)
  226.  
  227.        self.grid = QtGui.QGridLayout()
  228.        self.grid.setSpacing(10)
  229.  
  230.        self.grid.addWidget(self.lbl, 1, 0, 1, 2) #Agrega el logo al grid
  231.        self.grid.addWidget(self.title, 1, 2, 1, 5) #Agrega el logotipo al grid
  232.  
  233.        self.grid.addWidget(self.saldo, 2, 3)
  234.        self.grid.addWidget(self.retiro, 3, 3)
  235.        self.grid.addWidget(self.salir, 4, 3)
  236.  
  237.        self.parent().user = self.parent().login_widget.usuarioEdit.text()
  238.        #self.parent().saldo = #self.sendData("1", self.parent().user) ESTO LO TENGO QUE QUITAR VITEH
  239.  
  240.        self.setLayout(self.grid)
  241.        self.show()
  242.  
  243. class RetiroWidget(QtGui.QWidget):
  244.  
  245.     def __init__(self, parent=None):
  246.         super(RetiroWidget, self).__init__(parent)
  247.  
  248.         self.initUI()
  249.  
  250.     def initUI(self):
  251.        
  252.         self.logo = QtGui.QPixmap('icon.png') #Logo
  253.         self.lbl = QtGui.QLabel(self) #Crea etiqueta para poner el logo
  254.         self.lbl.setPixmap(self.logo) #Mete el logo en la etiqueta
  255.         self.title = QtGui.QLabel('PyTransactio') #Texto en plan Logo
  256.         self.title.setFont(QtGui.QFont('SansSerif', 48))
  257.  
  258.         self.retiro = QtGui.QLabel('Retirar')
  259.         self.retiroEdit = QtGui.QLineEdit()
  260.         self.valida = QtGui.QIntValidator(0, 5000)
  261.         self.retiroEdit.setValidator(self.valida)
  262.         self.retiroEdit.setStatusTip('Introduce la cantidad a retirar.')
  263.  
  264.         self.retirar = QtGui.QPushButton('Confirmar')
  265.         self.retirar.setStatusTip('Retirar la cantidad deseada.')
  266.         self.retirar.clicked.connect(self.parent().withdraw)
  267.  
  268.         self.volver = QtGui.QPushButton('Volver')
  269.         self.volver.setStatusTip('Regresar a la pantalla de inicio.')
  270.         self.volver.clicked.connect(self.parent().login)
  271.  
  272.         self.grid = QtGui.QGridLayout()
  273.         self.grid.setSpacing(10)
  274.  
  275.         self.grid.addWidget(self.lbl, 1, 0, 1, 2) #Agrega el logo al grid
  276.         self.grid.addWidget(self.title, 1, 2, 1, 5) #Agrega el logotipo al grid
  277.  
  278.         self.grid.addWidget(self.retiro, 2, 3)
  279.         self.grid.addWidget(self.retiroEdit, 2, 4)
  280.         self.grid.addWidget(self.retirar, 2, 5)
  281.         self.grid.addWidget(self.volver, 3, 1)
  282.  
  283.         self.setLayout(self.grid)
  284.         self.show()
  285.  
  286. class SaldoWidget(QtGui.QWidget):
  287.  
  288.     def __init__(self, parent=None):
  289.         super(SaldoWidget, self).__init__(parent)
  290.  
  291.         self.initUI()
  292.  
  293.     def initUI(self):
  294.  
  295.         self.logo = QtGui.QPixmap('icon.png') #Logo
  296.         self.lbl = QtGui.QLabel(self) #Crea etiqueta para poner el logo
  297.         self.lbl.setPixmap(self.logo) #Mete el logo en la etiqueta
  298.         self.title = QtGui.QLabel('PyTransactio') #Texto en plan Logo
  299.         self.title.setFont(QtGui.QFont('SansSerif', 48))
  300.  
  301.         self.saldo_user = 4000 #self.sendData("1", self.user) ESTO LO TENGO QUE CAMBIAR
  302.        
  303.         self.saldo = QtGui.QLabel(self)
  304.         self.saldo.setText('Tu saldo es de $' + str(self.saldo_user))
  305.         self.saldo.setFont(QtGui.QFont('SansSerif', 16))
  306.         #Indicar el saldo del vato
  307.  
  308.         self.volver = QtGui.QPushButton('Volver')
  309.         self.volver.setStatusTip('Regresar a la pantalla de inicio.')
  310.         self.volver.clicked.connect(self.parent().login)
  311.  
  312.         self.grid = QtGui.QGridLayout()
  313.         self.grid.setSpacing(10)
  314.  
  315.         self.grid.addWidget(self.lbl, 1, 0, 1, 2) #Agrega el logo al grid
  316.         self.grid.addWidget(self.title, 1, 2, 1, 5) #Agrega el logotipo al grid
  317.  
  318.         self.grid.addWidget(self.saldo, 2, 2, 1, 1)
  319.         self.grid.addWidget(self.volver, 3, 3)                          
  320.  
  321.         self.setLayout(self.grid)
  322.         self.show()
  323.  
  324.  
  325. class ConfirmWidget(QtGui.QWidget):
  326.  
  327.     def __init__(self, parent=None):
  328.         super(ConfirmWidget, self).__init__(parent)
  329.  
  330.         self.initUI()
  331.  
  332.     def initUI(self):
  333.  
  334.         self.logo = QtGui.QPixmap('icon.png') #Logo
  335.         self.lbl = QtGui.QLabel(self) #Crea etiqueta para poner el logo
  336.         self.lbl.setPixmap(self.logo) #Mete el logo en la etiqueta
  337.         self.title = QtGui.QLabel('PyTransactio') #Texto en plan Logo
  338.         self.title.setFont(QtGui.QFont('SansSerif', 48))
  339.  
  340.         self.retiro = QtGui.QLabel(self)
  341.         self.retiro.setText('Retiraste satsfactoriamente $' + str(self.parent().retiro_widget.retiroEdit.text()))
  342.         self.retiro.setFont(QtGui.QFont('SansSerif', 16))
  343.  
  344.         self.saldo = QtGui.QLabel(self)
  345.         self.saldo.setText('Tu saldo actual es de $' + str(self.parent().saldo_user))
  346.         self.saldo.setFont(QtGui.QFont('SansSerif', 14))
  347.         #Indicar el saldo restante del vato
  348.        
  349.  
  350.         self.volver = QtGui.QPushButton('Volver')
  351.         self.volver.setStatusTip('Regresar a la pantalla de inicio.')
  352.         self.volver.clicked.connect(self.parent().login)
  353.  
  354.         self.grid = QtGui.QGridLayout()
  355.         self.grid.setSpacing(10)
  356.  
  357.         self.grid.addWidget(self.lbl, 1, 0, 1, 2) #Agrega el logo al grid
  358.         self.grid.addWidget(self.title, 1, 2, 1, 5) #Agrega el logotipo al grid
  359.  
  360.         self.grid.addWidget(self.retiro, 2, 1, 1, 4)
  361.         self.grid.addWidget(self.saldo, 3, 1, 1, 4)
  362.         self.grid.addWidget(self.volver, 3, 4)
  363.  
  364.         self.setLayout(self.grid)
  365.         self.show()
  366.  
  367. def main():
  368.  
  369.     app = QtGui.QApplication(sys.argv)
  370.     ex = App()
  371.     sys.exit(app.exec_())
  372.  
  373. if __name__ == '__main__':
  374.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement