[Pykafe-commits] SF.net SVN: pykafe: [93] trunk/pykafe/server
Status: Pre-Alpha
Brought to you by:
jnmbk
|
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.
|