allow view parameters for view names on type concepts
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2459 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
		
							parent
							
								
									9043c0459e
								
							
						
					
					
						commit
						03fd81a499
					
				
					 1 changed files with 12 additions and 7 deletions
				
			
		|  | @ -333,24 +333,29 @@ class ConceptView(BaseView): | ||||||
|     @Lazy |     @Lazy | ||||||
|     def view(self): |     def view(self): | ||||||
|         context = self.context |         context = self.context | ||||||
|         viewName = self.request.get('loops.viewName') or getattr(self, '_viewName', None) |         name = self.request.get('loops.viewName') or getattr(self, '_viewName', None) | ||||||
|         if not viewName: |         if not name: | ||||||
|             ti = IType(context).typeInterface |             ti = IType(context).typeInterface | ||||||
|             # TODO: check the interface (maybe for a base interface IViewProvider) |             # TODO: check the interface (maybe for a base interface IViewProvider) | ||||||
|             #       instead of the viewName attribute: |             #       instead of the viewName attribute: | ||||||
|             if ti and ti != ITypeConcept and 'viewName' in ti: |             if ti and ti != ITypeConcept and 'viewName' in ti: | ||||||
|                 typeAdapter = ti(self.context) |                 typeAdapter = ti(self.context) | ||||||
|                 viewName = typeAdapter.viewName |                 name = typeAdapter.viewName | ||||||
|         if not viewName: |         if not name: | ||||||
|             tp = IType(context).typeProvider |             tp = IType(context).typeProvider | ||||||
|             if tp: |             if tp: | ||||||
|                viewName = ITypeConcept(tp).viewName |                name = ITypeConcept(tp).viewName | ||||||
|         if viewName: |         if name: | ||||||
|  |             if '?' in name: | ||||||
|  |                 name, params = name.split('?', 1) | ||||||
|  |                 ann = self.request.annotations.get('loops.view', {}) | ||||||
|  |                 ann['params'] = params | ||||||
|  |                 self.request.annotations['loops.view'] = ann | ||||||
|             # ??? Would it make sense to use a somehow restricted interface |             # ??? Would it make sense to use a somehow restricted interface | ||||||
|             #     that should be provided by the view like IQuery? |             #     that should be provided by the view like IQuery? | ||||||
|             #viewInterface = getattr(typeAdapter, 'viewInterface', None) or IQuery |             #viewInterface = getattr(typeAdapter, 'viewInterface', None) or IQuery | ||||||
|             adapter = component.queryMultiAdapter((context, self.request), |             adapter = component.queryMultiAdapter((context, self.request), | ||||||
|                                                   name=viewName) |                                                   name=name) | ||||||
|             if adapter is not None: |             if adapter is not None: | ||||||
|                 return adapter |                 return adapter | ||||||
|         #elif type provides view: use this |         #elif type provides view: use this | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 helmutm
						helmutm