equal
deleted
inserted
replaced
58 if viewlet is None: |
58 if viewlet is None: |
59 raise ComponentLookupError('No provider with name `%s` found.' % name) |
59 raise ComponentLookupError('No provider with name `%s` found.' % name) |
60 |
60 |
61 # If the viewlet cannot be accessed, then raise an |
61 # If the viewlet cannot be accessed, then raise an |
62 # unauthorized error |
62 # unauthorized error |
63 if viewlet.permission and not self.request.has_permission(viewlet.permission): |
63 if viewlet.permission and not self.request.has_permission(viewlet.permission, context=self.context): |
64 raise HTTPUnauthorized('You are not authorized to access the provider called `%s`.' % name) |
64 raise HTTPUnauthorized('You are not authorized to access the provider called `%s`.' % name) |
65 |
65 |
66 # Return the viewlet. |
66 # Return the viewlet. |
67 return viewlet |
67 return viewlet |
68 |
68 |
83 ``viewlets`` is a list of tuples of the form (name, viewlet). |
83 ``viewlets`` is a list of tuples of the form (name, viewlet). |
84 """ |
84 """ |
85 # Only return viewlets accessible to the principal |
85 # Only return viewlets accessible to the principal |
86 request = self.request |
86 request = self.request |
87 return [(name, viewlet) for name, viewlet in viewlets |
87 return [(name, viewlet) for name, viewlet in viewlets |
88 if (not viewlet.permission) or request.has_permission(viewlet.permission)] |
88 if (not viewlet.permission) or request.has_permission(viewlet.permission, context=self.context)] |
89 |
89 |
90 def sort(self, viewlets): |
90 def sort(self, viewlets): |
91 """Sort the viewlets. |
91 """Sort the viewlets. |
92 |
92 |
93 ``viewlets`` is a list of tuples of the form (name, viewlet). |
93 ``viewlets`` is a list of tuples of the form (name, viewlet). |
98 def update(self): |
98 def update(self): |
99 """See zope.contentprovider.interfaces.IContentProvider""" |
99 """See zope.contentprovider.interfaces.IContentProvider""" |
100 self.__updated = True |
100 self.__updated = True |
101 |
101 |
102 # check permission |
102 # check permission |
103 if self.permission and not self.request.has_permission(self.permission): |
103 if self.permission and not self.request.has_permission(self.permission, context=self.context): |
104 return |
104 return |
105 # Find all content providers for the region |
105 # Find all content providers for the region |
106 viewlets = self._get_viewlets() |
106 viewlets = self._get_viewlets() |
107 # Just use the viewlets from now on |
107 # Just use the viewlets from now on |
108 self.viewlets = [] |
108 self.viewlets = [] |
129 viewlet.update() |
129 viewlet.update() |
130 |
130 |
131 def render(self): |
131 def render(self): |
132 """See zope.contentprovider.interfaces.IContentProvider""" |
132 """See zope.contentprovider.interfaces.IContentProvider""" |
133 # Now render the view |
133 # Now render the view |
134 if self.permission and not self.request.has_permission(self.permission): |
134 if self.permission and not self.request.has_permission(self.permission, context=self.context): |
135 return '' |
135 return '' |
136 if not self.viewlets: |
136 if not self.viewlets: |
137 return '' |
137 return '' |
138 if self.template: |
138 if self.template: |
139 return self.template(viewlets=self.viewlets) |
139 return self.template(viewlets=self.viewlets) |
173 return sorted(viewlets, key=get_weight) |
173 return sorted(viewlets, key=get_weight) |
174 |
174 |
175 |
175 |
176 def is_available(viewlet): |
176 def is_available(viewlet): |
177 try: |
177 try: |
178 return ((not viewlet.permission) or viewlet.request.has_permission(viewlet.permission)) and viewlet.available |
178 return ((not viewlet.permission) or |
|
179 viewlet.request.has_permission(viewlet.permission, context=viewlet.context)) and \ |
|
180 viewlet.available |
179 except AttributeError: |
181 except AttributeError: |
180 return True |
182 return True |
181 |
183 |
182 |
184 |
183 class ConditionalViewletManager(WeightOrderedViewletManager): |
185 class ConditionalViewletManager(WeightOrderedViewletManager): |