pykafe-commits Mailing List for pyKafe (Page 3)
Status: Pre-Alpha
Brought to you by:
jnmbk
You can subscribe to this list here.
| 2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(78) |
Jul
(8) |
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2008 |
Jan
(11) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <jn...@us...> - 2007-06-10 05:32:38
|
Revision: 106
http://pykafe.svn.sourceforge.net/pykafe/?rev=106&view=rev
Author: jnmbk
Date: 2007-06-09 22:32:38 -0700 (Sat, 09 Jun 2007)
Log Message:
-----------
changes for my new test environment
Modified Paths:
--------------
trunk/pykafe/client/config.py
trunk/pykafe/client/login.py
Modified: trunk/pykafe/client/config.py
===================================================================
--- trunk/pykafe/client/config.py 2007-06-10 05:31:44 UTC (rev 105)
+++ trunk/pykafe/client/config.py 2007-06-10 05:32:38 UTC (rev 106)
@@ -12,7 +12,7 @@
#TODO: Read config from config file
class PykafeConfiguration:
- network_serverIP = "192.168.2.6"
+ network_serverIP = "192.168.2.2"
network_port = 23105
network_localPort = 23106
Modified: trunk/pykafe/client/login.py
===================================================================
--- trunk/pykafe/client/login.py 2007-06-10 05:31:44 UTC (rev 105)
+++ trunk/pykafe/client/login.py 2007-06-10 05:32:38 UTC (rev 106)
@@ -81,7 +81,7 @@
self.tcpSocket.disconnectFromHost()
self.exec_()
def login(self):
- os.system("pyKafeclient&")
+ os.system("pykafeclient&")
self.emit(QtCore.SIGNAL("close"))
class PykafeClient(QtNetwork.QTcpServer):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-10 05:31:43
|
Revision: 105
http://pykafe.svn.sourceforge.net/pykafe/?rev=105&view=rev
Author: jnmbk
Date: 2007-06-09 22:31:44 -0700 (Sat, 09 Jun 2007)
Log Message:
-----------
stop complaining for now
Modified Paths:
--------------
trunk/pykafe/server/server.py
Modified: trunk/pykafe/server/server.py
===================================================================
--- trunk/pykafe/server/server.py 2007-06-10 04:32:58 UTC (rev 104)
+++ trunk/pykafe/server/server.py 2007-06-10 05:31:44 UTC (rev 105)
@@ -252,9 +252,10 @@
member.debt -= total
Database().runOnce("update members set debt=? where username=?", (member.debt, member.userName))
else:
- logger.add(logger.logTypes.information, _("Money paid"), self.name, member.userName, total)
- Database().runOnce("insert into safe values(?,?,?)", (QtCore.QDateTime.currentDateTime().toTime_t(), self.config.last_cashier, total))
+ #logger.add(logger.logTypes.information, _("Money paid"), self.name, member.userName, total)
+ #Database().runOnce("insert into safe values(?,?,?)", (QtCore.QDateTime.currentDateTime().toTime_t(), self.config.last_cashier, total))
#logger.add(logger.logTypes.information, _("money paid"), self.name, self.session.user, self.session.calculateTotal()
+ pass
if self.session.state == ClientSession.loggedIn:
total = self.session.calculateTotal(self.config)
payingType, credit = Database().runOnce("select paying_type, debt from members where username=?",(self.session.user,))[0]
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-10 04:32:56
|
Revision: 104
http://pykafe.svn.sourceforge.net/pykafe/?rev=104&view=rev
Author: jnmbk
Date: 2007-06-09 21:32:58 -0700 (Sat, 09 Jun 2007)
Log Message:
-----------
fix the nasty bug
Modified Paths:
--------------
trunk/pykafe/client/clientmain.py
Modified: trunk/pykafe/client/clientmain.py
===================================================================
--- trunk/pykafe/client/clientmain.py 2007-06-09 18:31:50 UTC (rev 103)
+++ trunk/pykafe/client/clientmain.py 2007-06-10 04:32:58 UTC (rev 104)
@@ -113,7 +113,7 @@
def run(self):
while True:
tcpSocket = QtNetwork.QTcpSocket()
- tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_localPort)
+ tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_port)
tcpSocket.write(base64.encodestring("017"))
tcpSocket.waitForBytesWritten()
tcpSocket.disconnectFromHost()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-09 18:31:48
|
Revision: 103
http://pykafe.svn.sourceforge.net/pykafe/?rev=103&view=rev
Author: jnmbk
Date: 2007-06-09 11:31:50 -0700 (Sat, 09 Jun 2007)
Log Message:
-----------
ip validator
Modified Paths:
--------------
trunk/pykafe/server/server.py
Modified: trunk/pykafe/server/server.py
===================================================================
--- trunk/pykafe/server/server.py 2007-06-09 17:52:27 UTC (rev 102)
+++ trunk/pykafe/server/server.py 2007-06-09 18:31:50 UTC (rev 103)
@@ -29,6 +29,19 @@
_ = gettext.translation("pyKafe_server", fallback=True).ugettext
+def validIp(ip):
+ "returns true when you give it a valid ip"
+ try:
+ is_ip = True
+ num = ip.split('.')
+ for n in num:
+ if not 256 > int(n) > 0:
+ is_ip = False
+ break;
+ return is_ip
+ except ValueError:
+ return False
+
class MessageSender(QtCore.QThread):
def __init__(self, ip, port, message):
QtCore.QThread.__init__(self)
@@ -708,6 +721,9 @@
def changeClient(self):
client = self.ui.main_treeWidget.currentItem()
+ if not validIp(unicode(self.clientSettingsUi.clientIP.text())):
+ QtGui.QMessageBox.critical(self.parent(), _("Error"), _("Invalid ip address"))
+ return
client.updateInformation(self.parent(), unicode(self.clientSettingsUi.clientID.text()), self.clientSettingsUi.clientIP.text())
def addClient(self):
@@ -716,6 +732,9 @@
def clientAdder(self):
name = unicode(self.clientSettingsUi.clientID.text())
ip = unicode(self.clientSettingsUi.clientIP.text())
+ if not validIp(ip):
+ QtGui.QMessageBox.critical(self.parent(), _("Error"), _("Invalid ip address"))
+ return
try:
Database().runOnce("insert into computers(ip,name) values(?,?)", (ip, name))
info = ClientInformation(ip, name)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-09 17:52:51
|
Revision: 102
http://pykafe.svn.sourceforge.net/pykafe/?rev=102&view=rev
Author: jnmbk
Date: 2007-06-09 10:52:27 -0700 (Sat, 09 Jun 2007)
Log Message:
-----------
I'll try this tomorrow
Modified Paths:
--------------
trunk/pykafe/client/clientmain.py
Modified: trunk/pykafe/client/clientmain.py
===================================================================
--- trunk/pykafe/client/clientmain.py 2007-06-09 12:14:23 UTC (rev 101)
+++ trunk/pykafe/client/clientmain.py 2007-06-09 17:52:27 UTC (rev 102)
@@ -44,21 +44,18 @@
self.tcpSocket.setSocketDescriptor(self.socketDescriptor)
print "connection request from:", self.tcpSocket.peerAddress().toString()
QtCore.QObject.connect(self.tcpSocket, QtCore.SIGNAL("readyRead()"), self.readRoot)
- self.tcpSocket.waitForDisconnected()
self.exec_()
def readRoot(self):
data = base64.decodestring(self.tcpSocket.readAll())
print "received:", data
if data[:3] == "017":
text = data[3:]
- if not text:
- print "couldn't read"
- else:
- text1, text2 = text.split('|',1)
- self.emit(QtCore.SIGNAL("updateLabels"), str(text1), str(text2))
+ 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)
+ self.tcpSocket.disconnectFromHost()
class PykafeClientMain(QtNetwork.QTcpServer):
def __init__(self, parent, ui):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-09 12:14:22
|
Revision: 101
http://pykafe.svn.sourceforge.net/pykafe/?rev=101&view=rev
Author: jnmbk
Date: 2007-06-09 05:14:23 -0700 (Sat, 09 Jun 2007)
Log Message:
-----------
hopefully fix time
Modified Paths:
--------------
trunk/pykafe/client/clientmain.py
Modified: trunk/pykafe/client/clientmain.py
===================================================================
--- trunk/pykafe/client/clientmain.py 2007-06-07 14:56:17 UTC (rev 100)
+++ trunk/pykafe/client/clientmain.py 2007-06-09 12:14:23 UTC (rev 101)
@@ -10,7 +10,7 @@
# Please read the COPYING file.
#
-import os, sys, base64, socket
+import os, sys, base64
from PyQt4 import QtCore, QtGui, QtNetwork
from config import PykafeConfiguration
import cafeteria
@@ -115,11 +115,11 @@
class TimerThread(QtCore.QThread):
def run(self):
while True:
- #self.emit(QtCore.SIGNAL("updateLabels"), "sadasf","retr")
- tcpSocket = socket.socket()
- tcpSocket.connect(("",config.network_port))
- tcpSocket.send(base64.encodestring("017"))
- tcpSocket.close()
+ tcpSocket = QtNetwork.QTcpSocket()
+ tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_localPort)
+ tcpSocket.write(base64.encodestring("017"))
+ tcpSocket.waitForBytesWritten()
+ tcpSocket.disconnectFromHost()
self.sleep(60)
class Ui_MainWindow(object):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-07 14:56:15
|
Revision: 100
http://pykafe.svn.sourceforge.net/pykafe/?rev=100&view=rev
Author: jnmbk
Date: 2007-06-07 07:56:17 -0700 (Thu, 07 Jun 2007)
Log Message:
-----------
initialize timeedits, fix an error
Modified Paths:
--------------
trunk/pykafe/server/cashierreports.py
Modified: trunk/pykafe/server/cashierreports.py
===================================================================
--- trunk/pykafe/server/cashierreports.py 2007-06-06 10:17:41 UTC (rev 99)
+++ trunk/pykafe/server/cashierreports.py 2007-06-07 14:56:17 UTC (rev 100)
@@ -21,11 +21,14 @@
def __init__(self, ui, cashier):
self.ui = ui
self.cashierName = cashier
+ self.ui.dateTimeEdit.setDateTime(QtCore.QDateTime.currentDateTime().addDays(-7))
+ self.ui.dateTimeEdit_2.setDateTime(QtCore.QDateTime.currentDateTime().addDays(1))
+ self.search()
def search(self):
startDate = self.ui.dateTimeEdit.dateTime().toTime_t()
endDate = self.ui.dateTimeEdit_2.dateTime().toTime_t()
income = Database().runOnce("select sum(income) from safe where cashier=? and date between ? and ?", (self.cashierName, startDate, endDate))[0][0]
- self.ui.doubleSpinBox.setValue(income)
+ if income: self.ui.doubleSpinBox.setValue(float(income))
added = Database().runOnce("select count() from logs where log_value=? and cashier=? and date between ? and ?", (_("Added member"), self.cashierName, startDate, endDate))[0][0]
deleted = Database().runOnce("select count() from logs where log_value=? and cashier=? and date between ? and ?", (_("Deleted member"), self.cashierName, startDate, endDate))[0][0]
self.ui.spinBox.setValue(added)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-06 10:17:39
|
Revision: 99
http://pykafe.svn.sourceforge.net/pykafe/?rev=99&view=rev
Author: jnmbk
Date: 2007-06-06 03:17:41 -0700 (Wed, 06 Jun 2007)
Log Message:
-----------
lots of more codes
Modified Paths:
--------------
trunk/pykafe/server/config.py
trunk/pykafe/server/mainwindow.py
trunk/pykafe/server/mainwindow.ui
trunk/pykafe/server/server.py
trunk/pykafe/server/session.py
trunk/pykafe/server/settings.py
trunk/pykafe/server/settingswindow.py
trunk/pykafe/server/settingswindow.ui
Added Paths:
-----------
trunk/pykafe/server/cashierreports.py
trunk/pykafe/server/cashierreports.ui
trunk/pykafe/server/clientsettingswindow.py
trunk/pykafe/server/clientsettingswindow.ui
Added: trunk/pykafe/server/cashierreports.py
===================================================================
--- trunk/pykafe/server/cashierreports.py (rev 0)
+++ trunk/pykafe/server/cashierreports.py 2007-06-06 10:17:41 UTC (rev 99)
@@ -0,0 +1,112 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2007, pyKafe Development Team
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2 of the License, or (at your option)
+# any later version.
+#
+# Please read the COPYING file.
+#
+
+from PyQt4 import QtCore, QtGui
+from database import Database
+
+import locale, gettext
+locale.setlocale(locale.LC_ALL, "C")
+_ = gettext.translation("pyKafe_server", fallback=True).ugettext
+
+class Handler:
+ def __init__(self, ui, cashier):
+ self.ui = ui
+ self.cashierName = cashier
+ def search(self):
+ startDate = self.ui.dateTimeEdit.dateTime().toTime_t()
+ endDate = self.ui.dateTimeEdit_2.dateTime().toTime_t()
+ income = Database().runOnce("select sum(income) from safe where cashier=? and date between ? and ?", (self.cashierName, startDate, endDate))[0][0]
+ self.ui.doubleSpinBox.setValue(income)
+ added = Database().runOnce("select count() from logs where log_value=? and cashier=? and date between ? and ?", (_("Added member"), self.cashierName, startDate, endDate))[0][0]
+ deleted = Database().runOnce("select count() from logs where log_value=? and cashier=? and date between ? and ?", (_("Deleted member"), self.cashierName, startDate, endDate))[0][0]
+ self.ui.spinBox.setValue(added)
+ self.ui.spinBox_2.setValue(deleted)
+
+class Ui_CashierReports(object):
+ def setupUi(self, CashierReports, cashier):
+ CashierReports.setObjectName("CashierReports")
+ CashierReports.resize(QtCore.QSize(QtCore.QRect(0,0,266,239).size()).expandedTo(CashierReports.minimumSizeHint()))
+ CashierReports.setWindowIcon(QtGui.QIcon("../../data/icons/pyKafe.png"))
+
+ self.gridlayout = QtGui.QGridLayout(CashierReports)
+ self.gridlayout.setMargin(9)
+ self.gridlayout.setSpacing(6)
+ self.gridlayout.setObjectName("gridlayout")
+
+ self.doubleSpinBox = QtGui.QDoubleSpinBox(CashierReports)
+ self.doubleSpinBox.setEnabled(False)
+ self.doubleSpinBox.setObjectName("doubleSpinBox")
+ self.gridlayout.addWidget(self.doubleSpinBox,1,1,1,2)
+
+ self.label = QtGui.QLabel(CashierReports)
+ self.label.setObjectName("label")
+ self.gridlayout.addWidget(self.label,1,0,1,1)
+
+ self.gridlayout1 = QtGui.QGridLayout()
+ self.gridlayout1.setMargin(0)
+ self.gridlayout1.setSpacing(6)
+ self.gridlayout1.setObjectName("gridlayout1")
+
+ self.dateTimeEdit_2 = QtGui.QDateTimeEdit(CashierReports)
+ self.dateTimeEdit_2.setObjectName("dateTimeEdit_2")
+ self.gridlayout1.addWidget(self.dateTimeEdit_2,1,0,1,1)
+
+ self.toolButton = QtGui.QToolButton(CashierReports)
+ self.toolButton.setIcon(QtGui.QIcon("../../data/icons/find.png"))
+ self.toolButton.setIconSize(QtCore.QSize(64,64))
+ self.toolButton.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
+ self.toolButton.setObjectName("toolButton")
+ self.gridlayout1.addWidget(self.toolButton,0,1,2,1)
+
+ self.dateTimeEdit = QtGui.QDateTimeEdit(CashierReports)
+ self.dateTimeEdit.setObjectName("dateTimeEdit")
+ self.gridlayout1.addWidget(self.dateTimeEdit,0,0,1,1)
+ self.gridlayout.addLayout(self.gridlayout1,0,0,1,3)
+
+ self.spinBox = QtGui.QSpinBox(CashierReports)
+ self.spinBox.setEnabled(False)
+ self.spinBox.setObjectName("spinBox")
+ self.gridlayout.addWidget(self.spinBox,2,2,1,1)
+
+ self.spinBox_2 = QtGui.QSpinBox(CashierReports)
+ self.spinBox_2.setEnabled(False)
+ self.spinBox_2.setObjectName("spinBox_2")
+ self.gridlayout.addWidget(self.spinBox_2,3,2,1,1)
+
+ self.label_3 = QtGui.QLabel(CashierReports)
+ self.label_3.setObjectName("label_3")
+ self.gridlayout.addWidget(self.label_3,3,0,1,2)
+
+ self.label_2 = QtGui.QLabel(CashierReports)
+ self.label_2.setObjectName("label_2")
+ self.gridlayout.addWidget(self.label_2,2,0,1,1)
+
+ self.buttonBox = QtGui.QDialogButtonBox(CashierReports)
+ self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
+ self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.NoButton|QtGui.QDialogButtonBox.Ok)
+ self.buttonBox.setObjectName("buttonBox")
+ self.gridlayout.addWidget(self.buttonBox,4,0,1,3)
+
+ self.retranslateUi(CashierReports)
+ self.handler = Handler(self, cashier)
+ QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL("accepted()"),CashierReports.accept)
+ QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL("rejected()"),CashierReports.reject)
+ QtCore.QObject.connect(self.toolButton,QtCore.SIGNAL("clicked()"),self.handler.search)
+ QtCore.QMetaObject.connectSlotsByName(CashierReports)
+
+ def retranslateUi(self, CashierReports):
+ CashierReports.setWindowTitle(QtGui.QApplication.translate("CashierReports", "Cashier Reports", None, QtGui.QApplication.UnicodeUTF8))
+ self.label.setText(QtGui.QApplication.translate("CashierReports", "Income:", None, QtGui.QApplication.UnicodeUTF8))
+ self.toolButton.setText(QtGui.QApplication.translate("CashierReports", "Find", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_3.setText(QtGui.QApplication.translate("CashierReports", "Members deleted:", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_2.setText(QtGui.QApplication.translate("CashierReports", "Members added:", None, QtGui.QApplication.UnicodeUTF8))
+
Added: trunk/pykafe/server/cashierreports.ui
===================================================================
--- trunk/pykafe/server/cashierreports.ui (rev 0)
+++ trunk/pykafe/server/cashierreports.ui 2007-06-06 10:17:41 UTC (rev 99)
@@ -0,0 +1,165 @@
+<ui version="4.0" >
+ <class>CashierReports</class>
+ <widget class="QDialog" name="CashierReports" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>266</width>
+ <height>239</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>Cashier Reports</string>
+ </property>
+ <property name="windowIcon" >
+ <iconset>../../data/icons/pyKafe.png</iconset>
+ </property>
+ <layout class="QGridLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item row="1" column="1" colspan="2" >
+ <widget class="QDoubleSpinBox" name="doubleSpinBox" >
+ <property name="enabled" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" >
+ <widget class="QLabel" name="label" >
+ <property name="text" >
+ <string>Income:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0" colspan="3" >
+ <layout class="QGridLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item row="1" column="0" >
+ <widget class="QDateTimeEdit" name="dateTimeEdit_2" />
+ </item>
+ <item rowspan="2" row="0" column="1" >
+ <widget class="QToolButton" name="toolButton" >
+ <property name="text" >
+ <string>Find</string>
+ </property>
+ <property name="icon" >
+ <iconset>../../data/icons/find.png</iconset>
+ </property>
+ <property name="iconSize" >
+ <size>
+ <width>64</width>
+ <height>64</height>
+ </size>
+ </property>
+ <property name="toolButtonStyle" >
+ <enum>Qt::ToolButtonTextUnderIcon</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0" >
+ <widget class="QDateTimeEdit" name="dateTimeEdit" />
+ </item>
+ </layout>
+ </item>
+ <item row="2" column="2" >
+ <widget class="QSpinBox" name="spinBox" >
+ <property name="enabled" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="2" >
+ <widget class="QSpinBox" name="spinBox_2" >
+ <property name="enabled" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="2" >
+ <widget class="QLabel" name="label_3" >
+ <property name="text" >
+ <string>Members deleted:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" >
+ <widget class="QLabel" name="label_2" >
+ <property name="text" >
+ <string>Members added:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0" colspan="3" >
+ <widget class="QDialogButtonBox" name="buttonBox" >
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons" >
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>CashierReports</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>CashierReports</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>toolButton</sender>
+ <signal>clicked()</signal>
+ <receiver>CashierReports</receiver>
+ <slot>close()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>218</x>
+ <y>56</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>132</x>
+ <y>119</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
Added: trunk/pykafe/server/clientsettingswindow.py
===================================================================
--- trunk/pykafe/server/clientsettingswindow.py (rev 0)
+++ trunk/pykafe/server/clientsettingswindow.py 2007-06-06 10:17:41 UTC (rev 99)
@@ -0,0 +1,67 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2007, pyKafe Development Team
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2 of the License, or (at your option)
+# any later version.
+#
+# Please read the COPYING file.
+#
+
+from PyQt4 import QtCore, QtGui
+
+import locale, gettext
+locale.setlocale(locale.LC_ALL, "C")
+_ = gettext.translation("pyKafe_server", fallback=True).ugettext
+
+class Ui_ClientSettingsWindow(object):
+ def setupUi(self, ClientSettingsWindow, client):
+ ClientSettingsWindow.setObjectName("ClientSettingsWindow")
+ ClientSettingsWindow.setWindowModality(QtCore.Qt.WindowModal)
+ ClientSettingsWindow.resize(QtCore.QSize(QtCore.QRect(0,0,334,107).size()).expandedTo(ClientSettingsWindow.minimumSizeHint()))
+ ClientSettingsWindow.setWindowIcon(QtGui.QIcon("../../data/icons/kcontrol.png"))
+
+ self.gridlayout = QtGui.QGridLayout(ClientSettingsWindow)
+ self.gridlayout.setMargin(9)
+ self.gridlayout.setSpacing(6)
+ self.gridlayout.setObjectName("gridlayout")
+
+ self.label = QtGui.QLabel(ClientSettingsWindow)
+ self.label.setObjectName("label")
+ self.gridlayout.addWidget(self.label,0,0,1,1)
+
+ self.label_2 = QtGui.QLabel(ClientSettingsWindow)
+ self.label_2.setObjectName("label_2")
+ self.gridlayout.addWidget(self.label_2,1,0,1,1)
+
+ self.clientIP = QtGui.QLineEdit(ClientSettingsWindow)
+ self.clientIP.setObjectName("clientIP")
+ self.clientIP.setInputMask("000.000.000.000;_")
+ self.gridlayout.addWidget(self.clientIP,1,1,1,1)
+
+ self.clientID = QtGui.QLineEdit(ClientSettingsWindow)
+ self.clientID.setObjectName("clientID")
+ self.gridlayout.addWidget(self.clientID,0,1,1,1)
+
+ self.buttonBox = QtGui.QDialogButtonBox(ClientSettingsWindow)
+ self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
+ self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.NoButton|QtGui.QDialogButtonBox.Ok)
+ self.buttonBox.setObjectName("buttonBox")
+ self.gridlayout.addWidget(self.buttonBox,2,0,1,2)
+
+ self.retranslateUi(ClientSettingsWindow)
+ if client:
+ self.clientID.setText(client.name)
+ self.clientIP.setText(client.ip)
+ QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL("accepted()"),ClientSettingsWindow.accept)
+ QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL("rejected()"),ClientSettingsWindow.reject)
+ QtCore.QMetaObject.connectSlotsByName(ClientSettingsWindow)
+ ClientSettingsWindow.setTabOrder(self.clientID,self.clientIP)
+ ClientSettingsWindow.setTabOrder(self.clientIP,self.buttonBox)
+
+ def retranslateUi(self, ClientSettingsWindow):
+ ClientSettingsWindow.setWindowTitle(_("Client Settings"))
+ self.label.setText(_("Client ID:"))
+ self.label_2.setText(_("Client IP:"))
Added: trunk/pykafe/server/clientsettingswindow.ui
===================================================================
--- trunk/pykafe/server/clientsettingswindow.ui (rev 0)
+++ trunk/pykafe/server/clientsettingswindow.ui 2007-06-06 10:17:41 UTC (rev 99)
@@ -0,0 +1,100 @@
+<ui version="4.0" >
+ <class>ClientSettingsWindow</class>
+ <widget class="QDialog" name="ClientSettingsWindow" >
+ <property name="windowModality" >
+ <enum>Qt::WindowModal</enum>
+ </property>
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>334</width>
+ <height>107</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>Client Settings</string>
+ </property>
+ <property name="windowIcon" >
+ <iconset>../../data/icons/kcontrol.png</iconset>
+ </property>
+ <layout class="QGridLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item row="0" column="0" >
+ <widget class="QLabel" name="label" >
+ <property name="text" >
+ <string>Client ID:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" >
+ <widget class="QLabel" name="label_2" >
+ <property name="text" >
+ <string>Client IP:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" >
+ <widget class="QLineEdit" name="clientIP" />
+ </item>
+ <item row="0" column="1" >
+ <widget class="QLineEdit" name="clientID" />
+ </item>
+ <item row="2" column="0" colspan="2" >
+ <widget class="QDialogButtonBox" name="buttonBox" >
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons" >
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <tabstops>
+ <tabstop>clientID</tabstop>
+ <tabstop>clientIP</tabstop>
+ <tabstop>buttonBox</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>ClientSettingsWindow</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>ClientSettingsWindow</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
Modified: trunk/pykafe/server/config.py
===================================================================
--- trunk/pykafe/server/config.py 2007-06-06 10:11:23 UTC (rev 98)
+++ trunk/pykafe/server/config.py 2007-06-06 10:17:41 UTC (rev 99)
@@ -26,9 +26,11 @@
settings = Database().runOnce("select * from general_settings")
for config, value in settings:
setattr(self, config, value)
- clientList = [ClientInformation("192.168.2.3", "computer1"),
- ClientInformation("192.168.2.4", "computer2"),
- ClientInformation("192.168.2.5", "computer3")]
+ self.clientList=[]
+ clients = Database().runOnce("select ip, name from computers")
+ for client in clients:
+ self.clientList.append(ClientInformation(client[0], client[1]))
+
def set(self, config, value):
"sets given configuration as given value writes to database, this doesn't do anything if there's not a real change"
if getattr(self, config) == value:
Modified: trunk/pykafe/server/mainwindow.py
===================================================================
--- trunk/pykafe/server/mainwindow.py 2007-06-06 10:11:23 UTC (rev 98)
+++ trunk/pykafe/server/mainwindow.py 2007-06-06 10:17:41 UTC (rev 99)
@@ -20,8 +20,8 @@
def setupUi(self, MainWindow, cashier = None):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(QtCore.QSize(QtCore.QRect(0,0,650,500).size()).expandedTo(MainWindow.minimumSizeHint()))
- icon = QtGui.QIcon("../../data/icons/pyKafe.png")
- MainWindow.setWindowIcon(icon)
+ self.pyKafeIcon = QtGui.QIcon("../../data/icons/pyKafe.png")
+ MainWindow.setWindowIcon(self.pyKafeIcon)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
@@ -280,7 +280,6 @@
self.vboxlayout.setObjectName("vboxlayout")
self.members_treeWidget = QtGui.QTreeWidget(self.layoutWidget)
- self.members_treeWidget.setAlternatingRowColors(True)
self.members_treeWidget.setRootIsDecorated(False)
self.members_treeWidget.setSortingEnabled(True)
self.members_treeWidget.setObjectName("members_treeWidget")
@@ -470,6 +469,7 @@
self.logs_treeWidget = QtGui.QTreeWidget(self.tab_3)
self.logs_treeWidget.setObjectName("logs_treeWidget")
+ self.logs_treeWidget.setRootIsDecorated(False)
self.gridlayout11.addWidget(self.logs_treeWidget,1,0,1,3)
self.tabWidget.addTab(self.tab_3,"")
self.gridlayout.addWidget(self.tabWidget,0,0,1,1)
@@ -537,10 +537,10 @@
QtCore.QObject.connect(self.main_stopButton,QtCore.SIGNAL("clicked()"),self.server.stopClient)
QtCore.QObject.connect(self.actionExit,QtCore.SIGNAL("activated()"),MainWindow.close)
QtCore.QObject.connect(self.main_startTimeButton,QtCore.SIGNAL("clicked()"),self.server.startTimed)
- QtCore.QObject.connect(self.orders_addButton_1,QtCore.SIGNAL("clicked()"),MainWindow.close)
- QtCore.QObject.connect(self.orders_updateButton_1,QtCore.SIGNAL("clicked()"),MainWindow.close)
- QtCore.QObject.connect(self.orders_deleteButton_1,QtCore.SIGNAL("clicked()"),MainWindow.close)
- QtCore.QObject.connect(self.orders_cancelButton_1,QtCore.SIGNAL("clicked()"),MainWindow.close)
+ QtCore.QObject.connect(self.orders_addButton_1,QtCore.SIGNAL("clicked()"),self.server.orderAdd)
+ QtCore.QObject.connect(self.orders_updateButton_1,QtCore.SIGNAL("clicked()"),self.server.orderUpdate)
+ QtCore.QObject.connect(self.orders_deleteButton_1,QtCore.SIGNAL("clicked()"),self.server.orderDelete)
+ QtCore.QObject.connect(self.orders_cancelButton_1,QtCore.SIGNAL("clicked()"),self.server.orderCancel)
QtCore.QObject.connect(self.orders_addButton_2,QtCore.SIGNAL("clicked()"),self.server.addProduct)
QtCore.QObject.connect(self.orders_updateButton_2,QtCore.SIGNAL("clicked()"),self.server.updateProduct)
QtCore.QObject.connect(self.orders_deleteButton_2,QtCore.SIGNAL("clicked()"),self.server.deleteProduct)
@@ -557,9 +557,11 @@
QtCore.QObject.connect(self.members_filter,QtCore.SIGNAL("textChanged(QString)"),self.server.filterMembers)
QtCore.QObject.connect(self.actionAbout_pyKafe,QtCore.SIGNAL("activated()"),self.server.about)
QtCore.QObject.connect(self.actionAbout_Qt,QtCore.SIGNAL("activated()"),self.server.aboutQt)
- QtCore.QObject.connect(self.orders_treeWidget_1,QtCore.SIGNAL("currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)"),MainWindow.close)
+ QtCore.QObject.connect(self.orders_treeWidget_1,QtCore.SIGNAL("currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)"),self.server.orderChanged)
QtCore.QObject.connect(self.orders_treeWidget_2,QtCore.SIGNAL("currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)"),self.server.productChanged)
QtCore.QObject.connect(self.actionSettings,QtCore.SIGNAL("activated()"),self.server.settings)
+ QtCore.QObject.connect(self.actionComputer,QtCore.SIGNAL("activated()"),self.server.addClient)
+ QtCore.QObject.connect(self.logs_searchButton,QtCore.SIGNAL("clicked()"),self.server.refreshLogs)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
MainWindow.setTabOrder(self.tabWidget,self.main_startButton)
MainWindow.setTabOrder(self.main_startButton,self.main_startTimeButton)
@@ -628,7 +630,7 @@
self.label_8.setText(_("Item"))
self.label_7.setText(_("Computer ID"))
self.label_9.setText(_("Quantity"))
- self.orders_treeWidget_1.headerItem().setText(0,_("ID"))
+ self.orders_treeWidget_1.headerItem().setText(0,_("Computer Name"))
self.orders_treeWidget_1.headerItem().setText(1,_("Item"))
self.orders_treeWidget_1.headerItem().setText(2,_("Cost"))
self.orders_treeWidget_1.headerItem().setText(3,_("Quantity"))
@@ -638,7 +640,7 @@
self.orders_addButton_1.setText(_("Add"))
self.groupBox_3.setTitle(_("Cafeteria Stocks"))
self.orders_treeWidget_2.headerItem().setText(0,_("Item"))
- self.orders_treeWidget_2.headerItem().setText(1,_("Cost"))
+ self.orders_treeWidget_2.headerItem().setText(1,_("Price"))
self.orders_treeWidget_2.headerItem().setText(2,_("Quantity"))
self.label_6.setText(_("Quantity"))
self.label_5.setText(_("Price"))
Modified: trunk/pykafe/server/mainwindow.ui
===================================================================
--- trunk/pykafe/server/mainwindow.ui 2007-06-06 10:11:23 UTC (rev 98)
+++ trunk/pykafe/server/mainwindow.ui 2007-06-06 10:17:41 UTC (rev 99)
@@ -603,9 +603,6 @@
</property>
<item>
<widget class="QTreeWidget" name="members_treeWidget" >
- <property name="alternatingRowColors" >
- <bool>true</bool>
- </property>
<property name="rootIsDecorated" >
<bool>false</bool>
</property>
@@ -1578,5 +1575,21 @@
</hint>
</hints>
</connection>
+ <connection>
+ <sender>actionComputer</sender>
+ <signal>activated()</signal>
+ <receiver>MainWindow</receiver>
+ <slot>close()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>-1</x>
+ <y>-1</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>324</x>
+ <y>249</y>
+ </hint>
+ </hints>
+ </connection>
</connections>
</ui>
Modified: trunk/pykafe/server/server.py
===================================================================
--- trunk/pykafe/server/server.py 2007-06-06 10:11:23 UTC (rev 98)
+++ trunk/pykafe/server/server.py 2007-06-06 10:17:41 UTC (rev 99)
@@ -14,10 +14,11 @@
from PyQt4 import QtNetwork, QtCore, QtGui
from pysqlite2 import dbapi2 as sqlite
-from config import PykafeConfiguration
+from config import PykafeConfiguration, ClientInformation
from session import ClientSession
from database import Database
from settingswindow import Ui_SettingsWindow
+from clientsettingswindow import Ui_ClientSettingsWindow
from currencyformat import currency
import logger
import base64, sha, os
@@ -80,10 +81,14 @@
elif data[:3] == "002":
if client.session.state == ClientSession.ready:
username, password = data[3:].split("|")
- db = Database()
- db.cur.execute("select count() from members where username = ? and password = ?", (username, password))
- if db.cur.fetchall()[0][0]:
- client.sendMessage("0031")
+ if Database().runOnce("select count() from members where username = ? and password = ?", (username, password))[0][0]:
+ wallpaper = ""
+ try:
+ wallpaper = Database().runOnce("select setting_value from member_settings where username=? and setting_name=?", (username,"wallpaper"))[0][0]
+ print wallpaper
+ except IndexError:
+ pass
+ client.sendMessage("0031%s|%s" % (username, wallpaper))
logger.add(logger.logTypes.information, _("Member logged in"), computer = client.name, member = username)
self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.loggedIn, username)
else:
@@ -92,10 +97,20 @@
elif data[:3] == "018":
message = ""
for product in self.server.products:
- message += product.name +'|'+ str(product.price) +'|'+ str(product.quantity) +'||'
+ message += product.name +'|'+ str(product.quantity) +'|'+ str(product.price) +'||'
print "sending:", message[:-2]
self.tcpSocket.write(base64.encodestring(message[:-2]))
self.tcpSocket.waitForBytesWritten()
+ elif data[:3] == "019":
+ for order in data[3:].split('||'):
+ self.emit(QtCore.SIGNAL("orderCame"), order.split('|'), client.name)
+ elif data[:3] == "022":
+ self.sleep(2)
+ Database().runOnce("update member_settings set setting_value=? where username=? and setting_name=?", (data[3:], client.session.user, "wallpaper"))
+ elif data[:3] == "023":
+ self.sleep(5)
+ member, recv, trans = data[3:].split('|')
+ logger.add(logger.logTypes.information, _("received, sent:") + recv + '|' + trans, client.name, member)
self.tcpSocket.disconnectFromHost()
@@ -107,16 +122,64 @@
def run(self):
while(True):
if self.client.session.state == ClientSession.loggedIn:
- self.emit(QtCore.SIGNAL("changetext"),3,currency(self.client.session.calculatePrice(self.config)))
+ self.emit(QtCore.SIGNAL("changetext"),3,currency(self.client.session.calculateTotal(self.config)))
usedTime = QtCore.QDateTime()
usedTime.setTime_t(self.client.session.startTime.secsTo(QtCore.QDateTime.currentDateTime()))
self.emit(QtCore.SIGNAL("changetext"),4,usedTime.toUTC().time().toString("hh.mm"))
self.sleep(int(self.config.ui_refreshdelay))
+class Log(QtGui.QTreeWidgetItem):
+ def __init__(self, parent, textTuple):
+ QtGui.QTreeWidgetItem.__init__(self, parent)
+ self.updateTexts(textTuple)
+ def updateTexts(self, textTuple):
+ for column, text in map(lambda x,y:(x,y), xrange(7), textTuple):
+ self.setText(column, unicode(str(text)))
+ if column == 1:
+ if text == _("emergency"): color = "purple"
+ elif text == _("warning"): color = "orange"
+ elif text == _("error"): color = "red"
+ elif text == _("information"): color = "lightblue"
+ self.changeColor(color)
+ def changeColor(self, colorName):
+ for i in range(self.columnCount()):
+ self.setBackground(i, QtGui.QBrush(QtGui.QColor(colorName)))
+
+class Order(QtGui.QTreeWidgetItem):
+ def __init__(self, parent, order, clientName, toDatabase = True):
+ QtGui.QTreeWidgetItem.__init__(self, parent)
+ self.productName = str(order[0])
+ self.quantity = int(order[1])
+ self.clientName = str(clientName)
+ self.updateTexts()
+ if toDatabase:
+ Database().run("insert into orders values(?,?,?)", (self.productName, self.quantity, self.clientName))
+
+ def updateTexts(self):
+ for column, text in map(lambda x,y:(x,y), xrange(4), (self.clientName, self.productName, currency(self.price()), str(self.quantity))):
+ self.setText(column, text)
+
+ def price(self):
+ "Calculates and returns price of order"
+ products = Database().runOnce("select product_name, unit_price from products")
+ for product in products:
+ if self.productName == product[0]:
+ return float(product[1]) * self.quantity
+ return 0.0
+
+ def update(self, clientName, productName, quantity):
+ Database().run("update orders set product_name=?,quantity=?,computer_name=? where product_name=? and quantity=? and computer_name=?", (str(productName), int(quantity), str(clientName), self.productName, self.quantity, self.clientName))
+ self.clientName = str(clientName)
+ self.productName = str(productName)
+ self.quantity = int(quantity)
+ self.updateTexts()
+
+
class Client(QtGui.QTreeWidgetItem):
- def __init__(self, parent, clientInformation, config):
+ def __init__(self, parent, clientInformation, config, server):
QtGui.QTreeWidgetItem.__init__(self, parent)
self.config = config
+ self.server = server
self.fillList(clientInformation)
watcherThread = ClientThread(self, config)
QtCore.QObject.connect(watcherThread, QtCore.SIGNAL("changetext"), self.setText)
@@ -124,12 +187,22 @@
self.threads = [watcherThread]
def fillList(self, clientInformation):
+ self.id = id
self.session = clientInformation.session
self.ip = clientInformation.ip
self.name = clientInformation.name
self.setText(0, self.name)
self.setState(ClientSession.notConnected)
+ def updateInformation(self, parent, name, ip):
+ try:
+ Database().runOnce("update computers set name=?,ip=? where name=?", (str(name), str(ip), self.name))
+ self.name = name
+ self.ip = ip
+ self.setText(0, self.name)
+ except sqlite.IntegrityError:
+ QtGui.QMessageBox.critical(parent, _("Error"), _("Client ip and name must be unique.") + " " + _("Client information won't be changed"))
+
def changeColor(self, colorName):
for i in range(self.columnCount()):
self.setBackground(i, QtGui.QBrush(QtGui.QColor(colorName)))
@@ -150,10 +223,40 @@
self.setText(5, self.session.endTime.time().toString("hh.mm"))
self.changeColor("green")
elif state == ClientSession.notReady:
+ if self.session.state == ClientSession.waitingMoney:
+ total = self.session.calculateTotal(self.config)
+ print "will pay", total
+ payingType, credit = Database().runOnce("select paying_type, debt from members where username=?",(self.session.user,))[0]
+ print payingType, credit
+ if payingType == _("Pre Paid"):
+ print "user is pre_paid and has %s credit" % currency(credit)
+ for member in self.server.members:
+ print member.userName, self.session.user
+ if member.userName == self.session.user:
+ if member.debt < total:
+ QtGui.QMessageBox.warning(self.server.parent(), _("Low credit"), _("%s's credit has finished! Has %s debt.") % (member.userName, currency(total - member.debt)))
+ logger.add(logger.logTypes.warning, _("Member has low credit"), self.name, member.userName, member.debt - total)
+ member.debt -= total
+ Database().runOnce("update members set debt=? where username=?", (member.debt, member.userName))
+ else:
+ logger.add(logger.logTypes.information, _("Money paid"), self.name, member.userName, total)
+ Database().runOnce("insert into safe values(?,?,?)", (QtCore.QDateTime.currentDateTime().toTime_t(), self.config.last_cashier, total))
+ #logger.add(logger.logTypes.information, _("money paid"), self.name, self.session.user, self.session.calculateTotal()
if self.session.state == ClientSession.loggedIn:
- """if self.parent().payingType == _("Pre Paid"):
- print "user is pre_paid and has %s credit" % currency(self.parent().debt)
- self.parent().reduceCredit(self.session.calculatePrice())"""
+ total = self.session.calculateTotal(self.config)
+ payingType, credit = Database().runOnce("select paying_type, debt from members where username=?",(self.session.user,))[0]
+ if payingType == _("Pre Paid"):
+ print "user is pre_paid and has %s credit" % currency(credit)
+ for member in self.server.members:
+ if member.userName == self.session.user:
+ if member.debt < total:
+ QtGui.QMessageBox.warning(self.server.parent(), _("Low credit"), _("%s's credit has finished! Has %s debt.") % (member.userName, currency(total - member.debt)))
+ logger.add(logger.logTypes.warning, _("Member has low credit"), self.name, member.userName, member.debt - total)
+ member.debt -= total
+ Database().runOnce("update members set debt=? where username=?", (member.debt, member.userName))
+ else:
+ logger.add(logger.logTypes.information, _("Money paid"), self.name, member.userName, total)
+ Database().runOnce("insert into safe values(?,?,?)", (QtCore.QDateTime.currentDateTime().toTime_t(), self.config.last_cashier, total))
if self.config.filter_enable:
message = "007"
filterFile = open(self.config.filter_file)
@@ -184,7 +287,7 @@
self.changeColor("lightblue")
self.session.state = state
self.setText(1, self.session.toString())
- logger.add(logger.logTypes.information, _("State changed to %s") % self.session.toString(), member = self.name)
+ logger.add(logger.logTypes.information, _("State changed to %s") % self.session.toString(), computer = self.name, member = self.session.user)
self.setSelected(False)
def sendSession(self):
@@ -211,7 +314,7 @@
def updateValues(self, productInformation):
self.name, self.price, self.quantity = productInformation
self.setText(0,self.name)
- self.setText(1,currency(float(self.price)))
+ self.setText(1,str(self.price))
self.setText(2,str(self.quantity))
class Member(QtGui.QTreeWidgetItem):
@@ -226,8 +329,6 @@
def updateValuesWithoutPassword(self, memberInformation):
self.userName, self.realName, self.startDate, self.endDate, self.debt, self.payingType = memberInformation
self.setText(0, self.userName)
- def reduceCredit(self, value):
- self.debt -= value
class PykafeServer(QtNetwork.QTcpServer):
def __init__(self, parent, ui, cashier = None):
@@ -243,10 +344,15 @@
self.parent().close()
self.clients = []
for clientInformation in self.config.clientList:
- self.clients.append(Client(ui.main_treeWidget, clientInformation, self.config))
+ self.clients.append(Client(ui.main_treeWidget, clientInformation, self.config, self))
+ self.ui.orders_idComboBox.addItem(clientInformation.name, QtCore.QVariant(clientInformation.ip))
ui.main_treeWidget.sortItems(0, QtCore.Qt.AscendingOrder)
self.initMembers(first = True)
self.initProducts()
+ self.initOrders()
+ self.ui.logs_dateTimeEdit_1.setDateTime(QtCore.QDateTime.currentDateTime().addDays(-1))
+ self.ui.logs_dateTimeEdit_2.setDateTime(QtCore.QDateTime.currentDateTime().addDays(1))
+ self.refreshLogs()
self.localize()
self.threads = []
@@ -270,11 +376,19 @@
productList = Database().run("select * from products")
for product in productList:
self.products.append(Product(self.ui.orders_treeWidget_2, product))
+ self.ui.orders_itemComboBox.addItem(product[0])
+ def initOrders(self):
+ self.orders = []
+ orderList = Database().run("select * from orders")
+ for order in orderList:
+ self.orderAdd(order[:2], order[2], toDatabase = False)
+
def incomingConnection(self, socketDescriptor):
thread = ListenerThread(self.parent(), socketDescriptor, self.clients, self.config, self)
self.threads.append(thread)
QtCore.QObject.connect(thread, QtCore.SIGNAL("stateChange"), self.setClientState)
+ QtCore.QObject.connect(thread, QtCore.SIGNAL("orderCame"), self.orderAdd)
thread.start()
print "We have %d thread(s)" % len(self.threads)
@@ -366,9 +480,6 @@
return
os.system("krdc -s -f -l -c %s&" % client.ip)
- def settingsButton(self):
- pass
-
def shutdownButton(self):
client = self.ui.main_treeWidget.currentItem()
if not client:
@@ -403,6 +514,7 @@
if toDatabase:
try:
Database().runOnce("insert into members values (?,?,?,?,?,?,?,?)", memberInformation)
+ Database().runOnce("insert into member_settings values (?,?,?)", (memberInformation[0], "wallpaper", ""))
self.members.append(Member(self.ui.members_treeWidget, memberInformation[:7]))
self.filterMembers(self.ui.members_filter.text())
self.ui.statusbar.showMessage(_("Added member"))
@@ -436,8 +548,10 @@
if self.ui.members_password.text():
try:
Database().runOnce("update members set username=?,password=?,name=?,starting_date=?,finish_date=?,debt=?,paying_type=? where username = ?", memberInformation)
+ Database().runOnce("update member_settings set username=? where username = ?", (memberInformation[0], member.userName))
member.updateValues(memberInformation[:7])
self.filterMembers(self.ui.members_filter.text())
+ logger.add(logger.logTypes.warning, _("Updated member"), member = member.userName)
self.ui.statusbar.showMessage(_("Updated member information"))
except sqlite.IntegrityError:
QtGui.QMessageBox.critical(self.parent(), _("Error"), _("Username must be unique"))
@@ -445,6 +559,7 @@
del(memberInformation[1])
try:
Database().runOnce("update members set username=?,name=?,starting_date=?,finish_date=?,debt=?,paying_type=? where username=?", memberInformation)
+ Database().runOnce("update member_settings set username=? where username = ?", (memberInformation[0], member.userName))
member.updateValuesWithoutPassword(memberInformation[:6])
self.filterMembers(self.ui.members_filter.text())
self.ui.statusbar.showMessage(_("Updated member information"))
@@ -463,9 +578,11 @@
answer = QtGui.QMessageBox.question(self.parent(), _("Are you sure?"), _("Do you really want to delete this member?"), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes).__or__(QtGui.QMessageBox.No), QtGui.QMessageBox.No)
if answer == QtGui.QMessageBox.Yes:
Database().runOnce("delete from members where username = ?", (member.userName,))
+ Database().runOnce("delete from member_settings where username = ?", (member.userName,))
self.ui.members_treeWidget.takeTopLevelItem(self.ui.members_treeWidget.indexOfTopLevelItem(member))
del(self.members[self.members.index(member)])
self.filterMembers(self.ui.members_filter.text())
+ logger.add(logger.logTypes.warning, _("Deleted member"), member = member.userName)
self.ui.statusbar.showMessage(_("Deleted member"))
def memberReports(self):
@@ -557,6 +674,7 @@
if answer == QtGui.QMessageBox.Yes:
Database().runOnce("delete from products where product_name = ?", (product.name,))
self.ui.orders_treeWidget_2.takeTopLevelItem(self.ui.orders_treeWidget_2.indexOfTopLevelItem(product))
+ del(self.products[self.products.index(product)])
self.ui.statusbar.showMessage(_("Deleted product"))
def about(self):
@@ -572,6 +690,39 @@
settingsUi.setupUi(self.settingsDialog, self.config)
self.settingsDialog.show()
+ def settingsButton(self, add = False):
+ client = self.ui.main_treeWidget.currentItem()
+ if not client and not add:
+ QtGui.QMessageBox.information(self.parent(), _("Information"), _("Choose a client first"))
+ return
+ clientSettingsDialog = QtGui.QDialog(self.parent())
+ self.clientSettingsUi = Ui_ClientSettingsWindow()
+ self.clientSettingsUi.setupUi(clientSettingsDialog, client)
+ if add:
+ clientSettingsDialog.setWindowTitle(_("Add Computer"))
+ clientSettingsDialog.setWindowIcon(self.ui.pyKafeIcon)
+ QtCore.QObject.connect(clientSettingsDialog, QtCore.SIGNAL("accepted()"), self.clientAdder)
+ else:
+ QtCore.QObject.connect(clientSettingsDialog, QtCore.SIGNAL("accepted()"), self.changeClient)
+ clientSettingsDialog.show()
+
+ def changeClient(self):
+ client = self.ui.main_treeWidget.currentItem()
+ client.updateInformation(self.parent(), unicode(self.clientSettingsUi.clientID.text()), self.clientSettingsUi.clientIP.text())
+
+ def addClient(self):
+ self.settingsButton(add = True)
+
+ def clientAdder(self):
+ name = unicode(self.clientSettingsUi.clientID.text())
+ ip = unicode(self.clientSettingsUi.clientIP.text())
+ try:
+ Database().runOnce("insert into computers(ip,name) values(?,?)", (ip, name))
+ info = ClientInformation(ip, name)
+ self.clients.append(Client(self.ui.main_treeWidget, info, self.config, self))
+ except sqlite.IntegrityError:
+ QtGui.QMessageBox.critical(self.parent(), _("Error"), _("Client ip and name must be unique"))
+
def sendOptions(self):
"Sends internet filtering and pricing settings to all clients"
if self.config.filter_enable:
@@ -592,3 +743,83 @@
client.sendMessage(priceMessage)
if self.config.filter_enable:
client.sendMessage(filterMessage)
+
+ def orderAdd(self, order = None, clientName = None, toDatabase = True):
+ if not order:
+ clientName = self.ui.orders_idComboBox.currentText()
+ order = (self.ui.orders_itemComboBox.currentText(), self.ui.orders_spinBox_1.value())
+ self.orders.append(Order(self.ui.orders_treeWidget_1, order, clientName, toDatabase))
+
+ def orderChanged(self, current, previous):
+ order = current
+ if not order:
+ order = previous
+ if not order: return
+ self.ui.orders_idComboBox.setCurrentIndex(self.ui.orders_idComboBox.findText(order.clientName))
+ self.ui.orders_itemComboBox.setCurrentIndex(self.ui.orders_itemComboBox.findText(order.productName))
+ self.ui.orders_spinBox_1.setValue(order.quantity)
+
+ def orderUpdate(self):
+ order = self.ui.orders_treeWidget_1.currentItem()
+ if not order:
+ QtGui.QMessageBox.information(self.parent(), _("Information"), _("Choose an order first"))
+ return
+ order.update(self.ui.orders_idComboBox.currentText() ,self.ui.orders_itemComboBox.currentText(), self.ui.orders_spinBox_1.value())
+
+ def orderCancel(self, question = True):
+ order = self.ui.orders_treeWidget_1.currentItem()
+ if not order:
+ QtGui.QMessageBox.information(self.parent(), _("Information"), _("Choose an order first"))
+ return
+ if question:
+ answer = QtGui.QMessageBox.question(self.parent(), _("Are you sure?"), _("Do you really want to cancel this order?"), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes).__or__(QtGui.QMessageBox.No), QtGui.QMessageBox.No)
+ else:
+ answer = QtGui.QMessageBox.Yes
+ if answer == QtGui.QMessageBox.Yes:
+ Database().runOnce("delete from orders where product_name=? and quantity=? and computer_name=?", (order.productName, order.quantity, order.clientName))
+ self.ui.orders_treeWidget_1.takeTopLevelItem(self.ui.orders_treeWidget_1.indexOfTopLevelItem(order))
+ del(self.orders[self.orders.index(order)])
+ self.ui.statusbar.showMessage(_("Cancelled order"))
+
+ def orderDelete(self):
+ order = self.ui.orders_treeWidget_1.currentItem()
+ if not order:
+ QtGui.QMessageBox.information(self.parent(), _("Information"), _("Choose an order first"))
+ return
+ stocks = Database().runOnce("select stock from products where product_name=?", (order.productName,))[0][0]
+ if order.quantity>stocks:
+ QtGui.QMessageBox.warning(self.parent(), _("Warning"), _("Order quantity exceeds stocks. Stocks will be set to 0"))
+ Database().runOnce("update products set stock=? where product_name=?", (0, order.productName))
+ for product in self.products:
+ if product.name == order.productName:
+ product.setText(2, "0")
+ else:
+ Database().runOnce("update products set stock=? where product_name=?", (stocks - order.quantity, order.productName))
+ for product in self.products:
+ if product.name == order.productName:
+ product.quantity = stocks - order.quantity
+ product.setText(2, str(product.quantity))
+ for client in self.clients:
+ if client.name == order.clientName:
+ logger.add(logger.logTypes.information, _("cafeteria item sold"), order.clientName, client.session.user, order.price())
+ Database().runOnce("insert into safe values(?,?,?)", (QtCore.QDateTime.currentDateTime().toTime_t(), self.config.last_cashier, order.price()))
+ client.session.orders.append(order.price())
+ self.orderCancel(question = False)
+
+ def refreshLogs(self):
+ startDate = self.ui.logs_dateTimeEdit_1.dateTime().toTime_t()
+ endDate = self.ui.logs_dateTimeEdit_2.dateTime().toTime_t()
+ if startDate>endDate:
+ QtGui.QMessageBox.warning(self.parent(), _("Warning"), _("Starting time must be smaller than ending time. They will be set to equal"))
+ self.ui.logs_dateTimeEdit_1.setDateTime(self.ui.logs_dateTimeEdit_2.dateTime())
+ return
+ self.logs = []
+ logs = Database().run("select date,log_type,log_value,cashier,computer,member,income from logs where date between ? and ?", (startDate, endDate))
+ for log in logs:
+ time = QtCore.QDateTime.fromTime_t(log[0]).toString("dd.MM.yyyy hh.mm")
+ type = log[1]
+ if type == logger.logTypes.emergency: type = _("emergency")
+ elif type == logger.logTypes.warning: type = _("warning")
+ elif type == logger.logTypes.error: type = _("error")
+ elif type == logger.logTypes.information: type = _("information")
+ self.logs.append(Log(self.ui.logs_treeWidget, (time, type) + log[2:]))
Modified: trunk/pykafe/server/session.py
===================================================================
--- trunk/pykafe/server/session.py 2007-06-06 10:11:23 UTC (rev 98)
+++ trunk/pykafe/server/session.py 2007-06-06 10:17:41 UTC (rev 99)
@@ -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"""
Modified: trunk/pykafe/server/settings.py
===================================================================
--- trunk/pykafe/server/settings.py 2007-06-06 10:11:23 UTC (rev 98)
+++ trunk/pykafe/server/settings.py 2007-06-06 10:17:41 UTC (rev 99)
@@ -13,6 +13,7 @@
from PyQt4 import QtGui, QtCore
from pysqlite2 import dbapi2 as sqlite
from database import Database
+from cashierreports import Ui_CashierReports
import sha, socket
import locale, gettext
@@ -215,7 +216,15 @@
except sqlite.IntegrityError:
QtGui.QMessageBox.critical(self.parent, _("Error"), _("Username must be unique"))
def cashierReports(self):
- pass
+ cashier = self.ui.cashiers_treeWidget.currentItem()
+ if not cashier:
+ QtGui.QMessageBox.critical(self.parent, _("Error"), _("You must select a cashier first"))
+ return
+ dialog = QtGui.QDialog(self.parent)
+ reportwindow = Ui_CashierReports()
+ reportwindow.setupUi(dialog, cashier.userName)
+ dialog.show()
+
def cashierChanged(self, current, previous):
currentCashier = current
if not currentCashier:
@@ -223,3 +232,18 @@
self.ui.cashiers_username.setText(currentCashier.userName)
self.ui.cashiers_password.clear()
self.ui.cashiers_realName.setText(currentCashier.realName)
+ def checkPricingRoundingValue(self):
+ if self.ui.pricing_rounding.value() > self.ui.pricing_fixed.value():
+ QtGui.QMessageBox.warning(self.parent, _("Warning"), _("Price rounding must be smaller than or equal to fixed price. Correct value will be set."))
+ self.ui.pricing_rounding.setValue(self.ui.pricing_fixed.value())
+ def checkPricingOnehourValue(self):
+ if self.ui.pricing_fixed.value() > self.ui.pricing_onehour.value():
+ QtGui.QMessageBox.warning(self.parent, _("Warning"), _("One hour price must be bigger than or equal to fixed price. Correct value will be set."))
+ self.ui.pricing_onehour.setValue(self.ui.pricing_fixed.value())
+ def checkPricingFixedValue(self):
+ if self.ui.pricing_rounding.value() > self.ui.pricing_fixed.value():
+ QtGui.QMessageBox.warning(self.parent, _("Warning"), _("Fixed price must be bigger than or equal to price rounding. Correct value will be set."))
+ self.ui.pricing_fixed.setValue(self.ui.pricing_rounding.value())
+ elif self.ui.pricing_fixed.value() > self.ui.pricing_onehour.value():
+ QtGui.QMessageBox.warning(self.parent, _("Warning"), _("Fixed price must be smaller than or equal to one hour price. Correct value will be set."))
+ self.ui.pricing_fixed.setValue(self.ui.pricing_onehour.value())
Modified: trunk/pykafe/server/settingswindow.py
===================================================================
--- trunk/pykafe/server/settingswindow.py 2007-06-06 10:11:23 UTC (rev 98)
+++ trunk/pykafe/server/settingswindow.py 2007-06-06 10:17:41 UTC (rev 99)
@@ -86,8 +86,8 @@
self.hboxlayout1.addWidget(self.label_5)
self.pricing_minutes = QtGui.QSpinBox(self.tab_3)
- self.pricing_minutes.setMaximum(3600)
- self.pricing_minutes.setSingleStep(15)
+ self.pricing_minutes.setMaximum(60)
+ self.pricing_minutes.setSingleStep(5)
self.pricing_minutes.setObjectName("pricing_minutes")
self.hboxlayout1.addWidget(self.pricing_minutes)
@@ -335,6 +335,9 @@
QtCore.QObject.connect(self.cashiers_deleteButton,QtCore.SIGNAL("clicked()"),self.manager.cashierDelete)
QtCore.QObject.connect(self.cashiers_updateButton,QtCore.SIGNAL("clicked()"),self.manager.cashierUpdate)
QtCore.QObject.connect(self.cashiers_reportsButton,QtCore.SIGNAL("clicked()"),self.manager.cashierReports)
+ QtCore.QObject.connect(self.pricing_fixed,QtCore.SIGNAL("valueChanged(double)"),self.manager.checkPricingFixedValue)
+ QtCore.QObject.connect(self.pricing_onehour,QtCore.SIGNAL("valueChanged(double)"),self.manager.checkPricingOnehourValue)
+ QtCore.QObject.connect(self.pricing_rounding,QtCore.SIGNAL("valueChanged(double)"),self.manager.checkPricingRoundingValue)
QtCore.QMetaObject.connectSlotsByName(SettingsWindow)
SettingsWindow.setTabOrder(self.tabWidget,self.checkBox_2)
SettingsWindow.setTabOrder(self.checkBox_2,self.pricing_minutes)
Modified: trunk/pykafe/server/settingswindow.ui
===================================================================
--- trunk/pykafe/server/settingswindow.ui 2007-06-06 10:11:23 UTC (rev 98)
+++ trunk/pykafe/server/settingswindow.ui 2007-06-06 10:17:41 UTC (rev 99)
@@ -142,10 +142,10 @@
<item>
<widget class="QSpinBox" name="pricing_minutes" >
<property name="maximum" >
- <number>3600</number>
+ <number>60</number>
</property>
<property name="singleStep" >
- <number>15</number>
+ <number>5</number>
</property>
</widget>
</item>
@@ -800,5 +800,53 @@
</hint>
</hints>
</connection>
+ <connection>
+ <sender>pricing_fixed</sender>
+ <signal>valueChanged(double)</signal>
+ <receiver>SettingsWindow</receiver>
+ <slot>close()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>319</x>
+ <y>56</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>233</x>
+ <y>149</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>pricing_onehour</sender>
+ <signal>valueChanged(double)</signal>
+ <receiver>SettingsWindow</receiver>
+ <slot>close()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>292</x>
+ <y>89</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>233</x>
+ <y>149</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>pricing_rounding</sender>
+ <signal>valueChanged(double)</signal>
+ <receiver>SettingsWindow</receiver>
+ <slot>close()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>292</x>
+ <y>122</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>233</x>
+ <y>149</y>
+ </hint>
+ </hints>
+ </connection>
</connections>
</ui>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
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.
|
|
From: <jn...@us...> - 2007-06-04 22:43:09
|
Revision: 97
http://pykafe.svn.sourceforge.net/pykafe/?rev=97&view=rev
Author: jnmbk
Date: 2007-06-04 15:43:09 -0700 (Mon, 04 Jun 2007)
Log Message:
-----------
fix that too
Modified Paths:
--------------
trunk/pykafe/client/cafeteria.py
Modified: trunk/pykafe/client/cafeteria.py
===================================================================
--- trunk/pykafe/client/cafeteria.py 2007-06-04 22:39:31 UTC (rev 96)
+++ trunk/pykafe/client/cafeteria.py 2007-06-04 22:43:09 UTC (rev 97)
@@ -133,7 +133,7 @@
self.orders = []
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.orderAdd())
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
@@ -151,7 +151,6 @@
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _("Sent Orders"))
def orderAdd(self):
- print 1234
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())]
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-04 22:39:30
|
Revision: 96
http://pykafe.svn.sourceforge.net/pykafe/?rev=96&view=rev
Author: jnmbk
Date: 2007-06-04 15:39:31 -0700 (Mon, 04 Jun 2007)
Log Message:
-----------
be secure
Modified Paths:
--------------
trunk/pykafe/client/client.py
trunk/pykafe/client/clientmain.py
Modified: trunk/pykafe/client/client.py
===================================================================
--- trunk/pykafe/client/client.py 2007-06-04 21:58:27 UTC (rev 95)
+++ trunk/pykafe/client/client.py 2007-06-04 22:39:31 UTC (rev 96)
@@ -167,14 +167,7 @@
remainingTime.toUTC().time().toString("hh.mm") + "\n" +\
usedTime.toUTC().time().toString("hh.mm") + "|"
text += currency(self.client.session.calculatePrice(config))
- print "sending:", text
- tcpSocket = QtNetwork.QTcpSocket()
- tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_localPort)
- tcpSocket.waitForConnected()
- temp = data+text
- tcpSocket.write(str(temp))
- tcpSocket.waitForBytesWritten()
- #sendDataToUi(data+text)
+ sendDataToUi(str(data+text))
elif data[:3] == "018":
tcpSocket = QtNetwork.QTcpSocket()
tcpSocket.connectToHost(QtNetwork.QHostAddress(config.network_serverIP), config.network_port)
Modified: trunk/pykafe/client/clientmain.py
===================================================================
--- trunk/pykafe/client/clientmain.py 2007-06-04 21:58:27 UTC (rev 95)
+++ trunk/pykafe/client/clientmain.py 2007-06-04 22:39:31 UTC (rev 96)
@@ -47,7 +47,7 @@
self.tcpSocket.waitForDisconnected()
self.exec_()
def readRoot(self):
- data = self.tcpSocket.readAll()
+ data = base64.decodestring(self.tcpSocket.readAll())
print "received:", data
if data[:3] == "017":
text = data[3:]
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-04 21:58:25
|
Revision: 95
http://pykafe.svn.sourceforge.net/pykafe/?rev=95&view=rev
Author: jnmbk
Date: 2007-06-04 14:58:27 -0700 (Mon, 04 Jun 2007)
Log Message:
-----------
cleanup
Modified Paths:
--------------
trunk/pykafe/client/login.py
Modified: trunk/pykafe/client/login.py
===================================================================
--- trunk/pykafe/client/login.py 2007-06-04 21:58:11 UTC (rev 94)
+++ trunk/pykafe/client/login.py 2007-06-04 21:58:27 UTC (rev 95)
@@ -48,7 +48,6 @@
def run(self):
self.tcpSocket = QtNetwork.QTcpSocket()
self.tcpSocket.setSocketDescriptor(self.socketDescriptor)
- self.tcpSocket.isReadable()
self.tcpSocket.waitForReadyRead(-1)
data = base64.decodestring(self.tcpSocket.readAll())
print "received:", data
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-04 21:58:09
|
Revision: 94
http://pykafe.svn.sourceforge.net/pykafe/?rev=94&view=rev
Author: jnmbk
Date: 2007-06-04 14:58:11 -0700 (Mon, 04 Jun 2007)
Log Message:
-----------
fixed
Modified Paths:
--------------
trunk/pykafe/client/client.py
trunk/pykafe/client/clientmain.py
Modified: trunk/pykafe/client/client.py
===================================================================
--- trunk/pykafe/client/client.py 2007-06-04 15:39:40 UTC (rev 93)
+++ trunk/pykafe/client/client.py 2007-06-04 21:58:11 UTC (rev 94)
@@ -52,9 +52,14 @@
tcpSocket = QtNetwork.QTcpSocket()
tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_localPort)
tcpSocket.waitForConnected(-1)
- tcpSocket.write(base64.encodestring(data))
- tcpSocket.waitForBytesWritten()
- print "sent to ui:", data
+ print "trying to send to ui:", data
+ if tcpSocket.write(base64.encodestring(data)) == -1:
+ print "failed"
+ return False
+ else:
+ print "success"
+ tcpSocket.waitForBytesWritten()
+ return True
def getSiteIP(site):
try:
@@ -163,8 +168,13 @@
usedTime.toUTC().time().toString("hh.mm") + "|"
text += currency(self.client.session.calculatePrice(config))
print "sending:", text
- self.tcpSocket.write(base64.encodestring(text))
- self.tcpSocket.waitForBytesWritten()
+ tcpSocket = QtNetwork.QTcpSocket()
+ tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_localPort)
+ tcpSocket.waitForConnected()
+ temp = data+text
+ tcpSocket.write(str(temp))
+ tcpSocket.waitForBytesWritten()
+ #sendDataToUi(data+text)
elif data[:3] == "018":
tcpSocket = QtNetwork.QTcpSocket()
tcpSocket.connectToHost(QtNetwork.QHostAddress(config.network_serverIP), config.network_port)
Modified: trunk/pykafe/client/clientmain.py
===================================================================
--- trunk/pykafe/client/clientmain.py 2007-06-04 15:39:40 UTC (rev 93)
+++ trunk/pykafe/client/clientmain.py 2007-06-04 21:58:11 UTC (rev 94)
@@ -10,7 +10,7 @@
# Please read the COPYING file.
#
-import sys, base64
+import sys, base64, socket
from PyQt4 import QtCore, QtGui, QtNetwork
from config import PykafeConfiguration
import cafeteria
@@ -36,17 +36,26 @@
tcpSocket.disconnectFromHost()
class ListenerThread(QtCore.QThread):
- def __init__(self, parent, socketDescriptor):
- QtCore.QThread.__init__(self, parent)
+ def __init__(self, socketDescriptor):
+ QtCore.QThread.__init__(self)
self.socketDescriptor = socketDescriptor
def run(self):
self.tcpSocket = QtNetwork.QTcpSocket()
self.tcpSocket.setSocketDescriptor(self.socketDescriptor)
- self.tcpSocket.waitForReadyRead()
- data = base64.decodestring(self.tcpSocket.readAll())
+ print "connection request from:", self.tcpSocket.peerAddress().toString()
+ QtCore.QObject.connect(self.tcpSocket, QtCore.SIGNAL("readyRead()"), self.readRoot)
+ self.tcpSocket.waitForDisconnected()
+ self.exec_()
+ def readRoot(self):
+ data = self.tcpSocket.readAll()
print "received:", data
- self.tcpSocket.disconnectFromHost()
- self.exec_()
+ if data[:3] == "017":
+ text = data[3:]
+ if not text:
+ print "couldn't read"
+ else:
+ text1, text2 = text.split('|',1)
+ self.emit(QtCore.SIGNAL("updateLabels"), str(text1), str(text2))
class PykafeClientMain(QtNetwork.QTcpServer):
def __init__(self, parent, ui):
@@ -57,9 +66,10 @@
self.orders = []
self.temporders = []
def incomingConnection(self, socketDescriptor):
- thread = ListenerThread(self.parent(), socketDescriptor)
+ thread = ListenerThread(socketDescriptor)
QtCore.QObject.connect(thread,QtCore.SIGNAL("close"),self.parent().close)
QtCore.QObject.connect(thread,QtCore.SIGNAL("message"),self.ui.statusbar.showMessage)
+ QtCore.QObject.connect(thread,QtCore.SIGNAL("updateLabels"),self.ui.updateLabels)
thread.start()
self.threads.append(thread)
def sendMessage(self, data):
@@ -100,17 +110,11 @@
class TimerThread(QtCore.QThread):
def run(self):
while True:
- tcpSocket = QtNetwork.QTcpSocket()
- tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_port)
- tcpSocket.waitForConnected()
- tcpSocket.write(base64.encodestring("017"))
- tcpSocket.waitForReadyRead()
- text = base64.decodestring(tcpSocket.readAll())
- text1, text2 = text.rsplit('|', 1)
- #there's a big problem here, somehow time returns the first letter of time and money returns ""
- #TODO: fix it
- self.emit(QtCore.SIGNAL("changeTimeLabel"), text1)
- self.emit(QtCore.SIGNAL("changeMoneyLabel"), text2)
+ #self.emit(QtCore.SIGNAL("updateLabels"), "sadasf","retr")
+ tcpSocket = socket.socket()
+ tcpSocket.connect(("",config.network_port))
+ tcpSocket.send(base64.encodestring("017"))
+ tcpSocket.close()
self.sleep(60)
class Ui_MainWindow(object):
@@ -195,12 +199,12 @@
self.ui = MainWindow
QtCore.QObject.connect(self.trayIcon, QtCore.SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), self.iconActivated)
self.thread = TimerThread()
- QtCore.QObject.connect(self.thread,QtCore.SIGNAL("changeTimeLabel"),self.timeLabel.setText)
- QtCore.QObject.connect(self.thread,QtCore.SIGNAL("changeMoneyLabel"),self.moneyLabel.setText)
QtCore.QObject.connect(self.thread,QtCore.SIGNAL("setCafeteria"),self.setCafeteria)
self.thread.start()
+
def setCafeteria(self, cafeteria):
self.cafeteria = cafeteria
+
def iconActivated(self, reason):
if reason == QtGui.QSystemTrayIcon.Trigger:
if self.ui.isVisible():
@@ -208,6 +212,10 @@
else:
self.ui.show()
+ def updateLabels(self, text1, text2):
+ self.timeLabel.setText(text1)
+ self.moneyLabel.setText(text2)
+
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_("pyKafe"))
self.logoutButton.setText(_("Logout"))
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-04 15:39:40
|
Revision: 93
http://pykafe.svn.sourceforge.net/pykafe/?rev=93&view=rev
Author: jnmbk
Date: 2007-06-04 08:39:40 -0700 (Mon, 04 Jun 2007)
Log Message:
-----------
orders thing and initial file for memberstats
Modified Paths:
--------------
trunk/pykafe/server/mainwindow.py
trunk/pykafe/server/server.py
Added Paths:
-----------
trunk/pykafe/server/memberstats.ui
Modified: trunk/pykafe/server/mainwindow.py
===================================================================
--- trunk/pykafe/server/mainwindow.py 2007-06-04 15:38:47 UTC (rev 92)
+++ trunk/pykafe/server/mainwindow.py 2007-06-04 15:39:40 UTC (rev 93)
@@ -396,7 +396,7 @@
self.members_debt = QtGui.QDoubleSpinBox(self.groupBox)
self.members_debt.setAlignment(QtCore.Qt.AlignRight)
self.members_debt.setMaximum(1000000000.0)
- self.members_debt.setMinimum(-1000000000.0)
+ self.members_debt.setMinimum(0)
self.members_debt.setObjectName("members_debt")
self.gridlayout9.addWidget(self.members_debt,3,1,1,1)
self.gridlayout8.addLayout(self.gridlayout9,0,0,1,1)
@@ -662,7 +662,7 @@
self.members_payingType.addItem(_("Pre Paid"))
self.members_payingType.addItem(_("Normal"))
self.textLabel1_3.setText(_("Username:"))
- self.textLabel4_2.setText(_("Debt:"))
+ self.textLabel4_2.setText(_("Credit:"))
self.textLabel3_2.setText(_("Real Name:"))
self.textLabel7.setText(_("Subscribing period:"))
self.label_2.setText(_("Starts"))
Added: trunk/pykafe/server/memberstats.ui
===================================================================
--- trunk/pykafe/server/memberstats.ui (rev 0)
+++ trunk/pykafe/server/memberstats.ui 2007-06-04 15:39:40 UTC (rev 93)
@@ -0,0 +1,189 @@
+<ui version="4.0" >
+ <class>MemberStatsDialog</class>
+ <widget class="QDialog" name="MemberStatsDialog" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>507</width>
+ <height>302</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>Member statistics</string>
+ </property>
+ <property name="windowIcon" >
+ <iconset>../../data/icons/pyKafe.png</iconset>
+ </property>
+ <layout class="QGridLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item row="0" column="0" >
+ <widget class="QSplitter" name="splitter_2" >
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <widget class="QSplitter" name="splitter" >
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
+ </property>
+ <widget class="QWidget" name="layoutWidget" >
+ <layout class="QVBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="label" >
+ <property name="text" >
+ <string>Daily usage graph</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGraphicsView" name="dailyUsage" />
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="layoutWidget" >
+ <layout class="QVBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="label_2" >
+ <property name="text" >
+ <string>Hourly usage graph</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGraphicsView" name="hourlyUsage" />
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ <widget class="QWidget" name="" >
+ <layout class="QVBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="profit" >
+ <property name="text" >
+ <string>Profit from this member
+until now:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="label_4" >
+ <property name="text" >
+ <string>Average bandwith usage per hour</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGraphicsView" name="bandwidthUsage" />
+ </item>
+ <item>
+ <widget class="QLabel" name="received" >
+ <property name="text" >
+ <string>Received:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="sent" >
+ <property name="text" >
+ <string>Sent:</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ <item row="1" column="0" >
+ <widget class="QDialogButtonBox" name="buttonBox" >
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons" >
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>MemberStatsDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>MemberStatsDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
Modified: trunk/pykafe/server/server.py
===================================================================
--- trunk/pykafe/server/server.py 2007-06-04 15:38:47 UTC (rev 92)
+++ trunk/pykafe/server/server.py 2007-06-04 15:39:40 UTC (rev 93)
@@ -43,11 +43,13 @@
class ListenerThread(QtCore.QThread):
- def __init__(self, parent, socketDescriptor, clients, config):
+ def __init__(self, parent, socketDescriptor, clients, config, server):
+ #TODO: We should use server only, clients and config aren't necessary
QtCore.QThread.__init__(self, parent)
self.socketDescriptor = socketDescriptor
self.clients = clients
self.config = config
+ self.server = server
def run(self):
self.tcpSocket = QtNetwork.QTcpSocket()
@@ -83,10 +85,17 @@
if db.cur.fetchall()[0][0]:
client.sendMessage("0031")
logger.add(logger.logTypes.information, _("Member logged in"), computer = client.name, member = username)
- self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.loggedIn, user = username)
+ self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.loggedIn, username)
else:
logger.add(logger.logTypes.warning, _("Someone entered wrong password or username"), computer = client.name, member = username)
client.sendMessage("0030")
+ elif data[:3] == "018":
+ message = ""
+ for product in self.server.products:
+ message += product.name +'|'+ str(product.price) +'|'+ str(product.quantity) +'||'
+ print "sending:", message[:-2]
+ self.tcpSocket.write(base64.encodestring(message[:-2]))
+ self.tcpSocket.waitForBytesWritten()
self.tcpSocket.disconnectFromHost()
@@ -135,13 +144,16 @@
if state == ClientSession.loggedIn:
self.session.user = user
self.session.startTime = QtCore.QDateTime.currentDateTime()
- self.setTexts((2,3,4), (user,currency(0.0), self.session.startTime.time().toString("00.00")))
+ self.setTexts((2,3,4), (user,currency(float(self.config.price_fixedprice)), self.session.startTime.time().toString("00.00")))
if endTime:
self.session.endTime = endTime
self.setText(5, self.session.endTime.time().toString("hh.mm"))
self.changeColor("green")
elif state == ClientSession.notReady:
- #if self.session.state in (ClientSession.notConnected, ClientSession.notReady):
+ if self.session.state == ClientSession.loggedIn:
+ """if self.parent().payingType == _("Pre Paid"):
+ print "user is pre_paid and has %s credit" % currency(self.parent().debt)
+ self.parent().reduceCredit(self.session.calculatePrice())"""
if self.config.filter_enable:
message = "007"
filterFile = open(self.config.filter_file)
@@ -214,6 +226,8 @@
def updateValuesWithoutPassword(self, memberInformation):
self.userName, self.realName, self.startDate, self.endDate, self.debt, self.payingType = memberInformation
self.setText(0, self.userName)
+ def reduceCredit(self, value):
+ self.debt -= value
class PykafeServer(QtNetwork.QTcpServer):
def __init__(self, parent, ui, cashier = None):
@@ -258,14 +272,14 @@
self.products.append(Product(self.ui.orders_treeWidget_2, product))
def incomingConnection(self, socketDescriptor):
- thread = ListenerThread(self.parent(), socketDescriptor, self.clients, self.config)
+ thread = ListenerThread(self.parent(), socketDescriptor, self.clients, self.config, self)
self.threads.append(thread)
QtCore.QObject.connect(thread, QtCore.SIGNAL("stateChange"), self.setClientState)
thread.start()
print "We have %d thread(s)" % len(self.threads)
- def setClientState(self, client, state):
- self.clients[client].setState(state)
+ def setClientState(self, client, state, user = "guest"):
+ self.clients[client].setState(state, user)
def startClient(self):
client = self.ui.main_treeWidget.currentItem()
@@ -284,7 +298,7 @@
client.sendMessage("0011")
client.setState(ClientSession.loggedIn)
elif state == ClientSession.waitingMoney:
- client.setState(ClientSession.ready)
+ client.setState(ClientSession.notReady)
client.sendMessage("015")
elif state == ClientSession.notReady:
QtGui.QMessageBox.critical(self.parent(), _("Error"), _("Client isn't ready"))
@@ -303,7 +317,7 @@
client.sendMessage("0011")
client.setState(ClientSession.loggedIn)
elif state == ClientSession.waitingMoney:
- client.setState(ClientSession.ready)
+ client.setState(ClientSession.notReady)
client.sendMessage("015")
elif state == ClientSession.notReady:
QtGui.QMessageBox.critical(self.parent(), _("Error"), _("Client isn't ready"))
@@ -336,7 +350,7 @@
client.sendMessage("0010")
client.setState(ClientSession.ready)
elif state == ClientSession.waitingMoney:
- client.setState(ClientSession.ready)
+ client.setState(ClientSession.notReady)
client.sendMessage("015")
def changeButton(self):
@@ -405,6 +419,9 @@
if not member:
QtGui.QMessageBox.critical(self.parent(), _("Error"), _("You must select a member first"))
return
+ if member.userName == "guest":
+ QtGui.QMessageBox.information(self.parent(), _("Error"), _("You can't change guest"))
+ return
memberInformation = [unicode(self.ui.members_username.text()),
" ",
unicode(self.ui.members_realName.text()),
@@ -440,6 +457,9 @@
if not member:
QtGui.QMessageBox.critical(self.parent(), _("Error"), _("You must select a member first"))
return
+ if member.userName == "guest":
+ QtGui.QMessageBox.information(self.parent(), _("Error"), _("You can't delete guest"))
+ return
answer = QtGui.QMessageBox.question(self.parent(), _("Are you sure?"), _("Do you really want to delete this member?"), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes).__or__(QtGui.QMessageBox.No), QtGui.QMessageBox.No)
if answer == QtGui.QMessageBox.Yes:
Database().runOnce("delete from members where username = ?", (member.userName,))
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-04 15:38:52
|
Revision: 92
http://pykafe.svn.sourceforge.net/pykafe/?rev=92&view=rev
Author: jnmbk
Date: 2007-06-04 08:38:47 -0700 (Mon, 04 Jun 2007)
Log Message:
-----------
cafeteria thing and fixes
Modified Paths:
--------------
trunk/pykafe/client/cafeteria.ui
trunk/pykafe/client/client.py
trunk/pykafe/client/clientmain.py
trunk/pykafe/client/login.py
Added Paths:
-----------
trunk/pykafe/client/cafeteria.py
Added: trunk/pykafe/client/cafeteria.py
===================================================================
--- trunk/pykafe/client/cafeteria.py (rev 0)
+++ trunk/pykafe/client/cafeteria.py 2007-06-04 15:38:47 UTC (rev 92)
@@ -0,0 +1,157 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2007, pyKafe Development Team
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2 of the License, or (at your option)
+# any later version.
+#
+# Please read the COPYING file.
+#
+
+from PyQt4 import QtCore, QtGui
+
+import locale, gettext
+locale.setlocale(locale.LC_ALL, "C")
+_ = gettext.translation("pyKafe_client", fallback=True).ugettext
+
+class Product:
+ def __init__(self, values):
+ print values
+ self.name, self.price, self.quantity = values.split('|',3)
+
+class Order(QtGui.QTreeWidgetItem):
+ def __init__(self, parent, product, value, quantity):
+ QtGui.QTreeWidgetItem.__init__(self, parent)
+ self.setText(0, product)
+ self.setText(1, value)
+ self.setText(2, quantity)
+
+def findProductPrice(products, name):
+ for product in products:
+ if product.name == name:
+ return float(product.value)
+
+class Ui_Dialog(object):
+ def setupUi(self, Dialog, client):
+ Dialog.setObjectName("Dialog")
+ Dialog.resize(QtCore.QSize(QtCore.QRect(0,0,361,300).size()).expandedTo(Dialog.minimumSizeHint()))
+ Dialog.setWindowIcon(QtGui.QIcon("../../data/icons/pyKafe.png"))
+
+ self.gridlayout = QtGui.QGridLayout(Dialog)
+ self.gridlayout.setMargin(9)
+ self.gridlayout.setSpacing(6)
+ self.gridlayout.setObjectName("gridlayout")
+
+ self.gridlayout1 = QtGui.QGridLayout()
+ self.gridlayout1.setMargin(0)
+ self.gridlayout1.setSpacing(6)
+ self.gridlayout1.setObjectName("gridlayout1")
+
+ spacerItem = QtGui.QSpacerItem(20,16,QtGui.QSizePolicy.Minimum,QtGui.QSizePolicy.Fixed)
+ self.gridlayout1.addItem(spacerItem,0,2,1,1)
+
+ self.addOrder = QtGui.QPushButton(Dialog)
+ self.addOrder.setIcon(QtGui.QIcon("../../data/icons/edit_add.png"))
+ self.addOrder.setObjectName("addOrder")
+ self.gridlayout1.addWidget(self.addOrder,1,2,1,1)
+
+ self.product = QtGui.QComboBox(Dialog)
+ self.product.setObjectName("product")
+ self.gridlayout1.addWidget(self.product,1,0,1,1)
+
+ self.label = QtGui.QLabel(Dialog)
+
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Policy(5),QtGui.QSizePolicy.Policy(0))
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
+ self.label.setSizePolicy(sizePolicy)
+ self.label.setObjectName("label")
+ self.gridlayout1.addWidget(self.label,0,0,1,1)
+
+ self.quantity = QtGui.QSpinBox(Dialog)
+ self.quantity.setMinimum(1)
+ self.quantity.setObjectName("quantity")
+ self.gridlayout1.addWidget(self.quantity,1,1,1,1)
+
+ self.label_2 = QtGui.QLabel(Dialog)
+
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Policy(5),QtGui.QSizePolicy.Policy(0))
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
+ self.label_2.setSizePolicy(sizePolicy)
+ self.label_2.setObjectName("label_2")
+ self.gridlayout1.addWidget(self.label_2,0,1,1,1)
+ self.gridlayout.addLayout(self.gridlayout1,0,0,1,1)
+
+ self.buttonBox = QtGui.QDialogButtonBox(Dialog)
+ self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
+ self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.NoButton|QtGui.QDialogButtonBox.Ok)
+ self.buttonBox.setObjectName("buttonBox")
+ self.gridlayout.addWidget(self.buttonBox,2,0,1,1)
+
+ self.tabWidget = QtGui.QTabWidget(Dialog)
+ self.tabWidget.setObjectName("tabWidget")
+
+ self.tab = QtGui.QWidget()
+ self.tab.setObjectName("tab")
+
+ self.gridlayout2 = QtGui.QGridLayout(self.tab)
+ self.gridlayout2.setMargin(9)
+ self.gridlayout2.setSpacing(6)
+ self.gridlayout2.setObjectName("gridlayout2")
+
+ self.ordersToSend = QtGui.QTreeWidget(self.tab)
+ self.ordersToSend.setObjectName("ordersToSend")
+ self.gridlayout2.addWidget(self.ordersToSend,0,0,1,1)
+ self.tabWidget.addTab(self.tab,"")
+
+ self.tab_2 = QtGui.QWidget()
+ self.tab_2.setObjectName("tab_2")
+
+ self.gridlayout3 = QtGui.QGridLayout(self.tab_2)
+ self.gridlayout3.setMargin(9)
+ self.gridlayout3.setSpacing(6)
+ self.gridlayout3.setObjectName("gridlayout3")
+
+ self.sentOrders = QtGui.QTreeWidget(self.tab_2)
+ self.sentOrders.setObjectName("sentOrders")
+ self.gridlayout3.addWidget(self.sentOrders,0,0,1,1)
+ self.tabWidget.addTab(self.tab_2,"")
+ self.gridlayout.addWidget(self.tabWidget,1,0,1,1)
+
+ self.retranslateUi(Dialog)
+ self.tabWidget.setCurrentIndex(0)
+ self.client = client
+ self.products = []
+ for product in client.cafeteriaContents:
+ self.products.append(Product(product))
+ self.product.addItem(self.products[-1].name)
+ self.orders = []
+ 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.QMetaObject.connectSlotsByName(Dialog)
+
+ def retranslateUi(self, Dialog):
+ Dialog.setWindowTitle(_("Cafeteria"))
+ self.addOrder.setText(_("Add Order"))
+ self.label.setText(_("Product"))
+ self.label_2.setText(_("Quantity"))
+ self.ordersToSend.headerItem().setText(0,_("Item"))
+ self.ordersToSend.headerItem().setText(1,_("Cost"))
+ self.ordersToSend.headerItem().setText(2,_("Quantity"))
+ self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _("Orders to Send"))
+ self.sentOrders.headerItem().setText(0,_("Item"))
+ self.sentOrders.headerItem().setText(1,_("Cost"))
+ self.sentOrders.headerItem().setText(2,_("Quantity"))
+ self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _("Sent Orders"))
+
+ def orderAdd(self):
+ print 1234
+ 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())]
Modified: trunk/pykafe/client/cafeteria.ui
===================================================================
--- trunk/pykafe/client/cafeteria.ui 2007-06-03 20:20:15 UTC (rev 91)
+++ trunk/pykafe/client/cafeteria.ui 2007-06-04 15:38:47 UTC (rev 92)
@@ -47,7 +47,7 @@
</spacer>
</item>
<item row="1" column="2" >
- <widget class="QPushButton" name="pushButton" >
+ <widget class="QPushButton" name="addOrder" >
<property name="text" >
<string>Add Order</string>
</property>
@@ -57,7 +57,7 @@
</widget>
</item>
<item row="1" column="0" >
- <widget class="QComboBox" name="comboBox" />
+ <widget class="QComboBox" name="product" />
</item>
<item row="0" column="0" >
<widget class="QLabel" name="label" >
@@ -75,7 +75,11 @@
</widget>
</item>
<item row="1" column="1" >
- <widget class="QSpinBox" name="spinBox" />
+ <widget class="QSpinBox" name="quantity" >
+ <property name="minimum" >
+ <number>1</number>
+ </property>
+ </widget>
</item>
<item row="0" column="1" >
<widget class="QLabel" name="label_2" >
@@ -121,7 +125,7 @@
<number>6</number>
</property>
<item row="0" column="0" >
- <widget class="QTreeWidget" name="treeWidget" >
+ <widget class="QTreeWidget" name="ordersToSend" >
<column>
<property name="text" >
<string>Item</string>
@@ -153,7 +157,7 @@
<number>6</number>
</property>
<item row="0" column="0" >
- <widget class="QTreeWidget" name="treeWidget_2" >
+ <widget class="QTreeWidget" name="sentOrders" >
<column>
<property name="text" >
<string>Item</string>
@@ -211,5 +215,21 @@
</hint>
</hints>
</connection>
+ <connection>
+ <sender>addOrder</sender>
+ <signal>clicked()</signal>
+ <receiver>Dialog</receiver>
+ <slot>close()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>295</x>
+ <y>46</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>180</x>
+ <y>149</y>
+ </hint>
+ </hints>
+ </connection>
</connections>
</ui>
Modified: trunk/pykafe/client/client.py
===================================================================
--- trunk/pykafe/client/client.py 2007-06-03 20:20:15 UTC (rev 91)
+++ trunk/pykafe/client/client.py 2007-06-04 15:38:47 UTC (rev 92)
@@ -103,8 +103,9 @@
self.client.setState(ClientSession.loggedIn)
elif data[:3] == "005":
self.client.setState(ClientSession.loggedIn)
+ sendDataToUi(data)
+ elif data[:3] == "006":
sendDataToUi("005")
- elif data[:3] == "006":
self.client.setState(ClientSession.loggedIn, endTime = QtCore.QDateTime.fromTime_t(int(data[3:])))
elif data[:3] == "007":
iptablesFile = "*filter\n:INPUT ACCEPT [94:7144]\n:FORWARD ACCEPT [0:0]\n:OUTPUT ACCEPT [177:10428]\n"
@@ -118,8 +119,13 @@
file.close()
print iptablesFile
os.system("iptables-restore < /etc/pyKafe/iptables.conf")
+ elif data[:3] == "009":
+ os.system("restartkde&")
elif data[:3] == "010":
os.system("init 0")
+ elif data[:3] == "015":
+ if self.client.state == ClientSession.ready:
+ sendDataToServer("004")
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)
@@ -132,12 +138,12 @@
return
if data[:3] == "000":
sendDataToServer("000")
- self.client.session.setState(ClientSession.requestedOpening)
+ self.client.setState(ClientSession.requestedOpening)
elif data[:3] == "002":
sendDataToServer(data)
elif data[:3] == "004":
sendDataToServer("004")
- self.client.session.state = ClientSession.ready
+ self.client.setState(ClientSession.ready)
elif data[:3] == "008":
sendDataToServer(data)
os.system("restartkde&")
@@ -159,7 +165,16 @@
print "sending:", text
self.tcpSocket.write(base64.encodestring(text))
self.tcpSocket.waitForBytesWritten()
- self.exit()
+ elif data[:3] == "018":
+ tcpSocket = QtNetwork.QTcpSocket()
+ tcpSocket.connectToHost(QtNetwork.QHostAddress(config.network_serverIP), config.network_port)
+ tcpSocket.waitForConnected()
+ tcpSocket.write(base64.encodestring(data))
+ tcpSocket.waitForBytesWritten()
+ tcpSocket.waitForReadyRead()
+ data = tcpSocket.readAll()
+ self.tcpSocket.write(data)
+ self.tcpSocket.waitForBytesWritten()
class PykafeClient(QtNetwork.QTcpServer):
def __init__(self):
Modified: trunk/pykafe/client/clientmain.py
===================================================================
--- trunk/pykafe/client/clientmain.py 2007-06-03 20:20:15 UTC (rev 91)
+++ trunk/pykafe/client/clientmain.py 2007-06-04 15:38:47 UTC (rev 92)
@@ -13,6 +13,7 @@
import sys, base64
from PyQt4 import QtCore, QtGui, QtNetwork
from config import PykafeConfiguration
+import cafeteria
import locale, gettext
locale.setlocale(locale.LC_ALL, "C")
@@ -21,8 +22,8 @@
config = PykafeConfiguration()
class SenderThread(QtCore.QThread):
- def __init__(self, parent, data):
- QtCore.QThread.__init__(self, parent)
+ def __init__(self, data):
+ QtCore.QThread.__init__(self)
self.data = data
def run(self):
tcpSocket = QtNetwork.QTcpSocket()
@@ -53,6 +54,8 @@
self.ui = ui
self.listen(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_localPort)
self.threads = []
+ self.orders = []
+ self.temporders = []
def incomingConnection(self, socketDescriptor):
thread = ListenerThread(self.parent(), socketDescriptor)
QtCore.QObject.connect(thread,QtCore.SIGNAL("close"),self.parent().close)
@@ -60,15 +63,39 @@
thread.start()
self.threads.append(thread)
def sendMessage(self, data):
- thread = SenderThread(self.parent(), data)
+ thread = SenderThread(data)
thread.start()
self.threads.append(thread)
def cafeteria(self):
- pass
+ tcpSocket = QtNetwork.QTcpSocket()
+ tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_port)
+ tcpSocket.waitForConnected()
+ tcpSocket.write(base64.encodestring("018"))
+ tcpSocket.waitForBytesWritten()
+ tcpSocket.waitForReadyRead()
+ data = base64.decodestring(tcpSocket.readAll())
+ print "received:", data
+ tcpSocket.disconnectFromHost()
+ self.cafeteriaContents = []
+ for i in data.split('||'):
+ self.cafeteriaContents.append(i)
+ self.cafeteriaWindow = QtGui.QDialog(self.parent())
+ QtCore.QObject.connect(self.cafeteriaWindow, QtCore.SIGNAL("accepted()"), self.sendOrders)
+ dialog = cafeteria.Ui_Dialog()
+ dialog.setupUi(self.cafeteriaWindow, self)
+ self.cafeteriaWindow.setModal(True)
+ self.cafeteriaWindow.show()
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:
self.sendMessage("008")
+ def sendOrders(self):
+ text = "019"
+ for order in self.temporders:
+ text += order
+ self.orders.append(order)
+ if len(text)>3:
+ self.sendMessage(text)
class TimerThread(QtCore.QThread):
def run(self):
@@ -167,10 +194,13 @@
self.trayIcon.show()
self.ui = MainWindow
QtCore.QObject.connect(self.trayIcon, QtCore.SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), self.iconActivated)
- thread = TimerThread()
- QtCore.QObject.connect(thread,QtCore.SIGNAL("changeTimeLabel"),self.timeLabel.setText)
- QtCore.QObject.connect(thread,QtCore.SIGNAL("changeMoneyLabel"),self.moneyLabel.setText)
- thread.start()
+ self.thread = TimerThread()
+ QtCore.QObject.connect(self.thread,QtCore.SIGNAL("changeTimeLabel"),self.timeLabel.setText)
+ QtCore.QObject.connect(self.thread,QtCore.SIGNAL("changeMoneyLabel"),self.moneyLabel.setText)
+ QtCore.QObject.connect(self.thread,QtCore.SIGNAL("setCafeteria"),self.setCafeteria)
+ self.thread.start()
+ def setCafeteria(self, cafeteria):
+ self.cafeteria = cafeteria
def iconActivated(self, reason):
if reason == QtGui.QSystemTrayIcon.Trigger:
if self.ui.isVisible():
Modified: trunk/pykafe/client/login.py
===================================================================
--- trunk/pykafe/client/login.py 2007-06-03 20:20:15 UTC (rev 91)
+++ trunk/pykafe/client/login.py 2007-06-04 15:38:47 UTC (rev 92)
@@ -54,23 +54,23 @@
print "received:", data
if data[:3] == "001":
if data[3] == "1":
- os.system("pyKafeclient&")
- self.emit(QtCore.SIGNAL("close"))
+ self.login()
elif data[3] == "0":
self.emit(QtCore.SIGNAL("message"), _("Server didn't give acknowledge"))
elif data[:3] == "003":
if data[3] == "1":
- os.system("pyKafeclient&")
- self.emit(QtCore.SIGNAL("close"))
+ self.login()
else:
self.emit(QtCore.SIGNAL("message"), _("Wrong username or password"))
elif data[:3] == "005":
- os.system("pyKafeclient&")
- self.emit(QtCore.SIGNAL("close"))
+ self.login()
elif data[:3] == "014":
self.emit(QtCore.SIGNAL("message"), _("Can't connect to server"))
self.tcpSocket.disconnectFromHost()
self.exec_()
+ def login(self):
+ os.system("pyKafeclient&")
+ self.emit(QtCore.SIGNAL("close"))
class PykafeClient(QtNetwork.QTcpServer):
def __init__(self, parent, ui):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-03 20:20:12
|
Revision: 91
http://pykafe.svn.sourceforge.net/pykafe/?rev=91&view=rev
Author: jnmbk
Date: 2007-06-03 13:20:15 -0700 (Sun, 03 Jun 2007)
Log Message:
-----------
we know what the problem is, but don't know why :P
Modified Paths:
--------------
trunk/pykafe/client/clientmain.py
Modified: trunk/pykafe/client/clientmain.py
===================================================================
--- trunk/pykafe/client/clientmain.py 2007-06-03 19:52:34 UTC (rev 90)
+++ trunk/pykafe/client/clientmain.py 2007-06-03 20:20:15 UTC (rev 91)
@@ -80,7 +80,7 @@
tcpSocket.waitForReadyRead()
text = base64.decodestring(tcpSocket.readAll())
text1, text2 = text.rsplit('|', 1)
- #there's a big problem here, somehow time returns "1" and money returns ""
+ #there's a big problem here, somehow time returns the first letter of time and money returns ""
#TODO: fix it
self.emit(QtCore.SIGNAL("changeTimeLabel"), text1)
self.emit(QtCore.SIGNAL("changeMoneyLabel"), text2)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-03 19:52:33
|
Revision: 90
http://pykafe.svn.sourceforge.net/pykafe/?rev=90&view=rev
Author: jnmbk
Date: 2007-06-03 12:52:34 -0700 (Sun, 03 Jun 2007)
Log Message:
-----------
trying to make it right
Modified Paths:
--------------
trunk/pykafe/client/client.py
trunk/pykafe/client/clientmain.py
Modified: trunk/pykafe/client/client.py
===================================================================
--- trunk/pykafe/client/client.py 2007-06-03 18:32:33 UTC (rev 89)
+++ trunk/pykafe/client/client.py 2007-06-03 19:52:34 UTC (rev 90)
@@ -131,20 +131,13 @@
sendDataToUi("014")
return
if data[:3] == "000":
- if self.client.session.state == ClientSession.ready:
- sendDataToServer("000")
- self.client.session.setState(ClientSession.requestedOpening)
- else:
- sys.stderr.write(_("Client tried to send opening request, state was: %s") % self.client.session.toString())
+ sendDataToServer("000")
+ self.client.session.setState(ClientSession.requestedOpening)
elif data[:3] == "002":
- if self.client.session.state == ClientSession.ready:
- sendDataToServer(data)
+ sendDataToServer(data)
elif data[:3] == "004":
- if self.client.session.state == ClientSession.notReady:
- sendDataToServer("004")
- self.client.session.state = ClientSession.ready
- else:
- sys.stderr.write(_("Client tried to say I'm here, state was: %s") % self.client.session.toString())
+ sendDataToServer("004")
+ self.client.session.state = ClientSession.ready
elif data[:3] == "008":
sendDataToServer(data)
os.system("restartkde&")
@@ -163,6 +156,7 @@
remainingTime.toUTC().time().toString("hh.mm") + "\n" +\
usedTime.toUTC().time().toString("hh.mm") + "|"
text += currency(self.client.session.calculatePrice(config))
+ print "sending:", text
self.tcpSocket.write(base64.encodestring(text))
self.tcpSocket.waitForBytesWritten()
self.exit()
Modified: trunk/pykafe/client/clientmain.py
===================================================================
--- trunk/pykafe/client/clientmain.py 2007-06-03 18:32:33 UTC (rev 89)
+++ trunk/pykafe/client/clientmain.py 2007-06-03 19:52:34 UTC (rev 90)
@@ -44,21 +44,6 @@
self.tcpSocket.waitForReadyRead()
data = base64.decodestring(self.tcpSocket.readAll())
print "received:", data
- """if data[:3] == "001":
- if data[3] == "1":
- os.system("pyKafeclient&")
- self.emit(QtCore.SIGNAL("close"))
- elif data[3] == "0":
- self.emit(QtCore.SIGNAL("message"), _("Server didn't give acknowledge"))
- elif data[:3] == "003":
- if data[3] == 1:
- os.system("pyKafeclient&")
- self.emit(QtCore.SIGNAL("close"))
- else:
- self.emit(QtCore.SIGNAL("message"), _("Wrong username or password"))
- elif data[:3] == "005":
- os.system("pyKafeclient&")
- self.emit(QtCore.SIGNAL("close"))"""
self.tcpSocket.disconnectFromHost()
self.exec_()
@@ -182,10 +167,10 @@
self.trayIcon.show()
self.ui = MainWindow
QtCore.QObject.connect(self.trayIcon, QtCore.SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), self.iconActivated)
- self.thread = TimerThread(MainWindow)
- QtCore.QObject.connect(self.thread,QtCore.SIGNAL("changeTimeLabel"),self.timeLabel.setText)
- QtCore.QObject.connect(self.thread,QtCore.SIGNAL("changeMoneyLabel"),self.moneyLabel.setText)
- self.thread.start()
+ thread = TimerThread()
+ QtCore.QObject.connect(thread,QtCore.SIGNAL("changeTimeLabel"),self.timeLabel.setText)
+ QtCore.QObject.connect(thread,QtCore.SIGNAL("changeMoneyLabel"),self.moneyLabel.setText)
+ thread.start()
def iconActivated(self, reason):
if reason == QtGui.QSystemTrayIcon.Trigger:
if self.ui.isVisible():
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-03 18:32:32
|
Revision: 89
http://pykafe.svn.sourceforge.net/pykafe/?rev=89&view=rev
Author: jnmbk
Date: 2007-06-03 11:32:33 -0700 (Sun, 03 Jun 2007)
Log Message:
-----------
It seems that we don't need time :)
Modified Paths:
--------------
trunk/pykafe/client/clientmain.py
trunk/pykafe/server/server.py
Modified: trunk/pykafe/client/clientmain.py
===================================================================
--- trunk/pykafe/client/clientmain.py 2007-06-03 18:08:35 UTC (rev 88)
+++ trunk/pykafe/client/clientmain.py 2007-06-03 18:32:33 UTC (rev 89)
@@ -10,7 +10,7 @@
# Please read the COPYING file.
#
-import sys, time, base64
+import sys, base64
from PyQt4 import QtCore, QtGui, QtNetwork
from config import PykafeConfiguration
@@ -99,7 +99,7 @@
#TODO: fix it
self.emit(QtCore.SIGNAL("changeTimeLabel"), text1)
self.emit(QtCore.SIGNAL("changeMoneyLabel"), text2)
- time.sleep(60)
+ self.sleep(60)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
Modified: trunk/pykafe/server/server.py
===================================================================
--- trunk/pykafe/server/server.py 2007-06-03 18:08:35 UTC (rev 88)
+++ trunk/pykafe/server/server.py 2007-06-03 18:32:33 UTC (rev 89)
@@ -20,7 +20,7 @@
from settingswindow import Ui_SettingsWindow
from currencyformat import currency
import logger
-import base64, sha, time, os
+import base64, sha, os
import locale, gettext
locale.setlocale(locale.LC_MESSAGES, "C")
@@ -102,7 +102,7 @@
usedTime = QtCore.QDateTime()
usedTime.setTime_t(self.client.session.startTime.secsTo(QtCore.QDateTime.currentDateTime()))
self.emit(QtCore.SIGNAL("changetext"),4,usedTime.toUTC().time().toString("hh.mm"))
- time.sleep(int(self.config.ui_refreshdelay))
+ self.sleep(int(self.config.ui_refreshdelay))
class Client(QtGui.QTreeWidgetItem):
def __init__(self, parent, clientInformation, config):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-03 18:08:40
|
Revision: 88
http://pykafe.svn.sourceforge.net/pykafe/?rev=88&view=rev
Author: jnmbk
Date: 2007-06-03 11:08:35 -0700 (Sun, 03 Jun 2007)
Log Message:
-----------
my bad :P
Modified Paths:
--------------
trunk/pykafe/server/server.py
Modified: trunk/pykafe/server/server.py
===================================================================
--- trunk/pykafe/server/server.py 2007-06-03 16:48:43 UTC (rev 87)
+++ trunk/pykafe/server/server.py 2007-06-03 18:08:35 UTC (rev 88)
@@ -98,7 +98,7 @@
def run(self):
while(True):
if self.client.session.state == ClientSession.loggedIn:
- self.emit(QtCore.SIGNAL("changetext"),3,currency(self.session.calculatePrice(self.config)))
+ self.emit(QtCore.SIGNAL("changetext"),3,currency(self.client.session.calculatePrice(self.config)))
usedTime = QtCore.QDateTime()
usedTime.setTime_t(self.client.session.startTime.secsTo(QtCore.QDateTime.currentDateTime()))
self.emit(QtCore.SIGNAL("changetext"),4,usedTime.toUTC().time().toString("hh.mm"))
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-03 16:48:41
|
Revision: 87
http://pykafe.svn.sourceforge.net/pykafe/?rev=87&view=rev
Author: jnmbk
Date: 2007-06-03 09:48:43 -0700 (Sun, 03 Jun 2007)
Log Message:
-----------
I'll try this at home
Modified Paths:
--------------
trunk/pykafe/client/clientmain.py
Modified: trunk/pykafe/client/clientmain.py
===================================================================
--- trunk/pykafe/client/clientmain.py 2007-06-03 16:26:55 UTC (rev 86)
+++ trunk/pykafe/client/clientmain.py 2007-06-03 16:48:43 UTC (rev 87)
@@ -86,26 +86,20 @@
self.sendMessage("008")
class TimerThread(QtCore.QThread):
- def __init__(self, parent, startTime, endTime):
- QtCore.QThread.__init__(self, parent)
- self.startTime = startTime
- self.endTime = endTime
def run(self):
while True:
- self.do()
+ tcpSocket = QtNetwork.QTcpSocket()
+ tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_port)
+ tcpSocket.waitForConnected()
+ tcpSocket.write(base64.encodestring("017"))
+ tcpSocket.waitForReadyRead()
+ text = base64.decodestring(tcpSocket.readAll())
+ text1, text2 = text.rsplit('|', 1)
+ #there's a big problem here, somehow time returns "1" and money returns ""
+ #TODO: fix it
+ self.emit(QtCore.SIGNAL("changeTimeLabel"), text1)
+ self.emit(QtCore.SIGNAL("changeMoneyLabel"), text2)
time.sleep(60)
- def do(self):
- tcpSocket = QtNetwork.QTcpSocket()
- tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_port)
- tcpSocket.waitForConnected()
- tcpSocket.write(base64.encodestring("017"))
- tcpSocket.waitForReadyRead()
- text = base64.decodestring(tcpSocket.readAll())
- text1, text2 = text.rsplit('|', 1)
- #there's a big problem here, somehow time returns "1" and money returns ""
- #TODO: fix it
- self.emit(QtCore.SIGNAL("changeTimeLabel"), text1)
- self.emit(QtCore.SIGNAL("changeMoneyLabel"), text2)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
@@ -188,10 +182,10 @@
self.trayIcon.show()
self.ui = MainWindow
QtCore.QObject.connect(self.trayIcon, QtCore.SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), self.iconActivated)
- thread = TimerThread(MainWindow, QtCore.QDateTime.currentDateTime(), QtCore.QDateTime())
- QtCore.QObject.connect(thread,QtCore.SIGNAL("changeTimeLabel"),self.timeLabel.setText)
- QtCore.QObject.connect(thread,QtCore.SIGNAL("changeMoneyLabel"),self.moneyLabel.setText)
- thread.start()
+ self.thread = TimerThread(MainWindow)
+ QtCore.QObject.connect(self.thread,QtCore.SIGNAL("changeTimeLabel"),self.timeLabel.setText)
+ QtCore.QObject.connect(self.thread,QtCore.SIGNAL("changeMoneyLabel"),self.moneyLabel.setText)
+ self.thread.start()
def iconActivated(self, reason):
if reason == QtGui.QSystemTrayIcon.Trigger:
if self.ui.isVisible():
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-03 16:26:52
|
Revision: 86
http://pykafe.svn.sourceforge.net/pykafe/?rev=86&view=rev
Author: jnmbk
Date: 2007-06-03 09:26:55 -0700 (Sun, 03 Jun 2007)
Log Message:
-----------
make client work with new things
Modified Paths:
--------------
trunk/pykafe/client/client.py
trunk/pykafe/client/clientmain.py
Modified: trunk/pykafe/client/client.py
===================================================================
--- trunk/pykafe/client/client.py 2007-06-03 16:26:05 UTC (rev 85)
+++ trunk/pykafe/client/client.py 2007-06-03 16:26:55 UTC (rev 86)
@@ -96,22 +96,16 @@
data = base64.decodestring(self.tcpSocket.readAll())
print "received from server:", data
if data[:3] == "001":
- if self.client.session.state == ClientSession.ready:
- sendDataToUi(data)
- else:
- sys.stderr.write(_("Received ack from server, state was: %s") % self.client.session.toString())
+ sendDataToUi(data)
elif data[:3] == "003":
- if self.client.session.state == ClientSession.ready:
- sendDataToUi(data)
- if data[3] == "1":
- self.client.session.state = ClientSession.loggedIn
- else:
- sys.stderr.write(_("Received %s from server, state was: %s") % (data, self.client.session.toString()))
+ sendDataToUi(data)
+ if data[3] == "1":
+ self.client.setState(ClientSession.loggedIn)
elif data[:3] == "005":
- if self.client.session.state == ClientSession.ready:
- self.client.session.user = "guest"
- self.client.session.state = ClientSession.loggedIn
- sendDataToUi("005")
+ self.client.setState(ClientSession.loggedIn)
+ sendDataToUi("005")
+ elif data[:3] == "006":
+ self.client.setState(ClientSession.loggedIn, endTime = QtCore.QDateTime.fromTime_t(int(data[3:])))
elif data[:3] == "007":
iptablesFile = "*filter\n:INPUT ACCEPT [94:7144]\n:FORWARD ACCEPT [0:0]\n:OUTPUT ACCEPT [177:10428]\n"
for site in data[3:].split('\n'):
@@ -152,31 +146,24 @@
else:
sys.stderr.write(_("Client tried to say I'm here, state was: %s") % self.client.session.toString())
elif data[:3] == "008":
- print 8
- if self.client.session.state == ClientSession.loggedIn:
- print "gdg"
- sendDataToServer(data)
- os.system("service kdebase stop && sleep 3 && service kdebase start")
+ sendDataToServer(data)
+ os.system("restartkde&")
elif data[:3] == "017":
currentTime = QtCore.QDateTime.currentDateTime()
usedTime = self.client.session.startTime.secsTo(currentTime)
- price = (usedTime/600)*(config.price_onehourprice/6.0)
remainingTime = QtCore.QDateTime()
- if self.endTime.isValid():
+ if self.client.session.endTime:
remainingTime.setTime_t(currentTime.secsTo(self.client.session.endTime))
else:
remainingTime.setTime_t(0)
temp = usedTime
usedTime = QtCore.QDateTime()
usedTime.setTime_t(temp)
- text = self.startTime.time().toString("hh.mm") + "\n" +\
+ text = self.client.session.startTime.time().toString("hh.mm") + "\n" +\
remainingTime.toUTC().time().toString("hh.mm") + "\n" +\
usedTime.toUTC().time().toString("hh.mm") + "|"
- if float(config.price_fixedprice) < price:
- text += currency(price)
- else:
- text += currency(float(config.price_fixedprice))
- self.tcpSocket.write(text)
+ text += currency(self.client.session.calculatePrice(config))
+ self.tcpSocket.write(base64.encodestring(text))
self.tcpSocket.waitForBytesWritten()
self.exit()
@@ -192,11 +179,21 @@
thread.start()
self.threads = [thread]
print "trying to connect to server"
+
def incomingConnection(self, socketDescriptor):
thread = ListenerThread(socketDescriptor, self)
thread.start()
self.threads.append(thread)
print "We have " + str(len(self.threads)) + " thread(s)"
+
def initialConnection(self):
print "connected to server"
self.session.setState(ClientSession.notReady)
+
+ def setState(self, state, user = "guest", endTime = ""):
+ if state == ClientSession.loggedIn:
+ self.session.user = user
+ self.session.startTime = QtCore.QDateTime.currentDateTime()
+ if endTime:
+ self.session.endTime = endTime
+ self.session.setState(state)
Modified: trunk/pykafe/client/clientmain.py
===================================================================
--- trunk/pykafe/client/clientmain.py 2007-06-03 16:26:05 UTC (rev 85)
+++ trunk/pykafe/client/clientmain.py 2007-06-03 16:26:55 UTC (rev 86)
@@ -86,11 +86,10 @@
self.sendMessage("008")
class TimerThread(QtCore.QThread):
- def __init__(self, parent, startTime, endTime, currencyConfig):
+ def __init__(self, parent, startTime, endTime):
QtCore.QThread.__init__(self, parent)
self.startTime = startTime
self.endTime = endTime
- self.currencyConfig = currencyConfig
def run(self):
while True:
self.do()
@@ -99,10 +98,12 @@
tcpSocket = QtNetwork.QTcpSocket()
tcpSocket.connectToHost(QtNetwork.QHostAddress(QtNetwork.QHostAddress.LocalHost), config.network_port)
tcpSocket.waitForConnected()
- tcpSocket.write("017")
+ tcpSocket.write(base64.encodestring("017"))
tcpSocket.waitForReadyRead()
- text = tcpSocket.readAll()
+ text = base64.decodestring(tcpSocket.readAll())
text1, text2 = text.rsplit('|', 1)
+ #there's a big problem here, somehow time returns "1" and money returns ""
+ #TODO: fix it
self.emit(QtCore.SIGNAL("changeTimeLabel"), text1)
self.emit(QtCore.SIGNAL("changeMoneyLabel"), text2)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-03 16:26:03
|
Revision: 85
http://pykafe.svn.sourceforge.net/pykafe/?rev=85&view=rev
Author: jnmbk
Date: 2007-06-03 09:26:05 -0700 (Sun, 03 Jun 2007)
Log Message:
-----------
make all connection things work
Modified Paths:
--------------
trunk/pykafe/server/server.py
Modified: trunk/pykafe/server/server.py
===================================================================
--- trunk/pykafe/server/server.py 2007-06-03 16:25:29 UTC (rev 84)
+++ trunk/pykafe/server/server.py 2007-06-03 16:26:05 UTC (rev 85)
@@ -27,6 +27,7 @@
locale.setlocale(locale.LC_MONETARY, "")
_ = gettext.translation("pyKafe_server", fallback=True).ugettext
+
class MessageSender(QtCore.QThread):
def __init__(self, ip, port, message):
QtCore.QThread.__init__(self)
@@ -40,6 +41,7 @@
tcpSocket.waitForBytesWritten()
tcpSocket.disconnectFromHost()
+
class ListenerThread(QtCore.QThread):
def __init__(self, parent, socketDescriptor, clients, config):
QtCore.QThread.__init__(self, parent)
@@ -66,39 +68,13 @@
data = base64.decodestring(self.tcpSocket.readAll())
print "data:", data
if data[:3] == "011":
- #TODO: Move these into setState
- if client.session.state in (ClientSession.notConnected, ClientSession.notReady):
- 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.strip())
- 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)
- self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.notReady)
- else:
- self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.notReady)
- #client is somehow rebooted
- #TODO: send current session information after taking 004
- #message = "013"
- #client.sendSession()
+ self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.notReady)
elif data[:3] == "004":
- if client.session.state == ClientSession.notReady:
- self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.ready)
+ self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.ready)
elif data[:3] == "000":
- #User wants to open
- if client.session.state == ClientSession.ready:
- self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.requestedOpening)
- else:
- #TODO: illegal activity
- pass
+ self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.requestedOpening)
+ elif data[:3] == "008":
+ self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.waitingMoney)
elif data[:3] == "002":
if client.session.state == ClientSession.ready:
username, password = data[3:].split("|")
@@ -107,14 +83,13 @@
if db.cur.fetchall()[0][0]:
client.sendMessage("0031")
logger.add(logger.logTypes.information, _("Member logged in"), computer = client.name, member = username)
- self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.waitingMoney, user = username)
+ self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.loggedIn, user = username)
else:
logger.add(logger.logTypes.warning, _("Someone entered wrong password or username"), computer = client.name, member = username)
client.sendMessage("0030")
- elif data[:3] == "008":
- self.emit(QtCore.SIGNAL("stateChange"), self.clientNumber, ClientSession.waitingMoney)
self.tcpSocket.disconnectFromHost()
+
class ClientThread(QtCore.QThread):
def __init__(self, parent, config):
QtCore.QThread.__init__(self)
@@ -123,16 +98,9 @@
def run(self):
while(True):
if self.client.session.state == ClientSession.loggedIn:
- #calculate time
- utime = self.client.session.startTime.secsTo(QtCore.QDateTime.currentDateTime())
- if utime/60 < int(self.config.price_fixedpriceminutes):
- price = float(self.config.price_fixedprice)
- else:
- #TODO: round the price using price_rounding
- price = float(self.config.price_onehourprice)/3600 * utime
- self.emit(QtCore.SIGNAL("changetext"),3,currency(price))
+ self.emit(QtCore.SIGNAL("changetext"),3,currency(self.session.calculatePrice(self.config)))
usedTime = QtCore.QDateTime()
- usedTime.setTime_t(utime)
+ usedTime.setTime_t(self.client.session.startTime.secsTo(QtCore.QDateTime.currentDateTime()))
self.emit(QtCore.SIGNAL("changetext"),4,usedTime.toUTC().time().toString("hh.mm"))
time.sleep(int(self.config.ui_refreshdelay))
@@ -164,24 +132,48 @@
print "This client has %d threads" % len(self.threads)
def setState(self, state, user = "guest", endTime = ""):
- if self.session.state == ClientSession.requestedOpening and state != ClientSession.requestedOpening:
- self.changeColor("white")
- elif state == ClientSession.loggedIn:
+ if state == ClientSession.loggedIn:
self.session.user = user
- self.setText(2, user)
- self.setText(3, currency(0.0))
self.session.startTime = QtCore.QDateTime.currentDateTime()
- self.setText(4, self.session.startTime.time().toString("00.00"))
+ self.setTexts((2,3,4), (user,currency(0.0), self.session.startTime.time().toString("00.00")))
if endTime:
self.session.endTime = endTime
self.setText(5, self.session.endTime.time().toString("hh.mm"))
+ self.changeColor("green")
+ elif state == ClientSession.notReady:
+ #if self.session.state in (ClientSession.notConnected, ClientSession.notReady):
+ if self.config.filter_enable:
+ message = "007"
+ filterFile = open(self.config.filter_file)
+ filters = filterFile.readlines()
+ filterFile.close()
+ for i in filters:
+ message += i
+ self.sendMessage(message.strip())
+ message = "016"
+ message += "%s|%s|%s|%s" % (self.config.price_fixedprice,
+ self.config.price_fixedpriceminutes,
+ self.config.price_onehourprice,
+ self.config.price_rounding)
+ self.sendMessage(message)
+ self.setTexts((2,3,4,5), ("","","",""))
+ self.changeColor("orange")
elif state == ClientSession.requestedOpening:
self.changeColor("red")
elif state == ClientSession.waitingMoney:
self.changeColor("red")
+ elif state == ClientSession.notConnected:
+ if self.session.state == ClientSession.loggedIn:
+ logger.add(logger.logTypes.information, "client shutted down while logged in", computer = self.name, member = self.session.user, income = self.session.calculatePrice(self.config))
+ self.setTexts((2,3,4,5), ("","","",""))
+ self.changeColor("orange")
+ elif state == ClientSession.ready:
+ self.setTexts((2,3,4,5), ("","","",""))
+ self.changeColor("lightblue")
self.session.state = state
self.setText(1, self.session.toString())
logger.add(logger.logTypes.information, _("State changed to %s") % self.session.toString(), member = self.name)
+ self.setSelected(False)
def sendSession(self):
"sends latest session to the client, this is for eliminating client side problems like rebooting"
@@ -192,6 +184,13 @@
str(self.session.endTime.toTime_t())
self.sendMessage(message)
+ def setTexts(self, columns, texts):
+ "Sets multiple texts at once"
+ #there may be a better way to do this
+ for column, text in map(lambda x,y:(x,y), columns, texts):
+ self.setText(column, text)
+
+
class Product(QtGui.QTreeWidgetItem):
def __init__(self, parent, productInformation):
QtGui.QTreeWidgetItem.__init__(self, parent)
@@ -276,14 +275,19 @@
state = client.session.state
if state == ClientSession.notConnected:
QtGui.QMessageBox.critical(self.parent(), _("Error"), _("Can't connect to client"))
- if state == ClientSession.ready:
+ elif state == ClientSession.ready:
client.sendMessage("005")
client.setState(ClientSession.loggedIn, user = "guest")
- if state == ClientSession.loggedIn:
+ elif state == ClientSession.loggedIn:
QtGui.QMessageBox.information(self.parent(), _("Information"), _("Client is already logged in"))
- if state == ClientSession.requestedOpening:
+ elif state == ClientSession.requestedOpening:
client.sendMessage("0011")
client.setState(ClientSession.loggedIn)
+ elif state == ClientSession.waitingMoney:
+ client.setState(ClientSession.ready)
+ client.sendMessage("015")
+ elif state == ClientSession.notReady:
+ QtGui.QMessageBox.critical(self.parent(), _("Error"), _("Client isn't ready"))
def startTimed(self):
client = self.ui.main_treeWidget.currentItem()
@@ -293,19 +297,25 @@
state = client.session.state
if state == ClientSession.notConnected:
QtGui.QMessageBox.critical(self.parent(), _("Error"), _("Can't connect to client"))
- return
- if state == ClientSession.loggedIn:
+ elif state == ClientSession.loggedIn:
QtGui.QMessageBox.information(self.parent(), _("Information"), _("Client is already logged in"))
- return
- answer = QtGui.QInputDialog.getInteger(self.parent(), _("Enter time"), _("Enter time in minutes"),
- int(self.config.price_fixedpriceminutes),
- int(self.config.price_fixedpriceminutes),
- 1440, 15)
- if answer[1] == False:
- return
- if state == ClientSession.ready:
- client.sendMessage("006" + str(answer[0]))
- client.setState(ClientSession.loggedIn, user = "guest", endTime = QtCore.QDateTime.currentDateTime().addSecs(answer[0]*60))
+ elif state == ClientSession.requestedOpening:
+ client.sendMessage("0011")
+ client.setState(ClientSession.loggedIn)
+ elif state == ClientSession.waitingMoney:
+ client.setState(ClientSession.ready)
+ client.sendMessage("015")
+ elif state == ClientSession.notReady:
+ QtGui.QMessageBox.critical(self.parent(), _("Error"), _("Client isn't ready"))
+ elif state == ClientSession.ready:
+ answer = QtGui.QInputDialog.getInteger(self.parent(), _("Enter time"), _("Enter time in minutes"),
+ int(self.config.price_fixedpriceminutes),
+ int(self.config.price_fixedpriceminutes),
+ 1440, 15)
+ if answer[1] != False:
+ myTime = QtCore.QDateTime.currentDateTime().addSecs(answer[0]*60)
+ client.sendMessage("006" + str(myTime.toTime_t()))
+ client.setState(ClientSession.loggedIn, user = "guest", endTime = myTime)
def stopClient(self):
client = self.ui.main_treeWidget.currentItem()
@@ -315,16 +325,19 @@
state = client.session.state
if state == ClientSession.notConnected:
QtGui.QMessageBox.critical(self.parent(), _("Error"), _("Can't connect to client"))
- elif state == ClientSession.ready:
+ elif state in (ClientSession.ready, ClientSession.notReady):
QtGui.QMessageBox.information(self.parent(), _("Information"), _("Client is already stopped"))
elif state == ClientSession.loggedIn:
answer = QtGui.QMessageBox.question(self.parent(), _("Are you sure?"), _("Do you really want to stop this client?"), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes).__or__(QtGui.QMessageBox.No), QtGui.QMessageBox.No)
if answer == QtGui.QMessageBox.Yes:
client.sendMessage("009")
- client.setState(ClientSession.ready)
+ client.setState(ClientSession.notReady)
elif state == ClientSession.requestedOpening:
client.sendMessage("0010")
client.setState(ClientSession.ready)
+ elif state == ClientSession.waitingMoney:
+ client.setState(ClientSession.ready)
+ client.sendMessage("015")
def changeButton(self):
pass
@@ -527,7 +540,7 @@
self.ui.statusbar.showMessage(_("Deleted product"))
def about(self):
- QtGui.QMessageBox.about(self.parent(), _("About PyKafe"), "pyKafe v0.1_alpha1\n\n" + _("Authors:") + u"\nUğur Çetin\nMustafa Sarı\n\n" + _("Mentor:") + u"\nA. Tevfik İnan")
+ QtGui.QMessageBox.about(self.parent(), _("About pyKafe"), "pyKafe v0.1_alpha1\n\n" + _("Authors:") + u"\nUğur Çetin\nMustafa Sarı\n\n" + _("Mentor:") + u"\nA. Tevfik İnan")
def aboutQt(self):
QtGui.QMessageBox.aboutQt(self.parent())
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-03 16:25:27
|
Revision: 84
http://pykafe.svn.sourceforge.net/pykafe/?rev=84&view=rev
Author: jnmbk
Date: 2007-06-03 09:25:29 -0700 (Sun, 03 Jun 2007)
Log Message:
-----------
price should be calculated by session
Modified Paths:
--------------
trunk/pykafe/client/session.py
trunk/pykafe/server/session.py
Modified: trunk/pykafe/client/session.py
===================================================================
--- trunk/pykafe/client/session.py 2007-06-03 16:24:43 UTC (rev 83)
+++ trunk/pykafe/client/session.py 2007-06-03 16:25:29 UTC (rev 84)
@@ -10,9 +10,11 @@
# Please read the COPYING file.
#
+from PyQt4 import QtCore
+
import locale, gettext
locale.setlocale(locale.LC_ALL, "C")
-_ = gettext.translation("pyKafe_client", fallback=True).ugettext
+_ = gettext.translation("pyKafe_server", fallback=True).ugettext
class ClientSession:
"""class for managing client sessions"""
@@ -25,21 +27,15 @@
self.endTime = None
self.orders = []
- def isReachable(self):
- if self.state == 0:
- return False
+ def calculatePrice(self, config):
+ time = self.startTime.secsTo(QtCore.QDateTime.currentDateTime())
+ if time/60 < int(config.price_fixedpriceminutes):
+ price = float(config.price_fixedprice)
else:
- return True
- def isWorking(self):
- if self.state == 1:
- return True
- else:
- return False
- def isLoggedIn(self):
- if self.state == 2:
- return True
- else:
- return False
+ #TODO: round the price using price_rounding
+ price = float(config.price_onehourprice)/3600 * time
+ return price
+
def toString(self):
"""returns current state as a string"""
if self.state == self.notConnected:
Modified: trunk/pykafe/server/session.py
===================================================================
--- trunk/pykafe/server/session.py 2007-06-03 16:24:43 UTC (rev 83)
+++ trunk/pykafe/server/session.py 2007-06-03 16:25:29 UTC (rev 84)
@@ -10,6 +10,8 @@
# Please read the COPYING file.
#
+from PyQt4 import QtCore
+
import locale, gettext
locale.setlocale(locale.LC_ALL, "C")
_ = gettext.translation("pyKafe_server", fallback=True).ugettext
@@ -25,21 +27,15 @@
self.endTime = None
self.orders = []
- def isReachable(self):
- if self.state == 0:
- return False
+ def calculatePrice(self, config):
+ time = self.startTime.secsTo(QtCore.QDateTime.currentDateTime())
+ if time/60 < int(config.price_fixedpriceminutes):
+ price = float(config.price_fixedprice)
else:
- return True
- def isWorking(self):
- if self.state == 1:
- return True
- else:
- return False
- def isLoggedIn(self):
- if self.state == 2:
- return True
- else:
- return False
+ #TODO: round the price using price_rounding
+ price = float(config.price_onehourprice)/3600 * time
+ return price
+
def toString(self):
"""returns current state as a string"""
if self.state == self.notConnected:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-03 16:24:42
|
Revision: 83
http://pykafe.svn.sourceforge.net/pykafe/?rev=83&view=rev
Author: jnmbk
Date: 2007-06-03 09:24:43 -0700 (Sun, 03 Jun 2007)
Log Message:
-----------
update translations
Modified Paths:
--------------
trunk/po/client_tr.po
trunk/po/pyKafe_client.pot
trunk/po/pyKafe_server.pot
trunk/po/server_tr.po
Modified: trunk/po/client_tr.po
===================================================================
--- trunk/po/client_tr.po 2007-06-03 10:08:15 UTC (rev 82)
+++ trunk/po/client_tr.po 2007-06-03 16:24:43 UTC (rev 83)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: client_tr\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-06-02 12:54+0300\n"
+"POT-Creation-Date: 2007-06-03 14:34+0300\n"
"PO-Revision-Date: 2007-05-30 12:34+0300\n"
"Last-Translator: Uğur Çetin <jn...@us...>\n"
"Language-Team: Turkish <tr...@li...>\n"
@@ -16,11 +16,11 @@
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
-#: ../pykafe/client/clientmain.py:88
+#: ../pykafe/client/clientmain.py:84
msgid "Are you sure?"
msgstr ""
-#: ../pykafe/client/clientmain.py:219
+#: ../pykafe/client/clientmain.py:204
msgid "Cafeteria"
msgstr ""
@@ -32,21 +32,21 @@
msgid "Can't connect to server"
msgstr ""
-#: ../pykafe/client/client.py:152
+#: ../pykafe/client/client.py:153
#, python-format
msgid "Client tried to say I'm here, state was: %s"
msgstr ""
-#: ../pykafe/client/client.py:143
+#: ../pykafe/client/client.py:144
#, python-format
msgid "Client tried to send opening request, state was: %s"
msgstr ""
-#: ../pykafe/client/clientmain.py:88
+#: ../pykafe/client/clientmain.py:84
msgid "Do you really want to logout?"
msgstr ""
-#: ../pykafe/client/clientmain.py:198
+#: ../pykafe/client/clientmain.py:183
msgid "Exit"
msgstr ""
@@ -58,7 +58,7 @@
msgid "Login"
msgstr "Giriş"
-#: ../pykafe/client/clientmain.py:218
+#: ../pykafe/client/clientmain.py:203
msgid "Logout"
msgstr ""
@@ -82,17 +82,17 @@
msgid "Ready"
msgstr ""
-#: ../pykafe/client/client.py:108
+#: ../pykafe/client/client.py:109
#, python-format
msgid "Received %s from server, state was: %s"
msgstr ""
-#: ../pykafe/client/client.py:101
+#: ../pykafe/client/client.py:102
#, python-format
msgid "Received ack from server, state was: %s"
msgstr ""
-#: ../pykafe/client/clientmain.py:222
+#: ../pykafe/client/clientmain.py:207
msgid "Remaining Time:"
msgstr ""
@@ -108,16 +108,16 @@
msgid "Server didn't give acknowledge"
msgstr ""
-#: ../pykafe/client/clientmain.py:222
+#: ../pykafe/client/clientmain.py:207
msgid "Starting Time:"
msgstr ""
-#: ../pykafe/client/client.py:89
+#: ../pykafe/client/client.py:91
#, python-format
msgid "Unauthorized server tried to connect, aborting connection: %s"
msgstr ""
-#: ../pykafe/client/clientmain.py:222
+#: ../pykafe/client/clientmain.py:207
msgid "Used Time:"
msgstr ""
@@ -133,6 +133,6 @@
msgid "Wrong username or password"
msgstr ""
-#: ../pykafe/client/clientmain.py:217
+#: ../pykafe/client/clientmain.py:202
msgid "pyKafe"
msgstr ""
Modified: trunk/po/pyKafe_client.pot
===================================================================
--- trunk/po/pyKafe_client.pot 2007-06-03 10:08:15 UTC (rev 82)
+++ trunk/po/pyKafe_client.pot 2007-06-03 16:24:43 UTC (rev 83)
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-06-02 12:54+0300\n"
+"POT-Creation-Date: 2007-06-03 14:39+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL...@li...>\n"
@@ -16,11 +16,11 @@
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../pykafe/client/clientmain.py:88
+#: ../pykafe/client/clientmain.py:84
msgid "Are you sure?"
msgstr ""
-#: ../pykafe/client/clientmain.py:219
+#: ../pykafe/client/clientmain.py:204
msgid "Cafeteria"
msgstr ""
@@ -32,21 +32,21 @@
msgid "Can't connect to server"
msgstr ""
-#: ../pykafe/client/client.py:152
+#: ../pykafe/client/client.py:153
#, python-format
msgid "Client tried to say I'm here, state was: %s"
msgstr ""
-#: ../pykafe/client/client.py:143
+#: ../pykafe/client/client.py:144
#, python-format
msgid "Client tried to send opening request, state was: %s"
msgstr ""
-#: ../pykafe/client/clientmain.py:88
+#: ../pykafe/client/clientmain.py:84
msgid "Do you really want to logout?"
msgstr ""
-#: ../pykafe/client/clientmain.py:198
+#: ../pykafe/client/clientmain.py:183
msgid "Exit"
msgstr ""
@@ -58,7 +58,7 @@
msgid "Login"
msgstr ""
-#: ../pykafe/client/clientmain.py:218
+#: ../pykafe/client/clientmain.py:203
msgid "Logout"
msgstr ""
@@ -82,17 +82,17 @@
msgid "Ready"
msgstr ""
-#: ../pykafe/client/client.py:108
+#: ../pykafe/client/client.py:109
#, python-format
msgid "Received %s from server, state was: %s"
msgstr ""
-#: ../pykafe/client/client.py:101
+#: ../pykafe/client/client.py:102
#, python-format
msgid "Received ack from server, state was: %s"
msgstr ""
-#: ../pykafe/client/clientmain.py:222
+#: ../pykafe/client/clientmain.py:207
msgid "Remaining Time:"
msgstr ""
@@ -108,16 +108,16 @@
msgid "Server didn't give acknowledge"
msgstr ""
-#: ../pykafe/client/clientmain.py:222
+#: ../pykafe/client/clientmain.py:207
msgid "Starting Time:"
msgstr ""
-#: ../pykafe/client/client.py:89
+#: ../pykafe/client/client.py:91
#, python-format
msgid "Unauthorized server tried to connect, aborting connection: %s"
msgstr ""
-#: ../pykafe/client/clientmain.py:222
+#: ../pykafe/client/clientmain.py:207
msgid "Used Time:"
msgstr ""
@@ -133,6 +133,6 @@
msgid "Wrong username or password"
msgstr ""
-#: ../pykafe/client/clientmain.py:217
+#: ../pykafe/client/clientmain.py:202
msgid "pyKafe"
msgstr ""
Modified: trunk/po/pyKafe_server.pot
===================================================================
--- trunk/po/pyKafe_server.pot 2007-06-03 10:08:15 UTC (rev 82)
+++ trunk/po/pyKafe_server.pot 2007-06-03 16:24:43 UTC (rev 83)
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-06-02 12:54+0300\n"
+"POT-Creation-Date: 2007-06-03 14:39+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL...@li...>\n"
@@ -16,29 +16,25 @@
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../pykafe/server/server.py:516
-msgid "About PyKafe"
-msgstr ""
-
-#: ../pykafe/server/mainwindow.py:682
+#: ../pykafe/server/mainwindow.py:685
msgid "About Qt"
msgstr ""
-#: ../pykafe/server/mainwindow.py:681
+#: ../pykafe/server/mainwindow.py:684 ../pykafe/server/server.py:528
msgid "About pyKafe"
msgstr ""
-#: ../pykafe/server/mainwindow.py:635 ../pykafe/server/mainwindow.py:643
-#: ../pykafe/server/mainwindow.py:653 ../pykafe/server/settingswindow.py:375
+#: ../pykafe/server/mainwindow.py:638 ../pykafe/server/mainwindow.py:646
+#: ../pykafe/server/mainwindow.py:656 ../pykafe/server/settingswindow.py:375
#: ../pykafe/server/settingswindow.py:384
msgid "Add"
msgstr ""
-#: ../pykafe/server/server.py:374
+#: ../pykafe/server/server.py:379 ../pykafe/server/server.py:380
msgid "Added member"
msgstr ""
-#: ../pykafe/server/server.py:479
+#: ../pykafe/server/server.py:491
msgid "Added product"
msgstr ""
@@ -46,17 +42,17 @@
msgid "Addres:"
msgstr ""
-#: ../pykafe/server/settings.py:144 ../pykafe/server/settings.py:176
+#: ../pykafe/server/settings.py:169 ../pykafe/server/settings.py:201
msgid "All cashier information must be filled"
msgstr ""
-#: ../pykafe/server/server.py:366 ../pykafe/server/server.py:396
+#: ../pykafe/server/server.py:371 ../pykafe/server/server.py:402
msgid "All member information must be filled"
msgstr ""
-#: ../pykafe/server/server.py:314 ../pykafe/server/server.py:347
-#: ../pykafe/server/server.py:422 ../pykafe/server/server.py:509
-#: ../pykafe/server/settings.py:161
+#: ../pykafe/server/server.py:319 ../pykafe/server/server.py:352
+#: ../pykafe/server/server.py:428 ../pykafe/server/server.py:521
+#: ../pykafe/server/settings.py:186
msgid "Are you sure?"
msgstr ""
@@ -64,7 +60,7 @@
msgid "Ask password when opening"
msgstr ""
-#: ../pykafe/server/server.py:516
+#: ../pykafe/server/server.py:528
msgid "Authors:"
msgstr ""
@@ -72,21 +68,21 @@
msgid "Browse"
msgstr ""
-#: ../pykafe/server/mainwindow.py:636
+#: ../pykafe/server/mainwindow.py:639
msgid "Cafeteria Stocks"
msgstr ""
-#: ../pykafe/server/server.py:271 ../pykafe/server/server.py:288
-#: ../pykafe/server/server.py:310 ../pykafe/server/server.py:331
-#: ../pykafe/server/server.py:345
+#: ../pykafe/server/server.py:276 ../pykafe/server/server.py:293
+#: ../pykafe/server/server.py:315 ../pykafe/server/server.py:336
+#: ../pykafe/server/server.py:350
msgid "Can't connect to client"
msgstr ""
-#: ../pykafe/server/mainwindow.py:632
+#: ../pykafe/server/mainwindow.py:635
msgid "Cancel"
msgstr ""
-#: ../pykafe/server/mainwindow.py:671
+#: ../pykafe/server/mainwindow.py:674
msgid "Cashier"
msgstr ""
@@ -98,95 +94,95 @@
msgid "Cashiers"
msgstr ""
-#: ../pykafe/server/mainwindow.py:614
+#: ../pykafe/server/mainwindow.py:617
msgid "Change"
msgstr ""
-#: ../pykafe/server/server.py:267 ../pykafe/server/server.py:284
-#: ../pykafe/server/server.py:306 ../pykafe/server/server.py:328
-#: ../pykafe/server/server.py:341
+#: ../pykafe/server/server.py:272 ../pykafe/server/server.py:289
+#: ../pykafe/server/server.py:311 ../pykafe/server/server.py:333
+#: ../pykafe/server/server.py:346
msgid "Choose a client first"
msgstr ""
-#: ../pykafe/server/mainwindow.py:648
+#: ../pykafe/server/mainwindow.py:651
msgid "Clear"
msgstr ""
-#: ../pykafe/server/mainwindow.py:649
+#: ../pykafe/server/mainwindow.py:652
msgid "Clears filter"
msgstr ""
-#: ../pykafe/server/server.py:276 ../pykafe/server/server.py:291
+#: ../pykafe/server/server.py:281 ../pykafe/server/server.py:296
msgid "Client is already logged in"
msgstr ""
-#: ../pykafe/server/server.py:312
+#: ../pykafe/server/server.py:317
msgid "Client is already stopped"
msgstr ""
-#: ../pykafe/server/mainwindow.py:672 ../pykafe/server/mainwindow.py:683
+#: ../pykafe/server/mainwindow.py:675 ../pykafe/server/mainwindow.py:686
msgid "Computer"
msgstr ""
-#: ../pykafe/server/mainwindow.py:626
+#: ../pykafe/server/mainwindow.py:629
msgid "Computer ID"
msgstr ""
-#: ../pykafe/server/server.py:224
+#: ../pykafe/server/server.py:227
msgid "Connection Error"
msgstr ""
-#: ../pykafe/server/mainwindow.py:680
+#: ../pykafe/server/mainwindow.py:683
msgid "Contents"
msgstr ""
-#: ../pykafe/server/mainwindow.py:630 ../pykafe/server/mainwindow.py:638
+#: ../pykafe/server/mainwindow.py:633 ../pykafe/server/mainwindow.py:641
msgid "Cost"
msgstr ""
-#: ../pykafe/server/mainwindow.py:668
+#: ../pykafe/server/mainwindow.py:671
msgid "Date"
msgstr ""
-#: ../pykafe/server/mainwindow.py:662
+#: ../pykafe/server/mainwindow.py:665
msgid "Debt:"
msgstr ""
-#: ../pykafe/server/mainwindow.py:633 ../pykafe/server/mainwindow.py:645
-#: ../pykafe/server/mainwindow.py:655 ../pykafe/server/settingswindow.py:376
+#: ../pykafe/server/mainwindow.py:636 ../pykafe/server/mainwindow.py:648
+#: ../pykafe/server/mainwindow.py:658 ../pykafe/server/settingswindow.py:376
#: ../pykafe/server/settingswindow.py:386
msgid "Delete"
msgstr ""
-#: ../pykafe/server/server.py:428
+#: ../pykafe/server/server.py:434
msgid "Deleted member"
msgstr ""
-#: ../pykafe/server/server.py:513
+#: ../pykafe/server/server.py:525
msgid "Deleted product"
msgstr ""
-#: ../pykafe/server/mainwindow.py:670
+#: ../pykafe/server/mainwindow.py:673
msgid "Description"
msgstr ""
-#: ../pykafe/server/settings.py:161
+#: ../pykafe/server/settings.py:186
msgid "Do you really want to delete this cashier?"
msgstr ""
-#: ../pykafe/server/server.py:422
+#: ../pykafe/server/server.py:428
msgid "Do you really want to delete this member?"
msgstr ""
-#: ../pykafe/server/server.py:509
+#: ../pykafe/server/server.py:521
msgid "Do you really want to delete this product?"
msgstr ""
-#: ../pykafe/server/server.py:347
+#: ../pykafe/server/server.py:352
msgid "Do you really want to shutdown this client?"
msgstr ""
-#: ../pykafe/server/server.py:314
+#: ../pykafe/server/server.py:319
msgid "Do you really want to stop this client?"
msgstr ""
@@ -194,51 +190,51 @@
msgid "Enable Internet Filter"
msgstr ""
-#: ../pykafe/server/mainwindow.py:622
+#: ../pykafe/server/mainwindow.py:625
msgid "End Time"
msgstr ""
-#: ../pykafe/server/mainwindow.py:666
+#: ../pykafe/server/mainwindow.py:669
msgid "Ends"
msgstr ""
-#: ../pykafe/server/server.py:293
+#: ../pykafe/server/server.py:298
msgid "Enter time"
msgstr ""
-#: ../pykafe/server/server.py:293
+#: ../pykafe/server/server.py:298
msgid "Enter time in minutes"
msgstr ""
-#: ../pykafe/server/mainwindow.py:684
+#: ../pykafe/server/mainwindow.py:687
msgid "Entertainment"
msgstr ""
-#: ../pykafe/server/passwordwindow.py:88 ../pykafe/server/server.py:271
-#: ../pykafe/server/server.py:288 ../pykafe/server/server.py:310
-#: ../pykafe/server/server.py:331 ../pykafe/server/server.py:345
-#: ../pykafe/server/server.py:355 ../pykafe/server/server.py:366
-#: ../pykafe/server/server.py:376 ../pykafe/server/server.py:381
-#: ../pykafe/server/server.py:385 ../pykafe/server/server.py:396
-#: ../pykafe/server/server.py:405 ../pykafe/server/server.py:414
-#: ../pykafe/server/server.py:420 ../pykafe/server/server.py:471
-#: ../pykafe/server/server.py:474 ../pykafe/server/server.py:481
-#: ../pykafe/server/server.py:486 ../pykafe/server/server.py:492
-#: ../pykafe/server/server.py:495 ../pykafe/server/server.py:502
-#: ../pykafe/server/server.py:507 ../pykafe/server/settings.py:61
-#: ../pykafe/server/settings.py:69 ../pykafe/server/settings.py:77
-#: ../pykafe/server/settings.py:144 ../pykafe/server/settings.py:151
-#: ../pykafe/server/settings.py:155 ../pykafe/server/settings.py:159
-#: ../pykafe/server/settings.py:170 ../pykafe/server/settings.py:176
-#: ../pykafe/server/settings.py:184 ../pykafe/server/settings.py:191
+#: ../pykafe/server/passwordwindow.py:88 ../pykafe/server/server.py:276
+#: ../pykafe/server/server.py:293 ../pykafe/server/server.py:315
+#: ../pykafe/server/server.py:336 ../pykafe/server/server.py:350
+#: ../pykafe/server/server.py:360 ../pykafe/server/server.py:371
+#: ../pykafe/server/server.py:382 ../pykafe/server/server.py:387
+#: ../pykafe/server/server.py:391 ../pykafe/server/server.py:402
+#: ../pykafe/server/server.py:411 ../pykafe/server/server.py:420
+#: ../pykafe/server/server.py:426 ../pykafe/server/server.py:483
+#: ../pykafe/server/server.py:486 ../pykafe/server/server.py:493
+#: ../pykafe/server/server.py:498 ../pykafe/server/server.py:504
+#: ../pykafe/server/server.py:507 ../pykafe/server/server.py:514
+#: ../pykafe/server/server.py:519 ../pykafe/server/settings.py:63
+#: ../pykafe/server/settings.py:71 ../pykafe/server/settings.py:79
+#: ../pykafe/server/settings.py:169 ../pykafe/server/settings.py:176
+#: ../pykafe/server/settings.py:180 ../pykafe/server/settings.py:184
+#: ../pykafe/server/settings.py:195 ../pykafe/server/settings.py:201
+#: ../pykafe/server/settings.py:209 ../pykafe/server/settings.py:216
msgid "Error"
msgstr ""
-#: ../pykafe/server/mainwindow.py:685
+#: ../pykafe/server/mainwindow.py:688
msgid "Exit"
msgstr ""
-#: ../pykafe/server/mainwindow.py:678
+#: ../pykafe/server/mainwindow.py:680
msgid "File"
msgstr ""
@@ -250,7 +246,7 @@
msgid "Filtered Addresses"
msgstr ""
-#: ../pykafe/server/mainwindow.py:650
+#: ../pykafe/server/mainwindow.py:653
msgid "Find:"
msgstr ""
@@ -262,11 +258,11 @@
msgid "General"
msgstr ""
-#: ../pykafe/server/mainwindow.py:676
+#: ../pykafe/server/mainwindow.py:679
msgid "Help"
msgstr ""
-#: ../pykafe/server/mainwindow.py:617 ../pykafe/server/mainwindow.py:628
+#: ../pykafe/server/mainwindow.py:620 ../pykafe/server/mainwindow.py:631
msgid "ID"
msgstr ""
@@ -274,14 +270,14 @@
msgid "If selected, cashier password will be asked on opening"
msgstr ""
-#: ../pykafe/server/mainwindow.py:674
+#: ../pykafe/server/mainwindow.py:677
msgid "Income"
msgstr ""
-#: ../pykafe/server/server.py:267 ../pykafe/server/server.py:276
-#: ../pykafe/server/server.py:284 ../pykafe/server/server.py:291
-#: ../pykafe/server/server.py:306 ../pykafe/server/server.py:312
-#: ../pykafe/server/server.py:328 ../pykafe/server/server.py:341
+#: ../pykafe/server/server.py:272 ../pykafe/server/server.py:281
+#: ../pykafe/server/server.py:289 ../pykafe/server/server.py:296
+#: ../pykafe/server/server.py:311 ../pykafe/server/server.py:317
+#: ../pykafe/server/server.py:333 ../pykafe/server/server.py:346
msgid "Information"
msgstr ""
@@ -289,8 +285,8 @@
msgid "Internet Filter"
msgstr ""
-#: ../pykafe/server/mainwindow.py:625 ../pykafe/server/mainwindow.py:629
-#: ../pykafe/server/mainwindow.py:637 ../pykafe/server/mainwindow.py:642
+#: ../pykafe/server/mainwindow.py:628 ../pykafe/server/mainwindow.py:632
+#: ../pykafe/server/mainwindow.py:640 ../pykafe/server/mainwindow.py:645
msgid "Item"
msgstr ""
@@ -298,47 +294,51 @@
msgid "Logged In"
msgstr ""
-#: ../pykafe/server/mainwindow.py:675
+#: ../pykafe/server/mainwindow.py:678
msgid "Logs"
msgstr ""
-#: ../pykafe/server/mainwindow.py:623
+#: ../pykafe/server/mainwindow.py:626
msgid "Main"
msgstr ""
-#: ../pykafe/server/mainwindow.py:673
+#: ../pykafe/server/mainwindow.py:676
msgid "Member"
msgstr ""
-#: ../pykafe/server/mainwindow.py:652
+#: ../pykafe/server/mainwindow.py:655
msgid "Member Information"
msgstr ""
-#: ../pykafe/server/mainwindow.py:647
+#: ../pykafe/server/mainwindow.py:650
msgid "Member List"
msgstr ""
-#: ../pykafe/server/mainwindow.py:667
+#: ../pykafe/server/server.py:85
+msgid "Member logged in"
+msgstr ""
+
+#: ../pykafe/server/mainwindow.py:670
msgid "Members"
msgstr ""
-#: ../pykafe/server/server.py:516
+#: ../pykafe/server/server.py:528
msgid "Mentor:"
msgstr ""
-#: ../pykafe/server/mainwindow.py:620
+#: ../pykafe/server/mainwindow.py:623
msgid "Money"
msgstr ""
-#: ../pykafe/server/mainwindow.py:613
+#: ../pykafe/server/mainwindow.py:616
msgid "Moves user to another computer"
msgstr ""
-#: ../pykafe/server/mainwindow.py:679
+#: ../pykafe/server/mainwindow.py:681
msgid "New"
msgstr ""
-#: ../pykafe/server/mainwindow.py:660
+#: ../pykafe/server/mainwindow.py:663
msgid "Normal"
msgstr ""
@@ -350,32 +350,32 @@
msgid "Not ready"
msgstr ""
-#: ../pykafe/server/mainwindow.py:611
+#: ../pykafe/server/mainwindow.py:614
msgid "Opens remote desktop connection"
msgstr ""
-#: ../pykafe/server/mainwindow.py:609
+#: ../pykafe/server/mainwindow.py:612
msgid "Opens settings for this computer"
msgstr ""
-#: ../pykafe/server/mainwindow.py:624 ../pykafe/server/mainwindow.py:646
+#: ../pykafe/server/mainwindow.py:627 ../pykafe/server/mainwindow.py:649
msgid "Orders"
msgstr ""
-#: ../pykafe/server/mainwindow.py:658 ../pykafe/server/passwordwindow.py:76
+#: ../pykafe/server/mainwindow.py:661 ../pykafe/server/passwordwindow.py:76
#: ../pykafe/server/settingswindow.py:383
msgid "Password:"
msgstr ""
-#: ../pykafe/server/mainwindow.py:657
+#: ../pykafe/server/mainwindow.py:660
msgid "Paying Type:"
msgstr ""
-#: ../pykafe/server/mainwindow.py:659
+#: ../pykafe/server/mainwindow.py:662
msgid "Pre Paid"
msgstr ""
-#: ../pykafe/server/mainwindow.py:641
+#: ../pykafe/server/mainwindow.py:644
msgid "Price"
msgstr ""
@@ -383,7 +383,7 @@
msgid "Price for one hour:"
msgstr ""
-#: ../pykafe/server/server.py:474 ../pykafe/server/server.py:495
+#: ../pykafe/server/server.py:486 ../pykafe/server/server.py:507
msgid "Price must be bigger than 0"
msgstr ""
@@ -395,20 +395,16 @@
msgid "Pricing"
msgstr ""
-#: ../pykafe/server/server.py:481 ../pykafe/server/server.py:502
+#: ../pykafe/server/server.py:493 ../pykafe/server/server.py:514
msgid "Product name must be unique"
msgstr ""
-#: ../pykafe/server/mainwindow.py:602
-msgid "PyKafe"
-msgstr ""
-
#: ../pykafe/server/settingswindow.py:363
msgid "PyKafe Settings"
msgstr ""
-#: ../pykafe/server/mainwindow.py:627 ../pykafe/server/mainwindow.py:631
-#: ../pykafe/server/mainwindow.py:639 ../pykafe/server/mainwindow.py:640
+#: ../pykafe/server/mainwindow.py:630 ../pykafe/server/mainwindow.py:634
+#: ../pykafe/server/mainwindow.py:642 ../pykafe/server/mainwindow.py:643
msgid "Quantity"
msgstr ""
@@ -416,15 +412,15 @@
msgid "Ready"
msgstr ""
-#: ../pykafe/server/mainwindow.py:663 ../pykafe/server/settingswindow.py:381
+#: ../pykafe/server/mainwindow.py:666 ../pykafe/server/settingswindow.py:381
msgid "Real Name:"
msgstr ""
-#: ../pykafe/server/mainwindow.py:612
+#: ../pykafe/server/mainwindow.py:615
msgid "Remote"
msgstr ""
-#: ../pykafe/server/mainwindow.py:656 ../pykafe/server/settingswindow.py:387
+#: ../pykafe/server/mainwindow.py:659 ../pykafe/server/settingswindow.py:387
msgid "Reports"
msgstr ""
@@ -432,119 +428,124 @@
msgid "Requested Opening"
msgstr ""
-#: ../pykafe/server/settings.py:105
+#: ../pykafe/server/settings.py:108
msgid "Select Filter File"
msgstr ""
-#: ../pykafe/server/mainwindow.py:610
+#: ../pykafe/server/mainwindow.py:613
msgid "Settings"
msgstr ""
-#: ../pykafe/server/mainwindow.py:686
+#: ../pykafe/server/mainwindow.py:689
msgid "Settings..."
msgstr ""
-#: ../pykafe/server/mainwindow.py:616
+#: ../pykafe/server/mainwindow.py:619
msgid "Shutdown"
msgstr ""
-#: ../pykafe/server/mainwindow.py:615
+#: ../pykafe/server/mainwindow.py:618
msgid "Shuts down selected computer"
msgstr ""
-#: ../pykafe/server/server.py:110
+#: ../pykafe/server/server.py:88
msgid "Someone entered wrong password or username"
msgstr ""
-#: ../pykafe/server/mainwindow.py:608
+#: ../pykafe/server/mainwindow.py:611
msgid "Start"
msgstr ""
-#: ../pykafe/server/server.py:355 ../pykafe/server/server.py:381
+#: ../pykafe/server/server.py:360 ../pykafe/server/server.py:387
msgid "Start date must be smaller than end date"
msgstr ""
-#: ../pykafe/server/mainwindow.py:665
+#: ../pykafe/server/mainwindow.py:668
msgid "Starts"
msgstr ""
-#: ../pykafe/server/mainwindow.py:607
+#: ../pykafe/server/mainwindow.py:610
msgid "Starts selected computer for usage"
msgstr ""
-#: ../pykafe/server/mainwindow.py:603
+#: ../pykafe/server/mainwindow.py:606
msgid "Starts selected computer for usage (timed)"
msgstr ""
-#: ../pykafe/server/mainwindow.py:618
+#: ../pykafe/server/server.py:175
+#, python-format
+msgid "State changed to %s"
+msgstr ""
+
+#: ../pykafe/server/mainwindow.py:621
msgid "Status"
msgstr ""
-#: ../pykafe/server/mainwindow.py:606
+#: ../pykafe/server/mainwindow.py:609
msgid "Stop"
msgstr ""
-#: ../pykafe/server/mainwindow.py:664
+#: ../pykafe/server/mainwindow.py:667
msgid "Subscribing period:"
msgstr ""
-#: ../pykafe/server/mainwindow.py:605
+#: ../pykafe/server/mainwindow.py:608
msgid "Switches to login state"
msgstr ""
-#: ../pykafe/server/settings.py:155
+#: ../pykafe/server/settings.py:180
msgid "There should be one cashier at least"
msgstr ""
-#: ../pykafe/server/mainwindow.py:604
+#: ../pykafe/server/mainwindow.py:607
msgid "Timed"
msgstr ""
-#: ../pykafe/server/mainwindow.py:677
+#: ../pykafe/server/mainwindow.py:682
msgid "Tools"
msgstr ""
-#: ../pykafe/server/mainwindow.py:669
+#: ../pykafe/server/mainwindow.py:672
msgid "Type"
msgstr ""
-#: ../pykafe/server/mainwindow.py:651
+#: ../pykafe/server/mainwindow.py:654
msgid "Type some letters to filter"
msgstr ""
-#: ../pykafe/server/server.py:223 ../pykafe/server/server.py:224
+#: ../pykafe/server/server.py:226 ../pykafe/server/server.py:227
#, python-format
msgid "Unable to start server: %s"
msgstr ""
-#: ../pykafe/server/mainwindow.py:634 ../pykafe/server/mainwindow.py:644
-#: ../pykafe/server/mainwindow.py:654 ../pykafe/server/settingswindow.py:385
+#: ../pykafe/server/mainwindow.py:637 ../pykafe/server/mainwindow.py:647
+#: ../pykafe/server/mainwindow.py:657 ../pykafe/server/settingswindow.py:385
msgid "Update"
msgstr ""
-#: ../pykafe/server/server.py:403 ../pykafe/server/server.py:412
+#: ../pykafe/server/server.py:409 ../pykafe/server/server.py:418
msgid "Updated member information"
msgstr ""
-#: ../pykafe/server/server.py:500
+#: ../pykafe/server/server.py:512
msgid "Updated product"
msgstr ""
-#: ../pykafe/server/mainwindow.py:621
+#: ../pykafe/server/mainwindow.py:624
msgid "Usage Time"
msgstr ""
-#: ../pykafe/server/mainwindow.py:619
+#: ../pykafe/server/mainwindow.py:622
msgid "User"
msgstr ""
-#: ../pykafe/server/server.py:376 ../pykafe/server/server.py:405
-#: ../pykafe/server/server.py:414 ../pykafe/server/settings.py:151
-#: ../pykafe/server/settings.py:184 ../pykafe/server/settings.py:191
+#: ../pykafe/server/server.py:382 ../pykafe/server/server.py:411
+#: ../pykafe/server/server.py:420 ../pykafe/server/settings.py:176
+#: ../pykafe/server/settings.py:209 ../pykafe/server/settings.py:216
msgid "Username must be unique"
msgstr ""
-#: ../pykafe/server/mainwindow.py:661 ../pykafe/server/passwordwindow.py:75
+#: ../pykafe/server/mainwindow.py:664 ../pykafe/server/passwordwindow.py:75
#: ../pykafe/server/settingswindow.py:382
msgid "Username:"
msgstr ""
@@ -557,38 +558,34 @@
msgid "Wrong username or password"
msgstr ""
-#: ../pykafe/server/settings.py:61
+#: ../pykafe/server/settings.py:63
msgid "You didn't enter a valid address"
msgstr ""
-#: ../pykafe/server/server.py:471 ../pykafe/server/server.py:492
+#: ../pykafe/server/server.py:483 ../pykafe/server/server.py:504
msgid "You must enter a product name"
msgstr ""
-#: ../pykafe/server/settings.py:159 ../pykafe/server/settings.py:170
+#: ../pykafe/server/settings.py:184 ../pykafe/server/settings.py:195
msgid "You must select a cashier first"
msgstr ""
-#: ../pykafe/server/settings.py:69 ../pykafe/server/settings.py:77
+#: ../pykafe/server/settings.py:71 ../pykafe/server/settings.py:79
msgid "You must select a filter first"
msgstr ""
-#: ../pykafe/server/server.py:385 ../pykafe/server/server.py:420
+#: ../pykafe/server/server.py:391 ../pykafe/server/server.py:426
msgid "You must select a member first"
msgstr ""
-#: ../pykafe/server/server.py:486 ../pykafe/server/server.py:507
+#: ../pykafe/server/server.py:498 ../pykafe/server/server.py:519
msgid "You must select a product first"
msgstr ""
-#: ../pykafe/server/server.py:221
+#: ../pykafe/server/server.py:224
msgid "cashier login to server"
msgstr ""
-#: ../pykafe/server/server.py:107
-msgid "member login"
-msgstr ""
-
#: ../pykafe/server/settingswindow.py:369
msgid "minutes:"
msgstr ""
Modified: trunk/po/server_tr.po
===================================================================
--- trunk/po/server_tr.po 2007-06-03 10:08:15 UTC (rev 82)
+++ trunk/po/server_tr.po 2007-06-03 16:24:43 UTC (rev 83)
@@ -7,8 +7,8 @@
msgstr ""
"Project-Id-Version: server_tr\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-06-02 12:54+0300\n"
-"PO-Revision-Date: 2007-06-01 12:54+0300\n"
+"POT-Creation-Date: 2007-06-03 14:39+0300\n"
+"PO-Revision-Date: 2007-06-03 14:39+0300\n"
"Last-Translator: Uğur Çetin <jn...@us...>\n"
"Language-Team: Turkish <tr...@li...>\n"
"MIME-Version: 1.0\n"
@@ -16,29 +16,25 @@
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
-#: ../pykafe/server/server.py:516
-msgid "About PyKafe"
-msgstr ""
-
-#: ../pykafe/server/mainwindow.py:682
+#: ../pykafe/server/mainwindow.py:685
msgid "About Qt"
-msgstr ""
+msgstr "Qt Hakkında"
-#: ../pykafe/server/mainwindow.py:681
+#: ../pykafe/server/mainwindow.py:684 ../pykafe/server/server.py:528
msgid "About pyKafe"
-msgstr ""
+msgstr "pyKafe Hakkında"
-#: ../pykafe/server/mainwindow.py:635 ../pykafe/server/mainwindow.py:643
-#: ../pykafe/server/mainwindow.py:653 ../pykafe/server/settingswindow.py:375
+#: ../pykafe/server/mainwindow.py:638 ../pykafe/server/mainwindow.py:646
+#: ../pykafe/server/mainwindow.py:656 ../pykafe/server/settingswindow.py:375
#: ../pykafe/server/settingswindow.py:384
msgid "Add"
msgstr "Ekle"
-#: ../pykafe/server/server.py:374
+#: ../pykafe/server/server.py:379 ../pykafe/server/server.py:380
msgid "Added member"
msgstr "Üye eklendi"
-#: ../pykafe/server/server.py:479
+#: ../pykafe/server/server.py:491
msgid "Added product"
msgstr "Ürün eklendi"
@@ -46,17 +42,17 @@
msgid "Addres:"
msgstr "Adres:"
-#: ../pykafe/server/settings.py:144 ../pykafe/server/settings.py:176
+#: ../pykafe/server/settings.py:169 ../pykafe/server/settings.py:201
msgid "All cashier information must be filled"
msgstr "Bütün kasiyer bilgileri doldurulmalıdır"
-#: ../pykafe/server/server.py:366 ../pykafe/server/server.py:396
+#: ../pykafe/server/server.py:371 ../pykafe/server/server.py:402
msgid "All member information must be filled"
msgstr "Bütün üye bilgileri doldurulmalıdır"
-#: ../pykafe/server/server.py:314 ../pykafe/server/server.py:347
-#: ../pykafe/server/server.py:422 ../pykafe/server/server.py:509
-#: ../pykafe/server/settings.py:161
+#: ../pykafe/server/server.py:319 ../pykafe/server/server.py:352
+#: ../pykafe/server/server.py:428 ../pykafe/server/server.py:521
+#: ../pykafe/server/settings.py:186
msgid "Are you sure?"
msgstr "Emin misiniz?"
@@ -64,7 +60,7 @@
msgid "Ask password when opening"
msgstr "Açılırken parola sor"
-#: ../pykafe/server/server.py:516
+#: ../pykafe/server/server.py:528
msgid "Authors:"
msgstr "Yazarlar:"
@@ -72,21 +68,21 @@
msgid "Browse"
msgstr "Gözat"
-#: ../pykafe/server/mainwindow.py:636
+#: ../pykafe/server/mainwindow.py:639
msgid "Cafeteria Stocks"
msgstr ""
-#: ../pykafe/server/server.py:271 ../pykafe/server/server.py:288
-#: ../pykafe/server/server.py:310 ../pykafe/server/server.py:331
-#: ../pykafe/server/server.py:345
+#: ../pykafe/server/server.py:276 ../pykafe/server/server.py:293
+#: ../pykafe/server/server.py:315 ../pykafe/server/server.py:336
+#: ../pykafe/server/server.py:350
msgid "Can't connect to client"
msgstr "İstemciyle bağlantı kurulamıyor"
-#: ../pykafe/server/mainwindow.py:632
+#: ../pykafe/server/mainwindow.py:635
msgid "Cancel"
msgstr "İptal"
-#: ../pykafe/server/mainwindow.py:671
+#: ../pykafe/server/mainwindow.py:674
msgid "Cashier"
msgstr "Kasiyer"
@@ -98,95 +94,95 @@
msgid "Cashiers"
msgstr "Kasiyerler"
-#: ../pykafe/server/mainwindow.py:614
+#: ../pykafe/server/mainwindow.py:617
msgid "Change"
msgstr "Değiştir"
-#: ../pykafe/server/server.py:267 ../pykafe/server/server.py:284
-#: ../pykafe/server/server.py:306 ../pykafe/server/server.py:328
-#: ../pykafe/server/server.py:341
+#: ../pykafe/server/server.py:272 ../pykafe/server/server.py:289
+#: ../pykafe/server/server.py:311 ../pykafe/server/server.py:333
+#: ../pykafe/server/server.py:346
msgid "Choose a client first"
msgstr "Önce bir istemci seçin"
-#: ../pykafe/server/mainwindow.py:648
+#: ../pykafe/server/mainwindow.py:651
msgid "Clear"
msgstr "Temizle"
-#: ../pykafe/server/mainwindow.py:649
+#: ../pykafe/server/mainwindow.py:652
msgid "Clears filter"
msgstr "Filtreyi temizler"
-#: ../pykafe/server/server.py:276 ../pykafe/server/server.py:291
+#: ../pykafe/server/server.py:281 ../pykafe/server/server.py:296
msgid "Client is already logged in"
msgstr "İstemci zaten giriş yapmış"
-#: ../pykafe/server/server.py:312
+#: ../pykafe/server/server.py:317
msgid "Client is already stopped"
msgstr "İstemci zaten bekleme konumunda"
-#: ../pykafe/server/mainwindow.py:672 ../pykafe/server/mainwindow.py:683
+#: ../pykafe/server/mainwindow.py:675 ../pykafe/server/mainwindow.py:686
msgid "Computer"
msgstr "Bilgisayar"
-#: ../pykafe/server/mainwindow.py:626
+#: ../pykafe/server/mainwindow.py:629
msgid "Computer ID"
msgstr "Bilgisayar Adı"
-#: ../pykafe/server/server.py:224
+#: ../pykafe/server/server.py:227
msgid "Connection Error"
msgstr "Bağlantı Hatası"
-#: ../pykafe/server/mainwindow.py:680
+#: ../pykafe/server/mainwindow.py:683
msgid "Contents"
msgstr "İçindekiler"
-#: ../pykafe/server/mainwindow.py:630 ../pykafe/server/mainwindow.py:638
+#: ../pykafe/server/mainwindow.py:633 ../pykafe/server/mainwindow.py:641
msgid "Cost"
msgstr "Fiyat"
-#: ../pykafe/server/mainwindow.py:668
+#: ../pykafe/server/mainwindow.py:671
msgid "Date"
msgstr "Tarih"
-#: ../pykafe/server/mainwindow.py:662
+#: ../pykafe/server/mainwindow.py:665
msgid "Debt:"
msgstr "Borç:"
-#: ../pykafe/server/mainwindow.py:633 ../pykafe/server/mainwindow.py:645
-#: ../pykafe/server/mainwindow.py:655 ../pykafe/server/settingswindow.py:376
+#: ../pykafe/server/mainwindow.py:636 ../pykafe/server/mainwindow.py:648
+#: ../pykafe/server/mainwindow.py:658 ../pykafe/server/settingswindow.py:376
#: ../pykafe/server/settingswindow.py:386
msgid "Delete"
msgstr "Sil"
-#: ../pykafe/server/server.py:428
+#: ../pykafe/server/server.py:434
msgid "Deleted member"
msgstr "Üye silindi"
-#: ../pykafe/server/server.py:513
+#: ../pykafe/server/server.py:525
msgid "Deleted product"
msgstr "Ürün silindi"
-#: ../pykafe/server/mainwindow.py:670
+#: ../pykafe/server/mainwindow.py:673
msgid "Description"
msgstr "Tanım"
-#: ../pykafe/server/settings.py:161
+#: ../pykafe/server/settings.py:186
msgid "Do you really want to delete this cashier?"
msgstr "Bu kasiyeri silmek istediğinizden emin misiniz?"
-#: ../pykafe/server/server.py:422
+#: ../pykafe/server/server.py:428
msgid "Do you really want to delete this member?"
msgstr "Bu üyeyi silmek istediğinizden emin misiniz?"
-#: ../pykafe/server/server.py:509
+#: ../pykafe/server/server.py:521
msgid "Do you really want to delete this product?"
msgstr "Bu ürünü silmek istediğinizden emin misiniz?"
-#: ../pykafe/server/server.py:347
+#: ../pykafe/server/server.py:352
msgid "Do you really want to shutdown this client?"
msgstr "Bu istemciyi kapatmak istediğinizden emin misiniz?"
-#: ../pykafe/server/server.py:314
+#: ../pykafe/server/server.py:319
msgid "Do you really want to stop this client?"
msgstr "Bu istemciyi durdurmak istediğinizden emin misiniz?"
@@ -194,51 +190,51 @@
msgid "Enable Internet Filter"
msgstr "İnternet Filtresini Etkinleştir"
-#: ../pykafe/server/mainwindow.py:622
+#: ../pykafe/server/mainwindow.py:625
msgid "End Time"
msgstr "Bitiş Zamanı"
-#: ../pykafe/server/mainwindow.py:666
+#: ../pykafe/server/mainwindow.py:669
msgid "Ends"
msgstr "Bitiş"
-#: ../pykafe/server/server.py:293
+#: ../pykafe/server/server.py:298
msgid "Enter time"
msgstr "Zamanı girin"
-#: ../pykafe/server/server.py:293
+#: ../pykafe/server/server.py:298
msgid "Enter time in minutes"
msgstr "Dakika cinsinden zamanı girin"
-#: ../pykafe/server/mainwindow.py:684
+#: ../pykafe/server/mainwindow.py:687
msgid "Entertainment"
msgstr ""
-#: ../pykafe/server/passwordwindow.py:88 ../pykafe/server/server.py:271
-#: ../pykafe/server/server.py:288 ../pykafe/server/server.py:310
-#: ../pykafe/server/server.py:331 ../pykafe/server/server.py:345
-#: ../pykafe/server/server.py:355 ../pykafe/server/server.py:366
-#: ../pykafe/server/server.py:376 ../pykafe/server/server.py:381
-#: ../pykafe/server/server.py:385 ../pykafe/server/server.py:396
-#: ../pykafe/server/server.py:405 ../pykafe/server/server.py:414
-#: ../pykafe/server/server.py:420 ../pykafe/server/server.py:471
-#: ../pykafe/server/server.py:474 ../pykafe/server/server.py:481
-#: ../pykafe/server/server.py:486 ../pykafe/server/server.py:492
-#: ../pykafe/server/server.py:495 ../pykafe/server/server.py:502
-#: ../pykafe/server/server.py:507 ../pykafe/server/settings.py:61
-#: ../pykafe/server/settings.py:69 ../pykafe/server/settings.py:77
-#: ../pykafe/server/settings.py:144 ../pykafe/server/settings.py:151
-#: ../pykafe/server/settings.py:155 ../pykafe/server/settings.py:159
-#: ../pykafe/server/settings.py:170 ../pykafe/server/settings.py:176
-#: ../pykafe/server/settings.py:184 ../pykafe/server/settings.py:191
+#: ../pykafe/server/passwordwindow.py:88 ../pykafe/server/server.py:276
+#: ../pykafe/server/server.py:293 ../pykafe/server/server.py:315
+#: ../pykafe/server/server.py:336 ../pykafe/server/server.py:350
+#: ../pykafe/server/server.py:360 ../pykafe/server/server.py:371
+#: ../pykafe/server/server.py:382 ../pykafe/server/server.py:387
+#: ../pykafe/server/server.py:391 ../pykafe/server/server.py:402
+#: ../pykafe/server/server.py:411 ../pykafe/server/server.py:420
+#: ../pykafe/server/server.py:426 ../pykafe/server/server.py:483
+#: ../pykafe/server/server.py:486 ../pykafe/server/server.py:493
+#: ../pykafe/server/server.py:498 ../pykafe/server/server.py:504
+#: ../pykafe/server/server.py:507 ../pykafe/server/server.py:514
+#: ../pykafe/server/server.py:519 ../pykafe/server/settings.py:63
+#: ../pykafe/server/settings.py:71 ../pykafe/server/settings.py:79
+#: ../pykafe/server/settings.py:169 ../pykafe/server/settings.py:176
+#: ../pykafe/server/settings.py:180 ../pykafe/server/settings.py:184
+#: ../pykafe/server/settings.py:195 ../pykafe/server/settings.py:201
+#: ../pykafe/server/settings.py:209 ../pykafe/server/settings.py:216
msgid "Error"
msgstr "Hata"
-#: ../pykafe/server/mainwindow.py:685
+#: ../pykafe/server/mainwindow.py:688
msgid "Exit"
msgstr "Çıkış"
-#: ../pykafe/server/mainwindow.py:678
+#: ../pykafe/server/mainwindow.py:680
msgid "File"
msgstr "Dosya"
@@ -250,7 +246,7 @@
msgid "Filtered Addresses"
msgstr "Filtrelenen Adresler"
-#: ../pykafe/server/mainwindow.py:650
+#: ../pykafe/server/mainwindow.py:653
msgid "Find:"
msgstr "Bul:"
@@ -262,11 +258,11 @@
msgid "General"
msgstr "Genel"
-#: ../pykafe/server/mainwindow.py:676
+#: ../pykafe/server/mainwindow.py:679
msgid "Help"
msgstr "Yardım"
-#: ../pykafe/server/mainwindow.py:617 ../pykafe/server/mainwindow.py:628
+#: ../pykafe/server/mainwindow.py:620 ../pykafe/server/mainwindow.py:631
msgid "ID"
msgstr "Tanım"
@@ -274,14 +270,14 @@
msgid "If selected, cashier password will be asked on opening"
msgstr ""
-#: ../pykafe/server/mainwindow.py:674
+#: ../pykafe/server/mainwindow.py:677
msgid "Income"
msgstr "Gelir"
-#: ../pykafe/server/server.py:267 ../pykafe/server/server.py:276
-#: ../pykafe/server/server.py:284 ../pykafe/server/server.py:291
-#: ../pykafe/server/server.py:306 ../pykafe/server/server.py:312
-#: ../pykafe/server/server.py:328 ../pykafe/server/server.py:341
+#: ../pykafe/server/server.py:272 ../pykafe/server/server.py:281
+#: ../pykafe/server/server.py:289 ../pykafe/server/server.py:296
+#: ../pykafe/server/server.py:311 ../pykafe/server/server.py:317
+#: ../pykafe/server/server.py:333 ../pykafe/server/server.py:346
msgid "Information"
msgstr "Bilgi"
@@ -289,8 +285,8 @@
msgid "Internet Filter"
msgstr "İnternet Filtresi"
-#: ../pykafe/server/mainwindow.py:625 ../pykafe/server/mainwindow.py:629
-#: ../pykafe/server/mainwindow.py:637 ../pykafe/server/mainwindow.py:642
+#: ../pykafe/server/mainwindow.py:628 ../pykafe/server/mainwindow.py:632
+#: ../pykafe/server/mainwindow.py:640 ../pykafe/server/mainwindow.py:645
msgid "Item"
msgstr "Ürün"
@@ -298,47 +294,52 @@
msgid "Logged In"
msgstr "Giriş Yapmış"
-#: ../pykafe/server/mainwindow.py:675
+#: ../pykafe/server/mainwindow.py:678
msgid "Logs"
msgstr "Kayıtlar"
-#: ../pykafe/server/mainwindow.py:623
+#: ../pykafe/server/mainwindow.py:626
msgid "Main"
msgstr "Ana"
-#: ../pykafe/server/mainwindow.py:673
+#: ../pykafe/server/mainwindow.py:676
msgid "Member"
msgstr "Üye"
-#: ../pykafe/server/mainwindow.py:652
+#: ../pykafe/server/mainwindow.py:655
msgid "Member Information"
msgstr "Üye Bilgileri"
-#: ../pykafe/server/mainwindow.py:647
+#: ../pykafe/server/mainwindow.py:650
msgid "Member List"
msgstr "Üye Listesi"
-#: ../pykafe/server/mainwindow.py:667
+#: ../pykafe/server/server.py:85
+#, fuzzy
+msgid "Member logged in"
+msgstr "Üye Listesi"
+
+#: ../pykafe/server/mainwindow.py:670
msgid "Members"
msgstr "Üyeler"
-#: ../pykafe/server/server.py:516
+#: ../pykafe/server/server.py:528
msgid "Mentor:"
msgstr ""
-#: ../pykafe/server/mainwindow.py:620
+#: ../pykafe/server/mainwindow.py:623
msgid "Money"
msgstr "Para"
-#: ../pykafe/server/mainwindow.py:613
+#: ../pykafe/server/mainwindow.py:616
msgid "Moves user to another computer"
msgstr "Kullanıcıyı başka bilgisayara aktarır"
-#: ../pykafe/server/mainwindow.py:679
+#: ../pykafe/server/mainwindow.py:681
msgid "New"
msgstr "Yeni"
-#: ../pykafe/server/mainwindow.py:660
+#: ../pykafe/server/mainwindow.py:663
msgid "Normal"
msgstr ""
@@ -350,32 +351,32 @@
msgid "Not ready"
msgstr "Hazır değil"
-#: ../pykafe/server/mainwindow.py:611
+#: ../pykafe/server/mainwindow.py:614
msgid "Opens remote desktop connection"
msgstr "Uzak masaüstü bağlantısı kurar"
-#: ../pykafe/server/mainwindow.py:609
+#: ../pykafe/server/mainwindow.py:612
msgid "Opens settings for this computer"
msgstr ""
-#: ../pykafe/server/mainwindow.py:624 ../pykafe/server/mainwindow.py:646
+#: ../pykafe/server/mainwindow.py:627 ../pykafe/server/mainwindow.py:649
msgid "Orders"
msgstr "Siparişler"
-#: ../pykafe/server/mainwindow.py:658 ../pykafe/server/passwordwindow.py:76
+#: ../pykafe/server/mainwindow.py:661 ../pykafe/server/passwordwindow.py:76
#: ../pykafe/server/settingswindow.py:383
msgid "Password:"
msgstr "Parola:"
-#: ../pykafe/server/mainwindow.py:657
+#: ../pykafe/server/mainwindow.py:660
msgid "Paying Type:"
msgstr "Ödeme Türü"
-#: ../pykafe/server/mainwindow.py:659
+#: ../pykafe/server/mainwindow.py:662
msgid "Pre Paid"
msgstr "Ön Ödemeli"
-#: ../pykafe/server/mainwindow.py:641
+#: ../pykafe/server/mainwindow.py:644
msgid "Price"
msgstr "Fiyat"
@@ -383,7 +384,7 @@
msgid "Price for one hour:"
msgstr "Bir saatlik ücret:"
-#: ../pykafe/server/server.py:474 ../pykafe/server/server.py:495
+#: ../pykafe/server/server.py:486 ../pykafe/server/server.py:507
msgid "Price must be bigger than 0"
msgstr "Fiyat sıfırdan büyük olmalıdır"
@@ -395,20 +396,16 @@
msgid "Pricing"
msgstr ""
-#: ../pykafe/server/server.py:481 ../pykafe/server/server.py:502
+#: ../pykafe/server/server.py:493 ../pykafe/server/server.py:514
msgid "Product name must be unique"
msgstr ""
-#: ../pykafe/server/mainwindow.py:602
-msgid "PyKafe"
-msgstr ""
-
#: ../pykafe/server/settingswindow.py:363
msgid "PyKafe Settings"
msgstr "PyKafe Ayarları"
-#: ../pykafe/server/mainwindow.py:627 ../pykafe/server/mainwindow.py:631
-#: ../pykafe/server/mainwindow.py:639 ../pykafe/server/mainwindow.py:640
+#: ../pykafe/server/mainwindow.py:630 ../pykafe/server/mainwindow.py:634
+#: ../pykafe/server/mainwindow.py:642 ../pykafe/server/mainwindow.py:643
msgid "Quantity"
msgstr "Miktar"
@@ -416,15 +413,15 @@
msgid "Ready"
msgstr ""
-#: ../pykafe/server/mainwindow.py:663 ../pykafe/server/settingswindow.py:381
+#: ../pykafe/server/mainwindow.py:666 ../pykafe/server/settingswindow.py:381
msgid "Real Name:"
msgstr "Gerçek Adı:"
-#: ../pykafe/server/mainwindow.py:612
+#: ../pykafe/server/mainwindow.py:615
msgid "Remote"
msgstr ""
-#: ../pykafe/server/mainwindow.py:656 ../pykafe/server/settingswindow.py:387
+#: ../pykafe/server/mainwindow.py:659 ../pykafe/server/settingswindow.py:387
msgid "Reports"
msgstr ""
@@ -432,164 +429,164 @@
msgid "Requested Opening"
msgstr ""
-#: ../pykafe/server/settings.py:105
+#: ../pykafe/server/settings.py:108
msgid "Select Filter File"
msgstr ""
-#: ../pykafe/server/mainwindow.py:610
+#: ../pykafe/server/mainwindow.py:613
msgid "Settings"
msgstr ""
-#: ../pykafe/server/mainwindow.py:686
+#: ../pykafe/server/mainwindow.py:689
msgid "Settings..."
msgstr ""
-#: ../pykafe/server/mainwindow.py:616
+#: ../pykafe/server/mainwindow.py:619
msgid "Shutdown"
msgstr ""
-#: ../pykafe/server/mainwindow.py:615
+#: ../pykafe/server/mainwindow.py:618
msgid "Shuts down selected computer"
msgstr ""
-#: ../pykafe/server/server.py:110
+#: ../pykafe/server/server.py:88
msgid "Someone entered wrong password or username"
msgstr ""
-#: ../pykafe/server/mainwindow.py:608
+#: ../pykafe/server/mainwindow.py:611
msgid "Start"
msgstr "Başlat"
-#: ../pykafe/server/server.py:355 ../pykafe/server/server.py:381
+#: ../pykafe/server/server.py:360 ../pykafe/server/server.py:387
msgid "Start date must be smaller than end date"
msgstr ""
-#: ../pykafe/server/mainwindow.py:665
+#: ../pykafe/server/mainwindow.py:668
msgid "Starts"
msgstr "Başlangıç"
-#: ../pykafe/server/mainwindow.py:607
+#: ../pykafe/server/mainwindow.py:610
msgid "Starts selected computer for usage"
msgstr "Seçilen bilgisayarı kullanıma açar"
-#: ../pykafe/server/mainwindow.py:603
+#: ../pykafe/server/mainwindow.py:606
msgid "Starts selected computer for usage (timed)"
msgstr "Seçilen bilgisayarı süreli olarak kullanıma açar"
-#: ../pykafe/server/mainwindow.py:618
+#: ../pykafe/server/server.py:175
+#, python-format
+msgid "State changed to %s"
+msgstr "Durum %s olarak değiştirildi"
+
+#: ../pykafe/server/mainwindow.py:621
msgid "Status"
msgstr "Durum"
-#: ../pykafe/server/mainwindow.py:606
+#: ../pykafe/server/mainwindow.py:609
msgid "Stop"
msgstr "Durdur"
-#: ../pykafe/server/mainwindow.py:664
+#: ../pykafe/server/mainwindow.py:667
msgid "Subscribing period:"
msgstr "Üyelik süresi"
-#: ../pykafe/server/mainwindow.py:605
+#: ../pykafe/server/mainwindow.py:608
msgid "Switches to login state"
msgstr ""
-#: ../pykafe/server/settings.py:155
+#: ../pykafe/server/settings.py:180
msgid "There should be one cashier at least"
-msgstr ""
+msgstr "En az bir kasiyer bulunmalı"
-#: ../pykafe/server/mainwindow.py:604
+#: ../pykafe/server/mainwindow.py:607
msgid "Timed"
msgstr "Süreli"
-#: ../pykafe/server/mainwindow.py:677
+#: ../pykafe/server/mainwindow.py:682
msgid "Tools"
msgstr "Araçlar"
-#: ../pykafe/server/mainwindow.py:669
+#: ../pykafe/server/mainwindow.py:672
msgid "Type"
msgstr ""
-#: ../pykafe/server/mainwindow.py:651
+#: ../pykafe/server/mainwindow.py:654
msgid "Type some letters to filter"
msgstr ""
-#: ../pykafe/server/server.py:223 ../pykafe/server/server.py:224
+#: ../pykafe/server/server.py:226 ../pykafe/server/server.py:227
#, python-format
msgid "Unable to start server: %s"
msgstr "Sunucu başlatılamadı: %s"
-#: ../pykafe/server/mainwindow.py:634 ../pykafe/server/mainwindow.py:644
-#: ../pykafe/server/mainwindow.py:654 ../pykafe/server/settingswindow.py:385
+#: ../pykafe/server/mainwindow.py:637 ../pykafe/server/mainwindow.py:647
+#: ../pykafe/server/mainwindow.py:657 ../pykafe/server/settingswindow.py:385
msgid "Update"
msgstr "Güncelle"
-#: ../pykafe/server/server.py:403 ../pykafe/server/server.py:412
+#: ../pykafe/server/server.py:409 ../pykafe/server/server.py:418
msgid "Updated member information"
msgstr "Üye bilgisi güncellendi"
-#: ../pykafe/server/server.py:500
+#: ../pykafe/server/server.py:512
msgid "Updated product"
msgstr ""
-#: ../pykafe/server/mainwindow.py:621
+#: ../pykafe/server/mainwindow.py:624
msgid "Usage Time"
-msgstr ""
+msgstr "Kullanım Süresi"
-#: ../pykafe/server/mainwindow.py:619
+#: ../pykafe/server/mainwindow.py:622
msgid "User"
msgstr "Kullanıcı"
-#: ../pykafe/server/server.py:376 ../pykafe/server/server.py:405
-#: ../pykafe/server/server.py:414 ../pykafe/server/settings.py:151
-#: ../pykafe/server/settings.py:184 ../pykafe/server/settings.py:191
+#: ../pykafe/server/server.py:382 ../pykafe/server/server.py:411
+#: ../pykafe/server/server.py:420 ../pykafe/server/settings.py:176
+#: ../pykafe/server/settings.py:209 ../pykafe/server/settings.py:216
msgid "Username must be unique"
-msgstr ""
+msgstr "Kullanıcı adı tekrar etmemeli"
-#: ../pykafe/server/mainwindow.py:661 ../pykafe/server/passwordwindow.py:75
+#: ../pykafe/server/mainwindow.py:664 ../pykafe/server/passwordwindow.py:75
#: ../pykafe/server/settingswindow.py:382
msgid "Username:"
-msgstr ""
+msgstr "Kullanıcı adı:"
#: ../pykafe/server/session.py:54
msgid "Waiting for Payment"
-msgstr ""
+msgstr "Ödeme için bekliyor"
#: ../pykafe/server/passwordwindow.py:88
msgid "Wrong username or password"
-msgstr ""
+msgstr "Yanlış kullanıcı adı veya parola"
-#: ../pykafe/server/settings.py:61
+#: ../pykafe/server/settings.py:63
msgid "You didn't enter a valid address"
msgstr ""
-#: ../pykafe/server/server.py:471 ../pykafe/server/server.py:492
+#: ../pykafe/server/server.py:483 ../pykafe/server/server.py:504
msgid "You must enter a product name"
msgstr ""
-#: ../pykafe/server/settings.py:159 ../pykafe/server/settings.py:170
+#: ../pykafe/server/settings.py:184 ../pykafe/server/settings.py:195
msgid "You must select a cashier first"
msgstr ""
-#: ../pykafe/server/settings.py:69 ../pykafe/server/settings.py:77
+#: ../pykafe/server/settings.py:71 ../pykafe/server/settings.py:79
msgid "You must select a filter first"
msgstr ""
-#: ../pykafe/server/server.py:385 ../pykafe/server/server.py:420
+#: ../pykafe/server/server.py:391 ../pykafe/server/server.py:426
msgid "You must select a member first"
msgstr ""
-#: ../pykafe/server/server.py:486 ../pykafe/server/server.py:507
+#: ../pykafe/server/server.py:498 ../pykafe/server/server.py:519
msgid "You must select a product first"
msgstr ""
-#: ../pykafe/server/server.py:221
+#: ../pykafe/server/server.py:224
msgid "cashier login to server"
-msgstr ""
+msgstr "kasiyer sunucuyu başlattı"
-#: ../pykafe/server/server.py:107
-#, fuzzy
-msgid "member login"
-msgstr "Üye Listesi"
-
#: ../pykafe/server/settingswindow.py:369
msgid "minutes:"
-msgstr ""
+msgstr "dakika:"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jn...@us...> - 2007-06-03 10:08:17
|
Revision: 82
http://pykafe.svn.sourceforge.net/pykafe/?rev=82&view=rev
Author: jnmbk
Date: 2007-06-03 03:08:15 -0700 (Sun, 03 Jun 2007)
Log Message:
-----------
forgot to add this icon
Added Paths:
-----------
trunk/data/icons/fileopen.png
Added: trunk/data/icons/fileopen.png
===================================================================
(Binary files differ)
Property changes on: trunk/data/icons/fileopen.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|