Coverage for src/paperap/models/correspondent/model.py: 100%
20 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"""
2----------------------------------------------------------------------------
4 METADATA:
6 File: correspondent.py
7 Project: paperap
8 Created: 2025-03-04
9 Version: 0.0.9
10 Author: Jess Mann
11 Email: jess@jmann.me
12 Copyright (c) 2025 Jess Mann
14----------------------------------------------------------------------------
16 LAST MODIFIED:
18 2025-03-04 By Jess Mann
20"""
22from __future__ import annotations
24from datetime import datetime
25from typing import TYPE_CHECKING, Any
27from pydantic import Field
29from paperap.const import MatchingAlgorithmType
30from paperap.models.abstract.model import StandardModel
31from paperap.models.correspondent.queryset import CorrespondentQuerySet
32from paperap.models.mixins.models import MatcherMixin
34if TYPE_CHECKING:
35 from paperap.models.document import Document, DocumentQuerySet
38class Correspondent(StandardModel, MatcherMixin):
39 """
40 Represents a correspondent in Paperless-NgX.
41 """
43 slug: str | None = None
44 name: str | None = None
45 document_count: int = 0
46 owner: int | None = None
47 user_can_change: bool | None = None
49 class Meta(StandardModel.Meta):
50 # Fields that should not be modified
51 read_only_fields = {
52 "slug",
53 "document_count",
54 }
55 queryset = CorrespondentQuerySet
57 @property
58 def documents(self) -> "DocumentQuerySet":
59 """
60 Get documents for this correspondent.
61 """
62 return self._client.documents().all().correspondent_id(self.id)