Coverage for src/paperap/models/storage_path/model.py: 95%
19 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-12 23:40 -0400
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-12 23:40 -0400
1"""
2----------------------------------------------------------------------------
4 METADATA:
6 File: storage_path.py
7 Project: paperap
8 Created: 2025-03-04
9 Version: 0.0.5
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 paperap.models.abstract.model import StandardModel
28from paperap.models.mixins.models import MatcherMixin
29from paperap.models.storage_path.queryset import StoragePathQuerySet
31if TYPE_CHECKING:
32 from paperap.models.document import Document, DocumentQuerySet
35class StoragePath(StandardModel, MatcherMixin):
36 """
37 Represents a storage path in Paperless-NgX.
38 """
40 name: str
41 slug: str | None = None
42 path: str | None = None
43 document_count: int = 0
44 owner: int | None = None
45 user_can_change: bool | None = None
47 class Meta(StandardModel.Meta):
48 # Fields that should not be modified
49 read_only_fields = {"slug", "document_count"}
50 queryset = StoragePathQuerySet
52 @property
53 def documents(self) -> "DocumentQuerySet":
54 """
55 Get documents in this storage path.
56 """
57 return self._client.documents().all().storage_path_id(self.id)