Source code for univention.admin.rest.hal

#!/usr/bin/python3
#
# Univention Directory Manager
#  Hypertext Application Language JSON
#
# SPDX-FileCopyrightText: 2017-2025 Univention GmbH
# SPDX-License-Identifier: AGPL-3.0-only


[docs] class HAL:
[docs] def content_negotiation_hal_json(self, response, data): data = self.content_negotiation_json(response, data) self.set_header('Content-Type', 'application/hal+json') return data
[docs] def get_hal_json(self, response): response.setdefault('_links', {}) response.setdefault('_embedded', {}) return self.get_json(response)
[docs] def add_resource(self, obj, relation, ressource): obj.setdefault('_embedded', {}).setdefault(relation, []).append(ressource)
[docs] def get_resource(self, obj, relation, **query): for resource in obj.get('_embedded', {}).get(relation, []): if not query: return resource data = resource.get('_links', {}).get('self', [{}])[0] if all(data.get(key) == val for key, val in query.items()): return resource
[docs] def get_resources(self, obj, relation): return obj.get('_embedded', {}).get(relation, [])