Ejemplo n.º 1
0
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))
Ejemplo n.º 2
0
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))
Ejemplo n.º 3
0
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))
Ejemplo n.º 4
0
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))