def stream_errors(self, request, children): '''Create the error ``td`` elements. They all have the class ``error``.''' for w in children: b = w.bfield w = Widget('td', cn='error') if b: w.addClass(b.widget.attrs.get('type'))\ .add(b.error).addAttr('id', b.errors_id) yield w
def stream_errors(self, request, children): '''Create the error ``td`` elements. They all have the class ``error``.''' for w in children: b = w.bfield w = Widget('td', cn='error') if b: w.addClass(b.widget.attrs.get('type'))\ .add(b.error).addAttr('id', b.errors_id) yield w
def icon(name, size, widget): name = mapping.get(name, name) if not name.startswith('icon-'): name = 'icon-%s' % name inner = Widget('i', cn=name) if size: inner.addClass('icon-{0}'.format(size)) if widget: widget.insert(0, inner) widget.insert(1, ' ') return widget else: return inner.render()
def icon(name, size, widget): name = mapping.get(name, name) if not name.startswith('icon-'): name = 'icon-%s' % name inner = Widget('i', cn=name) if size: inner.addClass('icon-{0}'.format(size)) if widget: widget.insert(0, inner) widget.insert(1, ' ') return widget else: return inner.render()
def navstream(request, urlselects, secondary_after, level): for request, nav in sorted(((c, c.in_navigation) for c in request.auth_children()), key=lambda x: x[1]): if not nav: continue link = application_link(request, asbutton=False) li = Widget("li", link) secondary = secondary_after and nav > secondary_after if link.attrs["href"] in urlselects: li.addClass(classes.state_active) if level: slis = list(navstream(request, urlselects, None, level - 1)) if slis: ul = Widget("ul") for sli, _ in slis: ul.add(sli) li.add(ul) yield li, secondary
def navstream(request, urlselects, secondary_after, level): for request, nav in sorted(((c, c.in_navigation)\ for c in request.auth_children()), key=lambda x : x[1]): if not nav: continue link = application_link(request, asbutton=False) li = Widget('li', link) secondary = secondary_after and nav > secondary_after if link.attrs['href'] in urlselects: li.addClass(classes.state_active) if level: slis = list(navstream(request, urlselects, None, level - 1)) if slis: ul = Widget('ul') for sli, _ in slis: ul.add(sli) li.add(ul) yield li, secondary
def stream(self, request, widget, context): '''We override inner so that the actual rendering is delegate to :class:`djpcms.html.Table`.''' for s in super(BaseTableElement, self).stream(request, widget, context): yield s tr = Widget('tr', self.render_heads(request, widget, context)) head = Widget('thead', tr) body = Widget('tbody', self.row_generator(request, widget, context)) table = Widget('table', (head, body)) yield table.addClass(self.elem_css).render(request)
def stream(self, request, widget, context): '''We override inner so that the actual rendering is delegate to :class:`djpcms.html.Table`.''' for s in super(BaseTableElement, self).stream(request, widget, context): yield s tr = Widget('tr', self.render_heads(request, widget, context)) head = Widget('thead', tr) body = Widget('tbody', self.row_generator(request, widget, context)) table = Widget('table', (head, body)) yield table.addClass(self.elem_css).render(request)
def handle_error(self, request, response): '''Render an error into text or Html depending on *content_type*. This function can be overwritten by user implementation.''' exc_info = request.exc_info settings = request.settings status = 500 if exc_info and exc_info[0] is not None: status = getattr(exc_info[1], 'status', status) else: exc_info = None # 302 is a special case, we redirect content_type = request.content_type if status in REDIRECT_CODES: location = dict(exc_info[1].headers)['location'] if request.is_xhr: content = ajax.jredirect(request.environ, location) else: content_type = None response.headers['Location'] = iri_to_uri(location) content = '' else: err_cls = '%s%s' % (classes.error, status) err_title = '%s %s' % (status, error_title(status)) if content_type == 'text/plain': content = err_title if settings.DEBUG: content += '\n\n' + html_trace(exc_info, plain=True) else: inner = Widget('div', cn=(classes.error, err_cls)) if settings.DEBUG: inner.addClass('debug') inner.add(Widget('h2', err_title)) inner.add(Widget('a', request.path, href=request.path)) inner.add(html_trace(exc_info)) else: func_name = 'render_error_%s' % status if hasattr(self, func_name): text = getattr(self, func_name)(request, status) else: text = error_title inner.add(text) if request.is_xhr: content = ajax.jservererror(request.environ, inner.render(request)) else: try: layout = request.view.root.get_page_layout(err_cls, classes.error, 'default') outer = layout() content = outer.render(request, context={'content': inner}) except: logger.error('Could not render %s error on %s layout', status, layout, exc_info=True) content = inner.render(request) if is_renderer(content): response.status_code = 200 response.content_type = content.content_type() content = content.render(request) else: response.content_type = content_type response.status_code = status if status == 500: logger.critical('Interval server error', exc_info=exc_info) return content
def handle_error(self, request, response): '''Render an error into text or Html depending on *content_type*. This function can be overwritten by user implementation.''' exc_info = request.exc_info settings = request.settings status = 500 if exc_info and exc_info[0] is not None: status = getattr(exc_info[1], 'status', status) else: exc_info = None # 302 is a special case, we redirect content_type = request.content_type if status in REDIRECT_CODES: location = dict(exc_info[1].headers)['location'] if request.is_xhr: content = ajax.jredirect(request.environ, location) else: content_type = None response.headers['Location'] = iri_to_uri(location) content = '' else: err_cls = '%s%s' % (classes.error, status) err_title = '%s %s' % (status, error_title(status)) if content_type == 'text/plain': content = err_title if settings.DEBUG: content += '\n\n' + html_trace(exc_info, plain=True) else: inner = Widget('div', cn=(classes.error, err_cls)) if settings.DEBUG: inner.addClass('debug') inner.add(Widget('h2', err_title)) inner.add(Widget('a', request.path, href=request.path)) inner.add(html_trace(exc_info)) else: func_name = 'render_error_%s' % status if hasattr(self, func_name): text = getattr(self, func_name)(request, status) else: text = error_title inner.add(text) if request.is_xhr: content = ajax.jservererror(request.environ, inner.render(request)) else: try: layout = request.view.root.get_page_layout( err_cls, classes.error, 'default') outer = layout() content = outer.render(request, context={'content': inner}) except: logger.error('Could not render %s error on %s layout', status, layout, exc_info=True) content = inner.render(request) if is_renderer(content): response.status_code = 200 response.content_type = content.content_type() content = content.render(request) else: response.content_type = content_type response.status_code = status if status == 500: logger.critical('Interval server error', exc_info=exc_info) return content