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

1""" 

2---------------------------------------------------------------------------- 

3 

4 METADATA: 

5 

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 

13 

14---------------------------------------------------------------------------- 

15 

16 LAST MODIFIED: 

17 

18 2025-03-04 By Jess Mann 

19 

20""" 

21 

22from __future__ import annotations 

23 

24from datetime import datetime 

25from typing import TYPE_CHECKING, Any 

26 

27from pydantic import Field 

28 

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 

33 

34if TYPE_CHECKING: 

35 from paperap.models.document import Document, DocumentQuerySet 

36 

37 

38class Correspondent(StandardModel, MatcherMixin): 

39 """ 

40 Represents a correspondent in Paperless-NgX. 

41 """ 

42 

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 

48 

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 

56 

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)