Skip to content

Commit

Permalink
feat: Expose important library versions (#7713)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
kesara authored Nov 27, 2024
1 parent 15f3ebd commit c18900a
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 0 deletions.
2 changes: 2 additions & 0 deletions ietf/api/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -936,6 +936,8 @@ def test_api_version(self):
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)
Expand Down
8 changes: 8 additions & 0 deletions ietf/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
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
Expand Down Expand Up @@ -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',
Expand Down
2 changes: 2 additions & 0 deletions ietf/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -1273,6 +1273,8 @@ def skip_unreadable_post(record):

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
Expand Down

0 comments on commit c18900a

Please sign in to comment.