[Pykafe-commits] SF.net SVN: pykafe: [66] trunk/pykafe/server
Status: Pre-Alpha
Brought to you by:
jnmbk
From: <jn...@us...> - 2007-06-02 09:56:14
|
Revision: 66 http://pykafe.svn.sourceforge.net/pykafe/?rev=66&view=rev Author: jnmbk Date: 2007-06-02 02:56:16 -0700 (Sat, 02 Jun 2007) Log Message: ----------- logging works and a new state was added to session Modified Paths: -------------- trunk/pykafe/server/logger.py trunk/pykafe/server/server.py trunk/pykafe/server/session.py trunk/pykafe/server/settings.py Modified: trunk/pykafe/server/logger.py =================================================================== --- trunk/pykafe/server/logger.py 2007-06-02 09:55:38 UTC (rev 65) +++ trunk/pykafe/server/logger.py 2007-06-02 09:56:16 UTC (rev 66) @@ -9,9 +9,12 @@ # # Please read the COPYING file. # + from database import Database from PyQt4 import QtCore -def add(self, log_type, log_value, cashier, computer = "", member = "", income = ""): +def add(log_type, log_value, cashier, computer = "", member = "", income = ""): date = QtCore.QDateTime.currentDateTime().toTime_t() - Database().runOnce("insert into logs (date, log_type, log_value, cashier, computer, member, income) values (?,?,?,?,?,?,?)", date, log_type, log_value, cashier, computer, member, income) + Database().runOnce("insert into logs (date, log_type, log_value, cashier, computer, member, income) values (?,?,?,?,?,?,?)", (date, log_type, log_value, cashier, computer, member, income)) +class logTypes: + information, warning, error, emergency = range(4) Modified: trunk/pykafe/server/server.py =================================================================== --- trunk/pykafe/server/server.py 2007-06-02 09:55:38 UTC (rev 65) +++ trunk/pykafe/server/server.py 2007-06-02 09:56:16 UTC (rev 66) @@ -41,10 +41,11 @@ tcpSocket.disconnectFromHost() class ListenerThread(QtCore.QThread): - def __init__(self, parent, socketDescriptor, clients): + def __init__(self, parent, socketDescriptor, clients, config): QtCore.QThread.__init__(self, parent) self.socketDescriptor = socketDescriptor self.clients = clients + self.config = config def run(self): self.tcpSocket = QtNetwork.QTcpSocket() @@ -64,12 +65,30 @@ client = self.clients[self.clientNumber] data = base64.decodestring(self.tcpSocket.readAll()) print "data:", data - if data[:3] == "004": - #Says I'm here + + if data[:3] == "011": if client.session.state == ClientSession.notConnected: + logger.add(logger.logTypes.information, "client connected", self.config.last_cashier, client.name) + if self.config.filter_enable: + message = "007" + filterFile = open(self.config.filter_file) + filters = filterFile.readlines() + filterFile.close() + for i in filters: + message += i + client.sendMessage(message) self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.working) + message = "016" + message += "%s|%s|%s|%s" % (self.config.price_fixedprice, + self.config.price_fixedpriceminutes, + self.config.price_onehourprice, + self.config.price_rounding) + client.sendMessage(message) else: - #TODO: illegal activity + #client is somehow rebooted + #TODO: send current session information after taking 004 + #message = "013" + #client.sendSession() pass elif data[:3] == "000": #User wants to open @@ -82,16 +101,18 @@ if client.session.state == ClientSession.working: username, password = data[3:].split("|") db = Database() - db.cur.execute("select count() from members where username = ? and password = ?", (username, sha.new(password).hexdigest())) + db.cur.execute("select count() from members where username = ? and password = ?", (username, password)) if db.cur.fetchall()[0][0]: client.sendMessage("0031") + logger.add(logger.logTypes.information, _("member login"), self.config.last_cashier, client.name, username) client.setState(ClientSession.loggedIn, user = username) else: - #TODO: log: wrong password or username entered + logger.add(logger.logTypes.warning, _("Someone entered wrong password or username"), self.config.last_cashier, client.name, username) client.sendMessage("0030") elif data[:3] == "008": client.setState(ClientSession.waitingMoney) self.tcpSocket.disconnectFromHost() + self.terminate() class ClientThread(QtCore.QThread): def __init__(self, parent, config): @@ -144,23 +165,6 @@ def setState(self, state, user = "guest", endTime = ""): if self.session.state == ClientSession.requestedOpening and state != ClientSession.requestedOpening: self.changeColor("white") - if state == ClientSession.working: - if self.session.state == ClientSession.loggedIn: - #TODO: calculate time and money - - #logger.add("logout", "", self.config.cashier, self.name, user, income) - #save detailed session information to logs - pass - if self.session.state == ClientSession.notConnected: - if self.config.filter_enable: - #send filter - message = "007" - filterFile = open(self.config.filter_file) - filters = filterFile.readlines() - filterFile.close() - for i in filters: - message += i - self.sendMessage(message) elif state == ClientSession.loggedIn: self.session.user = user self.setText(2, user) @@ -175,9 +179,13 @@ elif state == ClientSession.waitingMoney: self.changeColor("red") self.session.state = state - self.setText(1, self.session.getCurrentState()) - #print "state is now %s" % self.session.getCurrentState() + self.setText(1, self.session.toString()) + def sendSession(self): + #send latest session to the client + message = "012" + self.sendMessage(message) + class Product(QtGui.QTreeWidgetItem): def __init__(self, parent, productInformation): QtGui.QTreeWidgetItem.__init__(self, parent) @@ -210,11 +218,11 @@ self.config.set("last_cashier", cashier) else: self.cashier = self.config.last_cashier - print "Current cashier is:", self.config.last_cashier + logger.add(logger.logTypes.information, _("cashier login to server"), self.config.last_cashier) if not self.listen(QtNetwork.QHostAddress(QtNetwork.QHostAddress.Any), int(self.config.network_port)): - #TODO: retry button + logger.add(logger.logTypes.error, _("Unable to start server: %s") % self.errorString(), self.config.last_cashier) QtGui.QMessageBox.critical(self.parent(), _("Connection Error"), _("Unable to start server: %s") % self.errorString()) - exit() + self.parent().close() self.clients = [] for clientInformation in self.config.clientList: self.clients.append(Client(ui.main_treeWidget, clientInformation, self.config)) @@ -244,8 +252,7 @@ self.products.append(Product(self.ui.orders_treeWidget_2, product)) def incomingConnection(self, socketDescriptor): - print "connection came" - thread = ListenerThread(self.parent(), socketDescriptor, self.clients) + thread = ListenerThread(self.parent(), socketDescriptor, self.clients, self.config) self.threads.append(thread) QtCore.QObject.connect(thread, QtCore.SIGNAL("stateChange"), self.setClientState) thread.start() Modified: trunk/pykafe/server/session.py =================================================================== --- trunk/pykafe/server/session.py 2007-06-02 09:55:38 UTC (rev 65) +++ trunk/pykafe/server/session.py 2007-06-02 09:56:16 UTC (rev 66) @@ -40,7 +40,7 @@ return True else: return False - def getCurrentState(self): + def toString(self): """returns current state as a string""" if self.state == self.notConnected: return _("Not Connected") Modified: trunk/pykafe/server/settings.py =================================================================== --- trunk/pykafe/server/settings.py 2007-06-02 09:55:38 UTC (rev 65) +++ trunk/pykafe/server/settings.py 2007-06-02 09:56:16 UTC (rev 66) @@ -13,12 +13,19 @@ from PyQt4 import QtGui, QtCore from pysqlite2 import dbapi2 as sqlite from database import Database -import sha +from client import getSiteIP +import sha, socket import locale, gettext locale.setlocale(locale.LC_ALL, "C") _ = gettext.translation("pyKafe_server", fallback=True).ugettext +def getSiteIP(site): + try: + return socket.gethostbyname(site) + except socket.gaierror: + return False + class Cashier(QtGui.QTreeWidgetItem): def __init__(self, parent, cashierInformation): QtGui.QTreeWidgetItem.__init__(self, parent) @@ -49,7 +56,7 @@ def filterAdd(self, text = None, errorDialog = True): if not text: text = self.ui.filter_address.text() - if not text: + if not getSiteIP(text): if errorDialog: QtGui.QMessageBox.critical(self.parent(), _("Error"), _("You didn't enter a valid address")) return This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |