Coverage for src/paperap/resources/document_metadata.py: 72%
18 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-22 16:02 -0400
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-22 16:02 -0400
1"""
6----------------------------------------------------------------------------
8METADATA:
10File: document_metadata.py
11 Project: paperap
12Created: 2025-03-18
13 Version: 0.0.9
14Author: Jess Mann
15Email: jess@jmann.me
16 Copyright (c) 2025 Jess Mann
18----------------------------------------------------------------------------
20LAST MODIFIED:
222025-03-18 By Jess Mann
24"""
26from __future__ import annotations
28from typing import Any
30from typing_extensions import TypeVar
32from paperap.const import URLS
33from paperap.exceptions import APIError, BadResponseError, ResourceNotFoundError
34from paperap.models.document.metadata import DocumentMetadata, DocumentMetadataQuerySet
35from paperap.resources.base import BaseResource, StandardResource
38class DocumentMetadataResource(StandardResource[DocumentMetadata, DocumentMetadataQuerySet]):
39 model_class = DocumentMetadata
40 queryset_class = DocumentMetadataQuerySet
41 name: str = "document_metadata"
42 endpoints = {
43 # Override the detail endpoint to point to metadata
44 "detail": URLS.meta,
45 }
47 def get_metadata(self, document_id: int) -> DocumentMetadata:
48 url = self.get_endpoint("detail", pk=document_id)
49 response = self.client.request("GET", url)
50 if not response:
51 raise ResourceNotFoundError(f"Metadata for document {document_id} not found", self.name)
52 return self.parse_to_model(response)