make sure people on the waiting list get priority over new participants
git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3515 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
0cb79aabb2
commit
02fb505154
2 changed files with 23 additions and 6 deletions
|
@ -637,5 +637,3 @@ class RegistrationTemplateView(BaseView):
|
||||||
regs.unregister(toDelete)
|
regs.unregister(toDelete)
|
||||||
self.request.response.redirect(self.getNextUrl())
|
self.request.response.redirect(self.getNextUrl())
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -161,21 +161,30 @@ class Service(object):
|
||||||
def getToken(self):
|
def getToken(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
@property
|
def getAvailableCapacity(self, ignoreWaiting=False):
|
||||||
def availableCapacity(self):
|
if not ignoreWaiting and self.getNumberWaiting() > 0:
|
||||||
|
return 0
|
||||||
number = self.getNumberRegistered()
|
number = self.getNumberRegistered()
|
||||||
if self.capacity >= 0 and number >= self.capacity:
|
if self.capacity >= 0 and number >= self.capacity:
|
||||||
return 0
|
return 0
|
||||||
return self.capacity - number
|
return self.capacity - number
|
||||||
|
|
||||||
|
@property
|
||||||
|
def availableCapacity(self):
|
||||||
|
return self.getAvailableCapacity()
|
||||||
|
|
||||||
def register(self, client, number=1):
|
def register(self, client, number=1):
|
||||||
clientName = client.__name__
|
clientName = client.__name__
|
||||||
numberWaiting = current = 0
|
numberWaiting = current = currentWaiting = 0
|
||||||
reg = None
|
reg = None
|
||||||
if clientName in self.registrations:
|
if clientName in self.registrations:
|
||||||
reg = self.registrations[clientName]
|
reg = self.registrations[clientName]
|
||||||
current = reg.number
|
current = reg.number
|
||||||
if (self.waitingList and self.availableCapacity >= 0
|
currentWaiting = reg.numberWaiting
|
||||||
|
if currentWaiting and self.waitingList:
|
||||||
|
numberWaiting = number - current - self.getAvailableCapacity(True)
|
||||||
|
number = number - numberWaiting
|
||||||
|
elif (self.waitingList and self.availableCapacity >= 0
|
||||||
and number > (self.availableCapacity + current)):
|
and number > (self.availableCapacity + current)):
|
||||||
numberWaiting = number - current - self.availableCapacity
|
numberWaiting = number - current - self.availableCapacity
|
||||||
#number = self.availableCapacity + current
|
#number = self.availableCapacity + current
|
||||||
|
@ -204,6 +213,16 @@ class Service(object):
|
||||||
result += r.number
|
result += r.number
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
def getNumberWaiting(self, ignoreTemporary=True):
|
||||||
|
if not self.waitingList:
|
||||||
|
return 0
|
||||||
|
result = 0
|
||||||
|
for r in self.registrations.values():
|
||||||
|
if ignoreTemporary and IStateful(r).state == 'temporary':
|
||||||
|
continue
|
||||||
|
result += r.numberWaiting
|
||||||
|
return result
|
||||||
|
|
||||||
# default methods
|
# default methods
|
||||||
def getAllowRegWithNumberFromManager(self):
|
def getAllowRegWithNumberFromManager(self):
|
||||||
return getattr(self.getManager(), 'allowRegWithNumber', None)
|
return getattr(self.getManager(), 'allowRegWithNumber', None)
|
||||||
|
|
Loading…
Add table
Reference in a new issue