minor refactorings
This commit is contained in:
		
							parent
							
								
									6cc5136550
								
							
						
					
					
						commit
						20520a70c5
					
				
					 3 changed files with 19 additions and 18 deletions
				
			
		|  | @ -7,7 +7,7 @@ from zope.publisher.publish import publish | ||||||
| 
 | 
 | ||||||
| from scopes.interfaces import ITraversable, IView | from scopes.interfaces import ITraversable, IView | ||||||
| from scopes.server.browser import getView | from scopes.server.browser import getView | ||||||
| import scopes.storage.concept  | import scopes.storage.concept # register container classes | ||||||
| from scopes.storage.folder import Root | from scopes.storage.folder import Root | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -9,35 +9,40 @@ views = {} # registry for all views: {name: {prefix: viewClass, ...}, ...} | ||||||
| def register(name, *contextClasses): | def register(name, *contextClasses): | ||||||
|     """Use as decorator: `@register(name, class, ...).  |     """Use as decorator: `@register(name, class, ...).  | ||||||
|        class `None` means default view for all classes.""" |        class `None` means default view for all classes.""" | ||||||
|     def doRegister(viewClass): |     def doRegister(factory): | ||||||
|  |         implementer(IView)(factory) | ||||||
|         nameEntry = views.setdefault(name, {}) |         nameEntry = views.setdefault(name, {}) | ||||||
|         for cl in contextClasses: |         for cl in contextClasses: | ||||||
|             key = cl and cl.prefix or '' |             nameEntry[cl.prefix] = factory | ||||||
|             nameEntry[key] = viewClass |         else: | ||||||
|         return viewClass |             nameEntry[''] = factory | ||||||
|  |         return factory | ||||||
|     return doRegister |     return doRegister | ||||||
| 
 | 
 | ||||||
| def getView(request, ob, name): | def getView(request, ob, name): | ||||||
|     nameEntry = views.get(name) |     nameEntry = views.get(name) | ||||||
|     if nameEntry is None: |     if nameEntry is None: | ||||||
|         return None |         return None | ||||||
|     viewClass = nameEntry.get(ob.__class__.prefix) |     factory = nameEntry.get(ob.prefix) | ||||||
|     if viewClass is None: |     if factory is None: | ||||||
|         viewClass = nameEntry.get('') |         factory = nameEntry.get('') | ||||||
|     if viewClass is None: |     if factory is None: | ||||||
|         return None |         return None | ||||||
|     return viewClass(ob, request) |     return factory(ob, request) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @register('index.html', None) | @register('index.html') | ||||||
| @register('index.json', None) | @register('index.json') | ||||||
| @implementer(IView) |  | ||||||
| class DefaultView: | class DefaultView: | ||||||
| 
 | 
 | ||||||
|     def __init__(self, context, request): |     def __init__(self, context, request): | ||||||
|         self.context = context |         self.context = context | ||||||
|         self.request = request |         self.request = request | ||||||
| 
 | 
 | ||||||
|  |     def __call__(self): | ||||||
|  |         result = self.prepareResult() | ||||||
|  |         return self.render(result) | ||||||
|  | 
 | ||||||
|     def prepareResult(self): |     def prepareResult(self): | ||||||
|         ob = self.context |         ob = self.context | ||||||
|         result = ob.asDict() |         result = ob.asDict() | ||||||
|  | @ -51,11 +56,8 @@ class DefaultView: | ||||||
|                     result['target']['items'] = [v.asDict() for v in target.values()] |                     result['target']['items'] = [v.asDict() for v in target.values()] | ||||||
|         return result |         return result | ||||||
| 
 | 
 | ||||||
|     def renderJson(self, result): |     def render(self, result): | ||||||
|         self.request.response.setHeader('Content-type', 'application/json; charset=utf-8') |         self.request.response.setHeader('Content-type', 'application/json; charset=utf-8') | ||||||
|         return json.dumps(result).encode('UTF-8') |         return json.dumps(result).encode('UTF-8') | ||||||
| 
 | 
 | ||||||
|     def __call__(self): |  | ||||||
|         result = self.prepareResult() |  | ||||||
|         return self.renderJson(result) |  | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -22,7 +22,6 @@ class Concept(Track): | ||||||
|        return (t.getSecond() for t in  self.children(Rels.defaultPredicate)) |        return (t.getSecond() for t in  self.children(Rels.defaultPredicate)) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| class Concepts(Container): | class Concepts(Container): | ||||||
| 
 | 
 | ||||||
|     insertOnChange = False |     insertOnChange = False | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue