summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorTai Lee <tai.lee@3030.com.au>2013-06-18 10:10:21 +1000
committerTim Graham <timograham@gmail.com>2013-10-04 13:27:08 -0400
commitbcd4c3f27d5bcf701337ac7c74c042d90792bdc3 (patch)
tree1ae6457311bd778ae84a0c38aee73acc56879bcd /django
parent3895d8899d7a01f2bdb1c206e45d8578a9739c91 (diff)
Fixed #6681 -- Don't break docutils when rendering reStructuredText.
Don't set a global default interpreted role function for reStructuredText. Instead, use the `default-role` directive to change the default only within the `parse_rst()` function. Thanks Malcolm Tredinnick for the report.
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admindocs/utils.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/django/contrib/admindocs/utils.py b/django/contrib/admindocs/utils.py
index c97d588c7d..f836253e71 100644
--- a/django/contrib/admindocs/utils.py
+++ b/django/contrib/admindocs/utils.py
@@ -67,9 +67,18 @@ def parse_rst(text, default_reference_context, thing_being_parsed=None):
}
if thing_being_parsed:
thing_being_parsed = force_bytes("<%s>" % thing_being_parsed)
- parts = docutils.core.publish_parts(text, source_path=thing_being_parsed,
- destination_path=None, writer_name='html',
- settings_overrides=overrides)
+ # Wrap ``text`` in some reST that sets the default role to ``cmsreference``,
+ # then restores it.
+ source = """
+.. default-role:: cmsreference
+
+%s
+
+.. default-role::
+"""
+ parts = docutils.core.publish_parts(source % text,
+ source_path=thing_being_parsed, destination_path=None,
+ writer_name='html', settings_overrides=overrides)
return mark_safe(parts['fragment'])
#
@@ -100,7 +109,6 @@ def default_reference_role(name, rawtext, text, lineno, inliner, options=None, c
if docutils_is_available:
docutils.parsers.rst.roles.register_canonical_role('cmsreference', default_reference_role)
- docutils.parsers.rst.roles.DEFAULT_INTERPRETED_ROLE = 'cmsreference'
for name, urlbase in ROLES.items():
create_reference_role(name, urlbase)