Coverage for src/paperap/models/ui_settings/queryset.py: 82%
11 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: queryset.py
11 Project: paperap
12Created: 2025-03-21
13 Version: 0.0.9
14Author: Jess Mann
15Email: jess@jmann.me
16 Copyright (c) 2025 Jess Mann
18----------------------------------------------------------------------------
20LAST MODIFIED:
222025-03-21 By Jess Mann
24"""
26from __future__ import annotations
28import logging
29from typing import TYPE_CHECKING, Any, Literal, Self, override
31from paperap.models.abstract.queryset import BaseQuerySet, StandardQuerySet
33if TYPE_CHECKING:
34 from paperap.models.ui_settings.model import UISettings
36logger = logging.getLogger(__name__)
39class UISettingsQuerySet(StandardQuerySet["UISettings"]):
40 """
41 A lazy-loaded, chainable query interface for Paperless NGX resources.
43 BaseQuerySet provides pagination, filtering, and caching functionality similar to Django's BaseQuerySet.
44 It's designed to be lazy - only fetching data when it's actually needed.
45 """
47 @override
48 def count(self) -> Literal[1]:
49 """
50 Count the number of UI settings.
52 UISettings only ever returns one element.
54 Returns:
55 int: The number of UI settings
57 """
58 return 1
60 def has_permission(self, value: str) -> Self:
61 """
62 Filter UI settings by permissions.
64 Args:
65 value (str): The permissions to filter by
67 Returns:
68 UISettingsQuerySet: The filtered queryset
70 """
71 return self.filter(permissions__contains=value)