feat: Expose important library versions (#7713)
* feat: Expose important library versions Update `/api/version` to include ``` "other": { "xml2rfc": "<version>", "weasyprint": "<version>" }, ``` Fixes #3415 * fix: Use importlib * chore: Reomve additional newline * fix: Expose libraries that are important for document submission * fix: Rename IMPORTANT_LIBRARIES as ADVERTISE_VERSIONS
This commit is contained in:
parent
15f3ebd2d5
commit
c18900a8e6
|
@ -936,6 +936,8 @@ class CustomApiTests(TestCase):
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
data = r.json()
|
data = r.json()
|
||||||
self.assertEqual(data['version'], ietf.__version__+ietf.__patch__)
|
self.assertEqual(data['version'], ietf.__version__+ietf.__patch__)
|
||||||
|
for lib in settings.ADVERTISE_VERSIONS:
|
||||||
|
self.assertIn(lib, data['other'])
|
||||||
self.assertEqual(data['dumptime'], "2022-08-31 07:10:01 +0000")
|
self.assertEqual(data['dumptime'], "2022-08-31 07:10:01 +0000")
|
||||||
DumpInfo.objects.update(tz='PST8PDT')
|
DumpInfo.objects.update(tz='PST8PDT')
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
|
|
|
@ -23,6 +23,7 @@ from django.views.decorators.csrf import csrf_exempt
|
||||||
from django.views.decorators.gzip import gzip_page
|
from django.views.decorators.gzip import gzip_page
|
||||||
from django.views.generic.detail import DetailView
|
from django.views.generic.detail import DetailView
|
||||||
from email.message import EmailMessage
|
from email.message import EmailMessage
|
||||||
|
from importlib.metadata import version as metadata_version
|
||||||
from jwcrypto.jwk import JWK
|
from jwcrypto.jwk import JWK
|
||||||
from tastypie.exceptions import BadRequest
|
from tastypie.exceptions import BadRequest
|
||||||
from tastypie.serializers import Serializer
|
from tastypie.serializers import Serializer
|
||||||
|
@ -240,9 +241,16 @@ def version(request):
|
||||||
if dumpinfo.tz != "UTC":
|
if dumpinfo.tz != "UTC":
|
||||||
dumpdate = pytz.timezone(dumpinfo.tz).localize(dumpinfo.date.replace(tzinfo=None))
|
dumpdate = pytz.timezone(dumpinfo.tz).localize(dumpinfo.date.replace(tzinfo=None))
|
||||||
dumptime = dumpdate.strftime('%Y-%m-%d %H:%M:%S %z') if dumpinfo else None
|
dumptime = dumpdate.strftime('%Y-%m-%d %H:%M:%S %z') if dumpinfo else None
|
||||||
|
|
||||||
|
# important libraries
|
||||||
|
__version_extra__ = {}
|
||||||
|
for lib in settings.ADVERTISE_VERSIONS:
|
||||||
|
__version_extra__[lib] = metadata_version(lib)
|
||||||
|
|
||||||
return HttpResponse(
|
return HttpResponse(
|
||||||
json.dumps({
|
json.dumps({
|
||||||
'version': ietf.__version__+ietf.__patch__,
|
'version': ietf.__version__+ietf.__patch__,
|
||||||
|
'other': __version_extra__,
|
||||||
'dumptime': dumptime,
|
'dumptime': dumptime,
|
||||||
}),
|
}),
|
||||||
content_type='application/json',
|
content_type='application/json',
|
||||||
|
|
|
@ -1273,6 +1273,8 @@ if "CACHES" not in locals():
|
||||||
|
|
||||||
PUBLISH_IPR_STATES = ['posted', 'removed', 'removed_objfalse']
|
PUBLISH_IPR_STATES = ['posted', 'removed', 'removed_objfalse']
|
||||||
|
|
||||||
|
ADVERTISE_VERSIONS = ["markdown", "pyang", "rfc2html", "xml2rfc"]
|
||||||
|
|
||||||
# We provide a secret key only for test and development modes. It's
|
# We provide a secret key only for test and development modes. It's
|
||||||
# absolutely vital that django fails to start in production mode unless a
|
# absolutely vital that django fails to start in production mode unless a
|
||||||
# secret key has been provided elsewhere, not in this file which is
|
# secret key has been provided elsewhere, not in this file which is
|
||||||
|
|
Loading…
Reference in a new issue