Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
 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))
Пример #4
0
 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))
Пример #5
0
 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))
Пример #6
0
 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)
Пример #7
0
 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))
Пример #8
0
 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)
Пример #9
0
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()
Пример #10
0
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()
Пример #11
0
 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
Пример #12
0
 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
Пример #13
0
def attrsiter(attrs):
    for k, v in iteritems(attrs):
        if v is not None:
            yield " %s='%s'" % (k, escape(v, force=True))
Пример #14
0
 def set_value(self, value, widget):
     widget.add(escape(value))
Пример #15
0
 def set_value(self, value, widget):
     widget.add(escape(value))
Пример #16
0
def attrsiter(attrs):
    for k, v in iteritems(attrs):
        if v is not None:
            yield " %s='%s'" % (k, escape(v, force=True))