[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.
|