summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2018-08-27 10:26:29 -0400
committerTim Graham <timograham@gmail.com>2019-02-01 15:55:49 -0500
commit5a50ef90852be2723e97b0bd4537fc8faa5f263f (patch)
tree258c3ae7d66ee49d89e6f73bbf0f0ff263ad1421
parent951ee0b118eb640e6484189117be3308417d87bd (diff)
downloaddjango-5a50ef90852be2723e97b0bd4537fc8faa5f263f.tar.gz
[1.11.x] Replaced CVE/ticket roles with extlinks.
Backport of 44f98f78804627839d5f0a8b3a32bfbb4546ff52 from master.
-rw-r--r--docs/_ext/cve_role.py27
-rw-r--r--docs/_ext/ticket_role.py39
-rw-r--r--docs/conf.py12
3 files changed, 6 insertions, 72 deletions
diff --git a/docs/_ext/cve_role.py b/docs/_ext/cve_role.py
deleted file mode 100644
index 254d3e679f..0000000000
--- a/docs/_ext/cve_role.py
+++ /dev/null
@@ -1,27 +0,0 @@
-"""
-An interpreted text role to link docs to CVE issues. To use: :cve:`XXXXX`
-"""
-from docutils import nodes, utils
-from docutils.parsers.rst import roles
-
-
-def cve_role(name, rawtext, text, lineno, inliner, options=None, content=None):
- if options is None:
- options = {}
-
- url_pattern = inliner.document.settings.env.app.config.cve_url
- if url_pattern is None:
- msg = inliner.reporter.warning("cve not configured: please configure cve_url in conf.py")
- prb = inliner.problematic(rawtext, rawtext, msg)
- return [prb], [msg]
-
- url = url_pattern % text
- roles.set_classes(options)
- node = nodes.reference(rawtext, utils.unescape('CVE-%s' % text), refuri=url, **options)
- return [node], []
-
-
-def setup(app):
- app.add_config_value('cve_url', None, 'env')
- app.add_role('cve', cve_role)
- return {'parallel_read_safe': True}
diff --git a/docs/_ext/ticket_role.py b/docs/_ext/ticket_role.py
deleted file mode 100644
index 809b4239b2..0000000000
--- a/docs/_ext/ticket_role.py
+++ /dev/null
@@ -1,39 +0,0 @@
-"""
-An interpreted text role to link docs to Trac tickets.
-
-To use: :ticket:`XXXXX`
-
-Based on code from psycopg2 by Daniele Varrazzo.
-"""
-from docutils import nodes, utils
-from docutils.parsers.rst import roles
-
-
-def ticket_role(name, rawtext, text, lineno, inliner, options=None, content=None):
- if options is None:
- options = {}
- try:
- num = int(text.replace('#', ''))
- except ValueError:
- msg = inliner.reporter.error(
- "ticket number must be... a number, got '%s'" % text)
- prb = inliner.problematic(rawtext, rawtext, msg)
- return [prb], [msg]
-
- url_pattern = inliner.document.settings.env.app.config.ticket_url
- if url_pattern is None:
- msg = inliner.reporter.warning(
- "ticket not configured: please configure ticket_url in conf.py")
- prb = inliner.problematic(rawtext, rawtext, msg)
- return [prb], [msg]
-
- url = url_pattern % num
- roles.set_classes(options)
- node = nodes.reference(rawtext, '#' + utils.unescape(text), refuri=url, **options)
- return [node], []
-
-
-def setup(app):
- app.add_config_value('ticket_url', None, 'env')
- app.add_role('ticket', ticket_role)
- return {'parallel_read_safe': True}
diff --git a/docs/conf.py b/docs/conf.py
index 62e337dceb..495eda0858 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -42,12 +42,16 @@ needs_sphinx = '1.3' # Actually 1.3.4, but micro versions aren't supported here
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = [
"djangodocs",
+ 'sphinx.ext.extlinks',
"sphinx.ext.intersphinx",
"sphinx.ext.viewcode",
- "ticket_role",
- "cve_role",
]
+extlinks = {
+ 'cve': ('https://nvd.nist.gov/view/vuln/detail?vulnId=%s', 'CVE-'),
+ 'ticket': ('https://code.djangoproject.com/ticket/%s', '#'),
+}
+
# Spelling check needs an additional module that is not installed by default.
# Add it only if spelling check is requested so docs can be generated without it.
if 'spelling' in sys.argv:
@@ -371,7 +375,3 @@ epub_cover = ('', 'epub-cover.html')
# If false, no index is generated.
# epub_use_index = True
-
-# -- custom extension options --------------------------------------------------
-cve_url = 'https://nvd.nist.gov/view/vuln/detail?vulnId=%s'
-ticket_url = 'https://code.djangoproject.com/ticket/%s'