def widget(self, request, plugin=None, wrapper=None): '''Render the plugin in the content block This function call the plugin render function and wrap the resulting HTML with the wrapper callable.''' plugin_response = None plugin = plugin or self.plugin wrapper = wrapper or self.wrapper if plugin and request.has_permission(permissions.VIEW, instance=self): try: request.media.add(plugin.media(request)) plugin_response = plugin(request, self.arguments, block=self) except Exception as e: exc_info = sys.exc_info() request.cache.traces.append(exc_info) self.logger.error('%s - block %s -- %s' % (plugin,self,e), exc_info=exc_info, extra={'request':request} ) if request.user.is_superuser: plugin_response = escape('%s' % e) # html can be a string or whatever the plugin returns. if plugin_response not in NOTHING or not self.position: if plugin_response in NOTHING: plugin_response = NON_BREACKING_SPACE return wrapper(request, self, plugin_response)
def widget(self, request, plugin=None, wrapper=None): '''Render the plugin in the content block This function call the plugin render function and wrap the resulting HTML with the wrapper callable.''' plugin_response = None plugin = plugin or self.plugin wrapper = wrapper or self.wrapper if plugin and request.has_permission(permissions.VIEW, instance=self): try: request.media.add(plugin.media(request)) plugin_response = plugin(request, self.arguments, block=self) except Exception as e: exc_info = sys.exc_info() request.cache.traces.append(exc_info) self.logger.error('%s - block %s -- %s' % (plugin, self, e), exc_info=exc_info, extra={'request': request}) if request.user.is_superuser: plugin_response = escape('%s' % e) # html can be a string or whatever the plugin returns. if plugin_response not in NOTHING or not self.position: if plugin_response in NOTHING: plugin_response = NON_BREACKING_SPACE return wrapper(request, self, plugin_response)
def linkname(self, request): """Name to display in hyperlinks to this view.""" page = request.page link = page.link if page else self.default_link if not link: link = self.default_link or (self.appmodel.description if self.appmodel else "") return escape(link.format(request.urlargs, request.instance))
def linkname(self, request): '''Name to display in hyperlinks to this view.''' page = request.page link = page.link if page else self.default_link if not link: link = self.default_link or \ (self.appmodel.description if self.appmodel else '') return escape(link.format(request.urlargs, request.instance))
def title(self, request): '''View title''' page = request.page title = page.title if page else self.default_title link = self.linkname(request) if not title: return link elif link: link += ' ' return escape(title.format(request.urlargs, request.instance, link))
def instance_field_value(self, request, page, field_name, val=''): if field_name == 'view': node = request.tree.get(page.url) view = node.view if not isinstance(view, pageview): return view.code else: return '' else: return escape(val)
def title(self, request): """View title""" page = request.page title = page.title if page else self.default_title link = self.linkname(request) if not title: return link elif link: link += " " return escape(title.format(request.urlargs, request.instance, link))
def instance_field_value(self, request, page, field_name, val = ''): if field_name == 'view': node = request.tree.get(page.url) view = node.view if not isinstance(view, pageview): return view.code else: return '' else: return escape(val)
def html_trace(exc_info, plain=False): if exc_info: trace = exc_info[2] if istraceback(trace): trace = traceback.format_exception(*exc_info) error = Widget() ptag = None if plain else 'p' for traces in trace: counter = 0 for trace in traces.split('\n'): if trace.startswith(' '): counter += 1 trace = trace[2:] if not trace: continue w = Widget(ptag, escape(trace)) if counter: w.css({'margin-left':'%spx' % (20*counter)}) error.add(w) return error.render()
def html_trace(exc_info, plain=False): if exc_info: trace = exc_info[2] if istraceback(trace): trace = traceback.format_exception(*exc_info) error = Widget() ptag = None if plain else 'p' for traces in trace: counter = 0 for trace in traces.split('\n'): if trace.startswith(' '): counter += 1 trace = trace[2:] if not trace: continue w = Widget(ptag, escape(trace)) if counter: w.css({'margin-left': '%spx' % (20 * counter)}) error.add(w) return error.render()
def __init__(self, required=None, default=None, initial=None, validation_error=None, help_text=None, label=None, widget=None, widget_attrs=None, disabled=None, attrname=None, **kwargs): self.name = attrname self.default = default if default is not None else self.default self.initial = initial self.required = required if required is not None else self.required self.validation_error = validation_error or self.validation_error or\ standard_validation_error self.help_text = escape(help_text) self.label = label self.disabled = disabled widget = widget or self.widget if isclass(widget): widget = widget() else: widget = copy(widget) self.widget = widget if not isinstance(self.widget, html.WidgetMaker): raise ValueError("Form field widget of wrong type") widget_attrs = widget_attrs or {} if not hasattr(widget_attrs, '__call__'): widget_attrs = widget_attrs or {} self.widget_attrs = widget_attrs.copy() else: self.widget_attrs = widget_attrs if self.disabled: self.widget_attrs['disabled'] = 'disabled' self.handle_params(**kwargs) # Increase the creation counter, and save our local copy. self.creation_counter = Field.creation_counter Field.creation_counter += 1
def __init__(self, required=None, default=None, initial=None, validation_error=None, help_text=None, label=None, widget=None, widget_attrs=None, disabled=None, attrname=None, **kwargs): self.name = attrname self.default = default if default is not None else self.default self.initial = initial self.required = required if required is not None else self.required self.validation_error = validation_error or self.validation_error or\ standard_validation_error self.help_text = escape(help_text) self.label = label self.disabled = disabled widget = widget or self.widget if isclass(widget): widget = widget() else: widget = copy(widget) self.widget = widget if not isinstance(self.widget,html.WidgetMaker): raise ValueError("Form field widget of wrong type") widget_attrs = widget_attrs or {} if not hasattr(widget_attrs,'__call__'): widget_attrs = widget_attrs or {} self.widget_attrs = widget_attrs.copy() else: self.widget_attrs = widget_attrs if self.disabled: self.widget_attrs['disabled'] = 'disabled' self.handle_params(**kwargs) # Increase the creation counter, and save our local copy. self.creation_counter = Field.creation_counter Field.creation_counter += 1
def attrsiter(attrs): for k, v in iteritems(attrs): if v is not None: yield " %s='%s'" % (k, escape(v, force=True))
def set_value(self, value, widget): widget.add(escape(value))