[Pykafe-commits] SF.net SVN: pykafe: [98] trunk/pykafe/client
Status: Pre-Alpha
Brought to you by:
jnmbk
|
From: <jn...@us...> - 2007-06-06 10:11:22
|
Revision: 98
http://pykafe.svn.sourceforge.net/pykafe/?rev=98&view=rev
Author: jnmbk
Date: 2007-06-06 03:11:23 -0700 (Wed, 06 Jun 2007)
Log Message:
-----------
sorry for the huge changes
Modified Paths:
--------------
trunk/pykafe/client/cafeteria.py
trunk/pykafe/client/client.py
trunk/pykafe/client/clientmain.py
trunk/pykafe/client/login.py
trunk/pykafe/client/session.py
Modified: trunk/pykafe/client/cafeteria.py
===================================================================
--- trunk/pykafe/client/cafeteria.py 2007-06-04 22:43:09 UTC (rev 97)
+++ trunk/pykafe/client/cafeteria.py 2007-06-06 10:11:23 UTC (rev 98)
@@ -11,6 +11,7 @@
#
from PyQt4 import QtCore, QtGui
+from currencyformat import currency
import locale, gettext
locale.setlocale(locale.LC_ALL, "C")
@@ -25,13 +26,13 @@
def __init__(self, parent, product, value, quantity):
QtGui.QTreeWidgetItem.__init__(self, parent)
self.setText(0, product)
- self.setText(1, value)
- self.setText(2, quantity)
+ self.setText(1, currency(value))
+ self.setText(2, str(quantity))
def findProductPrice(products, name):
for product in products:
if product.name == name:
- return float(product.value)
+ return float(product.quantity)
class Ui_Dialog(object):
def setupUi(self, Dialog, client):
@@ -130,10 +131,15 @@
for product in client.cafeteriaContents:
self.products.append(Product(product))
self.product.addItem(self.products[-1].name)
+ self.sentOrdersHolder = []
+ for order in client.orders:
+ name, quantity = order.split('|')
+ self.sentOrdersHolder.append(Order(self.sentOrders, name, findProductPrice(self.products, name), quantity))
self.orders = []
+ self.adder = Adder(self)
QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL("accepted()"),Dialog.accept)
QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL("rejected()"),Dialog.reject)
- QtCore.QObject.connect(self.addOrder,QtCore.SIGNAL("clicked()"),self.orderAdd())
+ QtCore.QObject.connect(self.addOrder,QtCore.SIGNAL("clicked()"),self.adder.orderAdd)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
@@ -150,7 +156,10 @@
self.sentOrders.headerItem().setText(2,_("Quantity"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _("Sent Orders"))
+class Adder:
+ def __init__(self, ui):
+ self.ui = ui
def orderAdd(self):
- cost = self.quantity.value() * findProductPrice(self.products, self.product.currentText())
- self.orders.append(Order(self.ordersToSend, self.product.currentText(), cost, self.quantity.value()))
- self.client.temporders.append[self.product.currentText() + '|' + str(self.quantity.value())]
+ cost = self.ui.quantity.value() * findProductPrice(self.ui.products, self.ui.product.currentText())
+ self.ui.orders.append(Order(self.ui.ordersToSend, self.ui.product.currentText(), cost, self.ui.quantity.value()))
+ self.ui.client.temporders.append(self.ui.product.currentText() + '|' + str(self.ui.quantity.value()))
Modified: trunk/pykafe/client/client.py
===================================================================
--- trunk/pykafe/client/client.py 2007-06-04 22:43:09 UTC (rev 97)
+++ trunk/pykafe/client/client.py 2007-06-06 10:11:23 UTC (rev 98)
@@ -73,7 +73,7 @@
transferredBytes = 0
interfaces = os.listdir("/sys/class/net")
for interface in interfaces:
- if file("/sys/class/net/%s/operstate" % interface).read() == "up\n":
+ if file("/sys/class/net/%s/operstate" % interface).read() in ("up\n", "unknown\n"):
receivedBytes += int(file("/sys/class/net/%s/statistics/rx_bytes" % interface).read())
transferredBytes += int(file("/sys/class/net/%s/statistics/tx_bytes" % interface).read())
return receivedBytes, transferredBytes
@@ -101,11 +101,13 @@
data = base64.decodestring(self.tcpSocket.readAll())
print "received from server:", data
if data[:3] == "001":
+ if data[3] == "1":
+ self.client.setState(ClientSession.loggedIn)
sendDataToUi(data)
elif data[:3] == "003":
sendDataToUi(data)
if data[3] == "1":
- self.client.setState(ClientSession.loggedIn)
+ self.client.setState(ClientSession.loggedIn, user = data[4:data.find('|')])
elif data[:3] == "005":
self.client.setState(ClientSession.loggedIn)
sendDataToUi(data)
@@ -125,15 +127,19 @@
print iptablesFile
os.system("iptables-restore < /etc/pyKafe/iptables.conf")
elif data[:3] == "009":
+ received, transferred = getNetworkBytes()
+ sendDataToServer("023" + self.client.session.user + '|' + str(received - self.client.session.receivedBytes) +'|'+ str(transferred - self.client.session.transferredBytes))
os.system("restartkde&")
elif data[:3] == "010":
os.system("init 0")
elif data[:3] == "015":
- if self.client.state == ClientSession.ready:
- sendDataToServer("004")
+ self.client.setState(ClientSession.notReady)
+ sendDataToUi("020")
elif data[:3] == "016":
for c, value in map(lambda x,y:(x,y), ("price_fixedprice", "price_fixedpriceminutes", "price_onehourprice", "price_rounding"), data[3:].split("|")):
config.set(c, value)
+ elif data[:3] == "021":
+ sendDataToUi(data)
def readUi(self):
data = base64.decodestring(self.tcpSocket.readAll())
@@ -141,22 +147,31 @@
if self.client.session.state == ClientSession.notConnected:
sendDataToUi("014")
return
+ if self.client.session.state == ClientSession.waitingMoney:
+ sendDataToUi("012")
+ return
if data[:3] == "000":
sendDataToServer("000")
self.client.setState(ClientSession.requestedOpening)
elif data[:3] == "002":
sendDataToServer(data)
elif data[:3] == "004":
- sendDataToServer("004")
- self.client.setState(ClientSession.ready)
+ if not self.client.session.state == ClientSession.waitingMoney:
+ sendDataToServer("004")
+ self.client.setState(ClientSession.ready)
elif data[:3] == "008":
+ received, transferred = getNetworkBytes()
+ sendDataToServer("023" + self.client.session.user + '|' + str(received - self.client.session.receivedBytes) +'|'+ str(transferred - self.client.session.transferredBytes))
sendDataToServer(data)
os.system("restartkde&")
+ self.client.setState(ClientSession.waitingMoney)
elif data[:3] == "017":
+ if self.client.session.state != ClientSession.loggedIn:
+ return
currentTime = QtCore.QDateTime.currentDateTime()
usedTime = self.client.session.startTime.secsTo(currentTime)
remainingTime = QtCore.QDateTime()
- if self.client.session.endTime:
+ if self.client.session.endTime and currentTime.secsTo(self.client.session.endTime)>0:
remainingTime.setTime_t(currentTime.secsTo(self.client.session.endTime))
else:
remainingTime.setTime_t(0)
@@ -178,6 +193,11 @@
data = tcpSocket.readAll()
self.tcpSocket.write(data)
self.tcpSocket.waitForBytesWritten()
+ elif data[:3] == "019":
+ sendDataToServer(data)
+ elif data[:3] == "022":
+ if self.client.session.user != "guest":
+ sendDataToServer(data)
class PykafeClient(QtNetwork.QTcpServer):
def __init__(self):
@@ -190,6 +210,7 @@
QtCore.QObject.connect(thread, QtCore.SIGNAL("messageSent"), self.initialConnection)
thread.start()
self.threads = [thread]
+ self.login = False
print "trying to connect to server"
def incomingConnection(self, socketDescriptor):
@@ -201,6 +222,7 @@
def initialConnection(self):
print "connected to server"
self.session.setState(ClientSession.notReady)
+ sendDataToUi("020")
def setState(self, state, user = "guest", endTime = ""):
if state == ClientSession.loggedIn:
@@ -208,4 +230,6 @@
self.session.startTime = QtCore.QDateTime.currentDateTime()
if endTime:
self.session.endTime = endTime
+ self.session.receivedBytes, self.session.transferredBytes = getNetworkBytes()
+ print getNetworkBytes()
self.session.setState(state)
Modified: trunk/pykafe/client/clientmain.py
===================================================================
--- trunk/pykafe/client/clientmain.py 2007-06-04 22:43:09 UTC (rev 97)
+++ trunk/pykafe/client/clientmain.py 2007-06-06 10:11:23 UTC (rev 98)
@@ -10,7 +10,7 @@
# Please read the COPYING file.
#
-import sys, base64, socket
+import os, sys, base64, socket
from PyQt4 import QtCore, QtGui, QtNetwork
from config import PykafeConfiguration
import cafeteria
@@ -24,7 +24,7 @@
class SenderThread(QtCore.QThread):
def __init__(self, data):
QtCore.QThread.__init__(self)
- self.data = data
+ self.data = str(data)
def run(self):
tcpSocket = QtNetwork.QTcpSocket()
tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_port)
@@ -56,6 +56,9 @@
else:
text1, text2 = text.split('|',1)
self.emit(QtCore.SIGNAL("updateLabels"), str(text1), str(text2))
+ if data[:3] == "021":
+ wallpaper = os.popen("dcop kdesktop KBackgroundIface currentWallpaper 1").read().strip()
+ self.sendMessage("022" + wallpaper)
class PykafeClientMain(QtNetwork.QTcpServer):
def __init__(self, parent, ui):
@@ -98,14 +101,16 @@
def logout(self):
answer = QtGui.QMessageBox.question(self.parent(), _("Are you sure?"), _("Do you really want to logout?"), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes).__or__(QtGui.QMessageBox.No), QtGui.QMessageBox.No)
if answer == QtGui.QMessageBox.Yes:
+ wallpaper = os.popen("dcop kdesktop KBackgroundIface currentWallpaper 1").read().strip()
+ self.sendMessage("022" + wallpaper)
self.sendMessage("008")
def sendOrders(self):
text = "019"
for order in self.temporders:
- text += order
+ text += order + "||"
self.orders.append(order)
- if len(text)>3:
- self.sendMessage(text)
+ if len(text)>5:
+ self.sendMessage(text[:-2])
class TimerThread(QtCore.QThread):
def run(self):
Modified: trunk/pykafe/client/login.py
===================================================================
--- trunk/pykafe/client/login.py 2007-06-04 22:43:09 UTC (rev 97)
+++ trunk/pykafe/client/login.py 2007-06-06 10:11:23 UTC (rev 98)
@@ -10,7 +10,7 @@
# Please read the COPYING file.
#
-import base64, os, sys, sha, time
+import base64, os, sys, sha
from PyQt4 import QtCore, QtGui, QtNetwork
from config import PykafeConfiguration
@@ -19,10 +19,11 @@
_ = gettext.translation("pyKafe_client", fallback=True).ugettext
config = PykafeConfiguration()
+timeOut = 5000
class SenderThread(QtCore.QThread):
- def __init__(self, parent, data, retry = False):
- QtCore.QThread.__init__(self, parent)
+ def __init__(self, data, retry = False):
+ QtCore.QThread.__init__(self)
self.data = data
self.retry = retry
def run(self):
@@ -31,7 +32,7 @@
while not tcpSocket.waitForConnected(-1) and self.retry:
self.emit(QtCore.SIGNAL("connectionError()"))
print "trying to reconnect in 5 seconds"
- time.sleep(5)
+ self.sleep(5)
tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_port)
if tcpSocket.write(base64.encodestring(self.data)) == -1:
print "couldn't send:", self.data
@@ -55,16 +56,28 @@
if data[3] == "1":
self.login()
elif data[3] == "0":
- self.emit(QtCore.SIGNAL("message"), _("Server didn't give acknowledge"))
+ self.emit(QtCore.SIGNAL("message"), _("Server didn't give acknowledge"), timeOut)
elif data[:3] == "003":
if data[3] == "1":
+ wallpaper = data.split('|')[1]
+ if wallpaper:
+ os.system("dcop kdesktop KBackgroundIface setWallpaper %s 8" % wallpaper)
self.login()
else:
- self.emit(QtCore.SIGNAL("message"), _("Wrong username or password"))
+ self.emit(QtCore.SIGNAL("message"), _("Wrong username or password"), timeOut)
elif data[:3] == "005":
self.login()
+ elif data[:3] == "012":
+ self.emit(QtCore.SIGNAL("message"), _("Previous customer didn't make payment"))
elif data[:3] == "014":
- self.emit(QtCore.SIGNAL("message"), _("Can't connect to server"))
+ self.emit(QtCore.SIGNAL("message"), _("Can't connect to server"), timeOut)
+ self.sleep(5)
+ thread = SenderThread("004")
+ thread.start()
+ elif data[:3] == "020":
+ thread=SenderThread("004")
+ thread.start()
+ self.emit(QtCore.SIGNAL("message"),"")
self.tcpSocket.disconnectFromHost()
self.exec_()
def login(self):
@@ -80,7 +93,7 @@
print "Can't bind port %d" % config.network_localPort
sys.exit()
print "listening localhost on port:", config.network_localPort
- thread = SenderThread(self.parent(), "004", retry = True)
+ thread = SenderThread("004", retry = True)
QtCore.QObject.connect(thread, QtCore.SIGNAL("connectionError()"), self.connectionError)
thread.start()
self.threads = [thread]
@@ -92,17 +105,18 @@
self.threads.append(thread)
print "login has %d threads" % len(self.threads)
def login(self):
- thread = SenderThread(self.parent(), "002" + unicode(self.ui.username.text()) + "|" + sha.new(unicode(self.ui.password.text())).hexdigest())
+ thread = SenderThread("002" + unicode(self.ui.username.text()) + "|" + sha.new(unicode(self.ui.password.text())).hexdigest())
QtCore.QObject.connect(thread, QtCore.SIGNAL("connectionError()"), self.connectionError)
thread.start()
self.threads.append(thread)
def request(self):
- thread = SenderThread(self.parent(), "000")
+ thread = SenderThread("000")
QtCore.QObject.connect(thread, QtCore.SIGNAL("connectionError()"), self.connectionError)
thread.start()
+ self.ui.statusbar.showMessage(_("Sent opening request to server"), timeOut)
self.threads.append(thread)
def connectionError(self):
- self.ui.statusbar.showMessage(_("Can't connect to local daemon, please contact cashier"))
+ self.ui.statusbar.showMessage(_("Can't connect to local daemon, please contact cashier"), timeOut)
class Ui_LoginWindow(object):
def setupUi(self, MainWindow):
Modified: trunk/pykafe/client/session.py
===================================================================
--- trunk/pykafe/client/session.py 2007-06-04 22:43:09 UTC (rev 97)
+++ trunk/pykafe/client/session.py 2007-06-06 10:11:23 UTC (rev 98)
@@ -26,6 +26,8 @@
self.startTime = None
self.endTime = None
self.orders = []
+ self.receivedBytes = 0
+ self.transferredBytes = 0
def calculatePrice(self, config):
time = self.startTime.secsTo(QtCore.QDateTime.currentDateTime())
@@ -35,6 +37,11 @@
#TODO: round the price using price_rounding
price = float(config.price_onehourprice)/3600 * time
return price
+ def calculateTotal(self, config):
+ total = self.calculatePrice(config)
+ for i in self.orders:
+ total += i
+ return total
def toString(self):
"""returns current state as a string"""
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|