minor improvements on navigation and template layout
git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@2189 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
		
							parent
							
								
									29d8e216b5
								
							
						
					
					
						commit
						064fb5a4ee
					
				
					 3 changed files with 46 additions and 21 deletions
				
			
		|  | @ -43,6 +43,7 @@ Working with message instances | ||||||
|   >>> mi = MessageInstance(None, manager.messages['feedback_text'], manager) |   >>> mi = MessageInstance(None, manager.messages['feedback_text'], manager) | ||||||
|   >>> for key, value in mi.applyTemplate().items(): |   >>> for key, value in mi.applyTemplate().items(): | ||||||
|   ...     print key + ':', value |   ...     print key + ':', value | ||||||
|  |   url: | ||||||
|   text: Dear $person.firstname $person.lastname, |   text: Dear $person.firstname $person.lastname, | ||||||
|   You have been registered for the following events. |   You have been registered for the following events. | ||||||
|   $@@list_registrations_text |   $@@list_registrations_text | ||||||
|  |  | ||||||
|  | @ -26,6 +26,12 @@ from string import Template | ||||||
| from zope import component | from zope import component | ||||||
| from zope.interface import implements | from zope.interface import implements | ||||||
| from zope.publisher.browser import TestRequest | from zope.publisher.browser import TestRequest | ||||||
|  | try: | ||||||
|  |     from zope.traversing.browser.absoluteurl import absoluteURL | ||||||
|  |     zope29 = False | ||||||
|  | except ImportError: | ||||||
|  |     from zope.app.traversing.browser.absoluteurl import absoluteURL | ||||||
|  |     zope29 = True | ||||||
| 
 | 
 | ||||||
| from cybertools.composer.instance import Instance | from cybertools.composer.instance import Instance | ||||||
| from cybertools.composer.interfaces import IInstance | from cybertools.composer.interfaces import IInstance | ||||||
|  | @ -44,12 +50,24 @@ class MessageInstance(Instance): | ||||||
|     def applyTemplate(self, data=None, **kw): |     def applyTemplate(self, data=None, **kw): | ||||||
|         if data is None: |         if data is None: | ||||||
|             data = {} |             data = {} | ||||||
|  |         request = data.get('request') or TestRequest() | ||||||
|  |         data['url'] = self.getClientUrl(request) | ||||||
|         dp = DataProvider(self, data) |         dp = DataProvider(self, data) | ||||||
|         text = MessageTemplate(self.template.text).safe_substitute(dp) |         text = MessageTemplate(self.template.text).safe_substitute(dp) | ||||||
|         subject = self.template.subjectLine |         subject = self.template.subjectLine | ||||||
|         data.update(dict(subjectLine=subject, text=text)) |         data.update(dict(subjectLine=subject, text=text)) | ||||||
|         return data |         return data | ||||||
| 
 | 
 | ||||||
|  |     def getClientUrl(self, request): | ||||||
|  |         if self.client is None: | ||||||
|  |             return '' | ||||||
|  |         if zope29:  # evil hack to get rid of acquisition stuff | ||||||
|  |             parts = absoluteURL(self.client.manager, request).split('/') | ||||||
|  |             url = '/'.join(parts[:-3]) | ||||||
|  |         else: | ||||||
|  |             url = absoluteURL(self.client.manager, request) | ||||||
|  |         return '%s?id=%s' % (url, self.client.__name__) | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| class DataProvider(object): | class DataProvider(object): | ||||||
| 
 | 
 | ||||||
|  | @ -59,7 +77,6 @@ class DataProvider(object): | ||||||
| 
 | 
 | ||||||
|     def __getitem__(self, key): |     def __getitem__(self, key): | ||||||
|         client = self.context.client |         client = self.context.client | ||||||
|         #messageManager = self.context.template.getManager() |  | ||||||
|         messageManager = self.context.manager |         messageManager = self.context.manager | ||||||
|         if key.startswith('@@'): |         if key.startswith('@@'): | ||||||
|             if client is None: |             if client is None: | ||||||
|  | @ -83,8 +100,6 @@ class DataProvider(object): | ||||||
|                     return '' |                     return '' | ||||||
|             return value |             return value | ||||||
|         elif key in messageManager.messages: |         elif key in messageManager.messages: | ||||||
|             #mi = component.getMultiAdapter( |  | ||||||
|             #       (client, messageManager.messages[key]), IInstance) |  | ||||||
|             mi = MessageInstance(client, messageManager.messages[key], |             mi = MessageInstance(client, messageManager.messages[key], | ||||||
|                                  messageManager) |                                  messageManager) | ||||||
|             return mi.applyTemplate()['text'] |             return mi.applyTemplate()['text'] | ||||||
|  | @ -97,6 +112,8 @@ class DataProvider(object): | ||||||
|             instance.template = schema |             instance.template = schema | ||||||
|             data = instance.applyTemplate() |             data = instance.applyTemplate() | ||||||
|             return data[fieldName] |             return data[fieldName] | ||||||
|  |         elif key in self.data: | ||||||
|  |             return self.data[key] | ||||||
|         else: |         else: | ||||||
|             raise KeyError(key) |             raise KeyError(key) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -66,8 +66,9 @@ class BaseView(SchemaBaseView): | ||||||
|         if service is None: |         if service is None: | ||||||
|             service = self.context |             service = self.context | ||||||
|         if service.start and service.end: |         if service.start and service.end: | ||||||
|             return ('%s - %s' % |             return ('%s-%s' % | ||||||
|                 (self.getFormattedDate(service.start, type='dateTime', variant='short'), |                 (self.getFormattedDate(service.start, | ||||||
|  |                         type='dateTime', variant='short').replace(' ', '  '), | ||||||
|                  self.getFormattedDate(service.end, type='time', variant='short'))) |                  self.getFormattedDate(service.end, type='time', variant='short'))) | ||||||
|         else: |         else: | ||||||
|             return '-' |             return '-' | ||||||
|  | @ -247,7 +248,8 @@ class CheckoutView(ServiceManagerView): | ||||||
|     def listRegistrationsHtml(self): |     def listRegistrationsHtml(self): | ||||||
|         result = [] |         result = [] | ||||||
|         for info in self.getRegistrationsInfo(): |         for info in self.getRegistrationsInfo(): | ||||||
|             line = self.row % (info['number'], info['service'], info['fromTo']) |             line = self.row % (info['number'], info['service'], | ||||||
|  |                         info['fromTo'].replace(' ', '  ')) | ||||||
|             result.append(line) |             result.append(line) | ||||||
|         return self.html % '\n'.join(result) |         return self.html % '\n'.join(result) | ||||||
| 
 | 
 | ||||||
|  | @ -320,27 +322,32 @@ class ServiceView(BaseView): | ||||||
|         form = self.request.form |         form = self.request.form | ||||||
|         clientName = self.getClientName() |         clientName = self.getClientName() | ||||||
|         if not form.get('action'): |         if not form.get('action'): | ||||||
|             data = self.getClientData() |             #data = self.getClientData() | ||||||
|             if ('service_registration' in data |             #if ('service_registration' in data | ||||||
|                     and data['service_registration'].number > 0): |             #        and data['service_registration'].number > 0): | ||||||
|                 self.showCheckoutButton = True |             #    self.showCheckoutButton = True | ||||||
|             return True |             return True | ||||||
|         manager = self.context.getManager() |         manager = self.context.getManager() | ||||||
|         if clientName: |  | ||||||
|             client = manager.getClients().get(clientName) |  | ||||||
|             if client is None: |  | ||||||
|                 return True |  | ||||||
|         else: |  | ||||||
|             client = IClientFactory(manager)() |  | ||||||
|             newClient = True |  | ||||||
|             nextUrl = self.getSchemaUrl() |  | ||||||
|         regs = self.state = IClientRegistrations(client) |  | ||||||
|         try: |         try: | ||||||
|             number = int(form.get('number', 0)) |             number = int(form.get('number', 0)) | ||||||
|             if number < 0: |             if number < 0: | ||||||
|                 number = 0 |                 number = 0 | ||||||
|         except ValueError: |         except ValueError: | ||||||
|             number = 1 |             number = 0 | ||||||
|  |         if clientName: | ||||||
|  |             client = manager.getClients().get(clientName) | ||||||
|  |             if client is None: | ||||||
|  |                 self.request.response.redirect(self.getSchemaUrl()) | ||||||
|  |                 return False | ||||||
|  |         else: | ||||||
|  |             if number == 0: | ||||||
|  |                 self.request.response.redirect(self.getSchemaUrl()) | ||||||
|  |                 return False | ||||||
|  |             else: | ||||||
|  |                 client = IClientFactory(manager)() | ||||||
|  |                 newClient = True | ||||||
|  |                 nextUrl = self.getSchemaUrl() | ||||||
|  |         regs = self.state = IClientRegistrations(client) | ||||||
|         regs.validate(clientName, [self.context], [number]) |         regs.validate(clientName, [self.context], [number]) | ||||||
|         if regs.severity > 0: |         if regs.severity > 0: | ||||||
|             return True |             return True | ||||||
|  | @ -351,7 +358,7 @@ class ServiceView(BaseView): | ||||||
|             regs.register([self.context], numbers=[number]) |             regs.register([self.context], numbers=[number]) | ||||||
|             self.showCheckoutButton = True |             self.showCheckoutButton = True | ||||||
|             nextUrl = self.getSchemaUrl() |             nextUrl = self.getSchemaUrl() | ||||||
|         elif 'submit_unregister' in form: |         elif 'submit_register' in form and number == 0 or 'submit_unregister' in form: | ||||||
|             regs.unregister([self.context]) |             regs.unregister([self.context]) | ||||||
|             number = 0 |             number = 0 | ||||||
|             nextUrl = self.getSchemaUrl() |             nextUrl = self.getSchemaUrl() | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 helmutm
						helmutm