def object_fields(self, request): object_display = self.object_display headers, ld = self.pagination.header_info(request) if not object_display: return ld else: d = [] for head in object_display or (): head = table_header(head) d.append(headers.get(head.code, head)) return tuple(d)
def get_heads(self, fields): headers = list(fields or ()) dfields = self.form_class.base_fields self.hidden_fields = [] for field in dfields: if field not in headers: headers.append(field) for name in headers: field = dfields.get(name) if field: label = field.label or nicename(name) cn = ('required' if field.required else None, field.widget.attr('type')) help_text = field.help_text else: label = nicename(name) help_text = None cn = None yield table_header(name, label, help_text, extraclass=cn) if self.delete_head is not None: yield table_header(classes.delete_row, self.delete_head)
class SiteMapApplication(views.Application): '''Application to use for admin sitemaps''' has_plugins = False form = HtmlPageForm description = 'Site-map' pagination = Pagination( ('url', 'view', 'layout', 'inner_template', 'in_navigation', table_header('doc_type', attrname='doctype'), 'soft_root'), bulk_actions=[views.bulk_delete]) list_display_links = ('id', 'url', 'page') home = SiteMapView() pages = views.SearchView('pages/', icon='th-list', title=lambda r: 'Pages', linkname=lambda r: 'pages') add = views.AddView(force_redirect=True, linkname=lambda r: 'add page') view = views.ViewView() change = PageChangeView(force_redirect=True, title=lambda djp: 'editing', linkname=lambda djp: 'edit page', body_class='editable') delete = views.DeleteView() def on_bound(self): self.root.internals['Page'] = self.mapper def view_for_instance(self, request, instance): return self.views['change'] 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 __init__(self, headers, *children, **kwargs): # each row must have the same number of columns as the number of headers self.headers = [table_header(name) for name in headers] self.fields = tuple(h.code for h in self.headers) super(BaseTableElement, self).__init__(*children, **kwargs)
def data_table_header(splitter, base, *names, **params): '''Just a shortcut for adding live_data to the code''' code = splitter.join((n for n in names if n is not None)).lower() fullcode = splitter.join((base, code)).lower() if base else code name = params.pop('name', None) or nicename(code) return table_header(code, name, attrname=fullcode, **params)