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
	
	 helmutm
						helmutm