use signposting package

This commit is contained in:
Daniel Bauer
2024-11-01 13:02:56 +01:00
parent 076273d014
commit 2d3dafbacc
5 changed files with 50 additions and 68 deletions

View File

@@ -1,23 +1,17 @@
from django.http import HttpResponse
from signposting import Signpost
def add_signposts(response: HttpResponse, **kwargs):
def add_signposts(response: HttpResponse, *args: Signpost):
""" Adds signposting headers to the responses.
params:
response - the response object
kwargs - a map of relation types to a list of corresponding links. Each link can be a link or a tuple of link and media type.
args - a list of signposts to add to this resposnse.
"""
if not hasattr(response, '_signposts'):
response._signposts = {}
response._signposts = []
for key in kwargs.keys():
values = kwargs[key]
if isinstance(values, str) or isinstance(values, tuple):
values = [values]
if key not in response._signposts:
response._signposts[key] = values
else:
response._signposts[key] += values
for signpost in args:
if not signpost in response._signposts:
response._signposts.append(signpost)