Source code for swh.deposit.api.state
# Copyright (C) 2017-2020  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.http import HttpResponse
from django.shortcuts import render
from rest_framework import status
from swh.deposit.api.common import APIBase, get_deposit_by_id
from swh.deposit.api.converters import convert_status_detail
from swh.deposit.models import DEPOSIT_STATUS_DETAIL
[docs]
class StateAPI(APIBase):
    """Deposit status.
    What's known as 'State-IRI' in the sword specification.
    HTTP verbs supported: GET
    """
[docs]
    def get(  # type: ignore
        self, req, collection_name: str, deposit_id: int
    ) -> HttpResponse:
        deposit = get_deposit_by_id(deposit_id, collection_name)
        self.checks(req, collection_name, deposit)
        status_detail = convert_status_detail(deposit.status_detail)
        if not status_detail:
            status_detail = DEPOSIT_STATUS_DETAIL[deposit.status]
        context = {
            "deposit_id": deposit.id,
            "status_detail": status_detail,
        }
        keys = (
            "status",
            "swhid",
            "swhid_context",
            "external_id",
            "origin_url",
        )
        for k in keys:
            context[k] = getattr(deposit, k, None)
        return render(
            req,
            "deposit/state.xml",
            context=context,
            content_type="application/xml",
            status=status.HTTP_200_OK,
        )