Source code for swh.deposit.api.service_document
# Copyright (C) 2017-2021 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
from django.shortcuts import render
from django.urls import reverse
from swh.deposit.api.common import (
ACCEPT_ARCHIVE_CONTENT_TYPES,
ACCEPT_PACKAGINGS,
APIBase,
)
from swh.deposit.config import COL_IRI
from swh.deposit.models import DepositClient, DepositCollection
[docs]
class ServiceDocumentAPI(APIBase):
[docs]
def get(self, request, *args, **kwargs):
if isinstance(request.user, DepositClient):
client = request.user
else:
client = DepositClient.objects.get(username=request.user)
collections = {}
for col_id in client.collections:
col = DepositCollection.objects.get(pk=col_id)
col_uri = request.build_absolute_uri(reverse(COL_IRI, args=[col.name]))
collections[col.name] = col_uri
context = {
"max_upload_size": self.config["max_upload_size"],
"accept_packagings": ACCEPT_PACKAGINGS,
"accept_content_types": ACCEPT_ARCHIVE_CONTENT_TYPES,
"collections": collections,
}
return render(
request,
"deposit/service_document.xml",
context,
content_type="application/xml",
)