def template_filter_index(request): if not doc: return missing_docutils_page(request) saved_tagset = template.registered_tags.copy(), template.registered_filters.copy() load_all_installed_template_libraries() filters = [] for filtername in template.registered_filters: title, body, metadata = doc.parse_docstring(template.registered_filters[filtername][0].__doc__) if title: title = doc.parse_rst(title, 'filter', 'filter:' + filtername) if body: body = doc.parse_rst(body, 'filter', 'filter:' + filtername) for key in metadata: metadata[key] = doc.parse_rst(metadata[key], 'filter', 'filter:' + filtername) metadata['AcceptsArgument'] = template.registered_filters[filtername][1] library = template.registered_filters[filtername][0].__module__.split('.')[-1] if library == 'template_loader' or library == 'defaultfilters': library = None filters.append({ 'name' : filtername, 'title' : title, 'body' : body, 'meta' : metadata, 'library' : library, }) template.registered_tags, template.registered_filters = saved_tagset return render_to_response('admin_doc/template_filter_index', {'filters': filters}, context_instance=DjangoContext(request))
def view_detail(request, view): if not doc: return missing_docutils_page(request) mod, func = urlresolvers.get_mod_func(view) try: view_func = getattr(__import__(mod, '', '', ['']), func) except (ImportError, AttributeError): raise Http404 title, body, metadata = doc.parse_docstring(view_func.__doc__) if title: title = doc.parse_rst(title, 'view', 'view:' + view) if body: body = doc.parse_rst(body, 'view', 'view:' + view) for key in metadata: metadata[key] = doc.parse_rst(metadata[key], 'model', 'view:' + view) return render_to_response('admin_doc/view_detail', { 'name': view, 'summary': title, 'body': body, 'meta': metadata, }, context_instance=DjangoContext(request))
def template_tag_index(request): import sys if not doc: return missing_docutils_page(request) # We have to jump through some hoops with registered_tags to make sure # they don't get messed up by loading outside tagsets saved_tagset = template.registered_tags.copy(), template.registered_filters.copy() load_all_installed_template_libraries() # Gather docs tags = [] for tagname in template.registered_tags: title, body, metadata = doc.parse_docstring(template.registered_tags[tagname].__doc__) if title: title = doc.parse_rst(title, 'tag', 'tag:' + tagname) if body: body = doc.parse_rst(body, 'tag', 'tag:' + tagname) for key in metadata: metadata[key] = doc.parse_rst(metadata[key], 'tag', 'tag:' + tagname) library = template.registered_tags[tagname].__module__.split('.')[-1] if library == 'template_loader' or library == 'defaulttags': library = None tags.append({ 'name' : tagname, 'title' : title, 'body' : body, 'meta' : metadata, 'library' : library, }) # Fix registered_tags template.registered_tags, template.registered_filters = saved_tagset return render_to_response('admin_doc/template_tag_index', {'tags': tags}, context_instance=DjangoContext(request))
def model_detail(request, model): if not doc: return missing_docutils_page(request) try: model = meta.get_app(model) except ImportError: raise Http404 opts = model.Klass._meta # Gather fields/field descriptions fields = [] for field in opts.fields: fields.append({ 'name' : field.name, 'data_type': get_readable_field_data_type(field), 'verbose' : field.verbose_name, 'help' : field.help_text, }) for func_name, func in model.Klass.__dict__.items(): if callable(func) and len(inspect.getargspec(func)[0]) == 0: try: for exclude in MODEL_METHODS_EXCLUDE: if func_name.startswith(exclude): raise StopIteration except StopIteration: continue verbose = func.__doc__ if verbose: verbose = doc.parse_rst(doc.trim_docstring(verbose), 'model', 'model:' + opts.module_name) fields.append({ 'name' : func_name, 'data_type' : get_return_data_type(func_name), 'verbose' : verbose, }) return render_to_response('admin_doc/model_detail', { 'name': '%s.%s' % (opts.app_label, opts.module_name), 'summary': "Fields on %s objects" % opts.verbose_name, 'fields': fields, }, context_instance=DjangoContext(request))