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

1""" 

2 

3 

4 

5 

6---------------------------------------------------------------------------- 

7 

8METADATA: 

9 

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 

17 

18---------------------------------------------------------------------------- 

19 

20LAST MODIFIED: 

21 

222025-03-21 By Jess Mann 

23 

24""" 

25 

26from __future__ import annotations 

27 

28import logging 

29from typing import TYPE_CHECKING, Any, Literal, Self, override 

30 

31from paperap.models.abstract.queryset import BaseQuerySet, StandardQuerySet 

32 

33if TYPE_CHECKING: 

34 from paperap.models.ui_settings.model import UISettings 

35 

36logger = logging.getLogger(__name__) 

37 

38 

39class UISettingsQuerySet(StandardQuerySet["UISettings"]): 

40 """ 

41 A lazy-loaded, chainable query interface for Paperless NGX resources. 

42 

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 """ 

46 

47 @override 

48 def count(self) -> Literal[1]: 

49 """ 

50 Count the number of UI settings. 

51 

52 UISettings only ever returns one element. 

53 

54 Returns: 

55 int: The number of UI settings 

56 

57 """ 

58 return 1 

59 

60 def has_permission(self, value: str) -> Self: 

61 """ 

62 Filter UI settings by permissions. 

63 

64 Args: 

65 value (str): The permissions to filter by 

66 

67 Returns: 

68 UISettingsQuerySet: The filtered queryset 

69 

70 """ 

71 return self.filter(permissions__contains=value)