Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Moved parts/admin/doc.py to contrib/admin/utils.py, where it belongs.…

… Also caught docutils ImportError in a more controlled way

git-svn-id: http://code.djangoproject.com/svn/django/trunk@1463 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 2e7e19e0f2571a0514b7201c80fdd3bc4c648dbd 1 parent f237936
@adrianholovaty adrianholovaty authored
View
15 django/parts/admin/doc.py → django/contrib/admin/utils.py
@@ -1,14 +1,17 @@
-"""
-Misc. utility functions/classes for documentation generator
-"""
+"Misc. utility functions/classes for admin documentation generator."
import re
from email.Parser import HeaderParser
from email.Errors import HeaderParseError
-import docutils.core
-import docutils.nodes
-import docutils.parsers.rst.roles
from urlparse import urljoin
+try:
+ import docutils.core
+ import docutils.nodes
+ import docutils.parsers.rst.roles
+except ImportError:
+ docutils_is_available = False
+else:
+ docutils_is_available = True
def trim_docstring(docstring):
"""
View
45 django/contrib/admin/views/doc.py
@@ -6,17 +6,14 @@
from django.core.extensions import DjangoContext, render_to_response
from django.core.exceptions import Http404, ViewDoesNotExist
from django.core import template, urlresolvers
-try:
- from django.parts.admin import doc
-except ImportError:
- doc = None
+from django.contrib.admin import utils
import inspect, os, re
# Exclude methods starting with these strings from documentation
MODEL_METHODS_EXCLUDE = ('_', 'add_', 'delete', 'save', 'set_')
def doc_index(request):
- if not doc:
+ if not utils.docutils_is_available:
return missing_docutils_page(request)
return render_to_response('admin_doc/index', context_instance=DjangoContext(request))
doc_index = staff_member_required(doc_index)
@@ -28,7 +25,7 @@ def bookmarklets(request):
bookmarklets = staff_member_required(bookmarklets)
def template_tag_index(request):
- if not doc:
+ if not utils.docutils_is_available:
return missing_docutils_page(request)
load_all_installed_template_libraries()
@@ -36,13 +33,13 @@ def template_tag_index(request):
tags = []
for module_name, library in template.libraries.items():
for tag_name, tag_func in library.tags.items():
- title, body, metadata = doc.parse_docstring(tag_func.__doc__)
+ title, body, metadata = utils.parse_docstring(tag_func.__doc__)
if title:
- title = doc.parse_rst(title, 'tag', 'tag:' + tag_name)
+ title = utils.parse_rst(title, 'tag', 'tag:' + tag_name)
if body:
- body = doc.parse_rst(body, 'tag', 'tag:' + tag_name)
+ body = utils.parse_rst(body, 'tag', 'tag:' + tag_name)
for key in metadata:
- metadata[key] = doc.parse_rst(metadata[key], 'tag', 'tag:' + tag_name)
+ metadata[key] = utils.parse_rst(metadata[key], 'tag', 'tag:' + tag_name)
if library in template.builtins:
tag_library = None
else:
@@ -59,7 +56,7 @@ def template_tag_index(request):
template_tag_index = staff_member_required(template_tag_index)
def template_filter_index(request):
- if not doc:
+ if not utils.docutils_is_available:
return missing_docutils_page(request)
load_all_installed_template_libraries()
@@ -67,13 +64,13 @@ def template_filter_index(request):
filters = []
for module_name, library in template.libraries.items():
for filter_name, filter_func in library.filters.items():
- title, body, metadata = doc.parse_docstring(filter_func.__doc__)
+ title, body, metadata = utils.parse_docstring(filter_func.__doc__)
if title:
- title = doc.parse_rst(title, 'filter', 'filter:' + filter_name)
+ title = utils.parse_rst(title, 'filter', 'filter:' + filter_name)
if body:
- body = doc.parse_rst(body, 'filter', 'filter:' + filter_name)
+ body = utils.parse_rst(body, 'filter', 'filter:' + filter_name)
for key in metadata:
- metadata[key] = doc.parse_rst(metadata[key], 'filter', 'filter:' + filter_name)
+ metadata[key] = utils.parse_rst(metadata[key], 'filter', 'filter:' + filter_name)
if library in template.builtins:
tag_library = None
else:
@@ -89,7 +86,7 @@ def template_filter_index(request):
template_filter_index = staff_member_required(template_filter_index)
def view_index(request):
- if not doc:
+ if not utils.docutils_is_available:
return missing_docutils_page(request)
views = []
@@ -109,7 +106,7 @@ def view_index(request):
view_index = staff_member_required(view_index)
def view_detail(request, view):
- if not doc:
+ if not utils.docutils_is_available:
return missing_docutils_page(request)
mod, func = urlresolvers.get_mod_func(view)
@@ -117,13 +114,13 @@ def view_detail(request, view):
view_func = getattr(__import__(mod, '', '', ['']), func)
except (ImportError, AttributeError):
raise Http404
- title, body, metadata = doc.parse_docstring(view_func.__doc__)
+ title, body, metadata = utils.parse_docstring(view_func.__doc__)
if title:
- title = doc.parse_rst(title, 'view', 'view:' + view)
+ title = utils.parse_rst(title, 'view', 'view:' + view)
if body:
- body = doc.parse_rst(body, 'view', 'view:' + view)
+ body = utils.parse_rst(body, 'view', 'view:' + view)
for key in metadata:
- metadata[key] = doc.parse_rst(metadata[key], 'model', 'view:' + view)
+ metadata[key] = utils.parse_rst(metadata[key], 'model', 'view:' + view)
return render_to_response('admin_doc/view_detail', {
'name': view,
'summary': title,
@@ -133,7 +130,7 @@ def view_detail(request, view):
view_detail = staff_member_required(view_detail)
def model_index(request):
- if not doc:
+ if not utils.docutils_is_available:
return missing_docutils_page(request)
models = []
@@ -149,7 +146,7 @@ def model_index(request):
model_index = staff_member_required(model_index)
def model_detail(request, model):
- if not doc:
+ if not utils.docutils_is_available:
return missing_docutils_page(request)
try:
@@ -177,7 +174,7 @@ def model_detail(request, model):
continue
verbose = func.__doc__
if verbose:
- verbose = doc.parse_rst(doc.trim_docstring(verbose), 'model', 'model:' + opts.module_name)
+ verbose = utils.parse_rst(utils.trim_docstring(verbose), 'model', 'model:' + opts.module_name)
fields.append({
'name': func_name,
'data_type': get_return_data_type(func_name),
View
0  django/parts/admin/__init__.py
No changes.

0 comments on commit 2e7e19e

Please sign in to comment.
Something went wrong with that request. Please try again.