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)
|
||||
self.request.response.redirect(self.getNextUrl())
|
||||
return False
|
||||
|
||||
|
||||
|
|
|
@ -161,21 +161,30 @@ class Service(object):
|
|||
def getToken(self):
|
||||
return self.name
|
||||
|
||||
@property
|
||||
def availableCapacity(self):
|
||||
def getAvailableCapacity(self, ignoreWaiting=False):
|
||||
if not ignoreWaiting and self.getNumberWaiting() > 0:
|
||||
return 0
|
||||
number = self.getNumberRegistered()
|
||||
if self.capacity >= 0 and number >= self.capacity:
|
||||
return 0
|
||||
return self.capacity - number
|
||||
|
||||
@property
|
||||
def availableCapacity(self):
|
||||
return self.getAvailableCapacity()
|
||||
|
||||
def register(self, client, number=1):
|
||||
clientName = client.__name__
|
||||
numberWaiting = current = 0
|
||||
numberWaiting = current = currentWaiting = 0
|
||||
reg = None
|
||||
if clientName in self.registrations:
|
||||
reg = self.registrations[clientName]
|
||||
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)):
|
||||
numberWaiting = number - current - self.availableCapacity
|
||||
#number = self.availableCapacity + current
|
||||
|
@ -204,6 +213,16 @@ class Service(object):
|
|||
result += r.number
|
||||
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
|
||||
def getAllowRegWithNumberFromManager(self):
|
||||
return getattr(self.getManager(), 'allowRegWithNumber', None)
|
||||
|
|
Loading…
Add table
Reference in a new issue