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:
Kesara Rathnayake 2024-11-27 14:20:24 +11:00 committed by GitHub
parent 15f3ebd2d5
commit c18900a8e6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 12 additions and 0 deletions

View file

@ -936,6 +936,8 @@ class CustomApiTests(TestCase):
r = self.client.get(url)
data = r.json()
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")
DumpInfo.objects.update(tz='PST8PDT')
r = self.client.get(url)

View file

@ -23,6 +23,7 @@ from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.gzip import gzip_page
from django.views.generic.detail import DetailView
from email.message import EmailMessage
from importlib.metadata import version as metadata_version
from jwcrypto.jwk import JWK
from tastypie.exceptions import BadRequest
from tastypie.serializers import Serializer
@ -240,9 +241,16 @@ def version(request):
if dumpinfo.tz != "UTC":
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
# important libraries
__version_extra__ = {}
for lib in settings.ADVERTISE_VERSIONS:
__version_extra__[lib] = metadata_version(lib)
return HttpResponse(
json.dumps({
'version': ietf.__version__+ietf.__patch__,
'other': __version_extra__,
'dumptime': dumptime,
}),
content_type='application/json',

View file

@ -1273,6 +1273,8 @@ if "CACHES" not in locals():
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
# absolutely vital that django fails to start in production mode unless a
# secret key has been provided elsewhere, not in this file which is