Coverage for src/paperap/resources/ui_settings.py: 52%
23 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: ui_settings.py
11Project: paperap
12Created: 2025-03-21
13Version: 0.0.9
14Author: Jess Mann
15Email: jess@jmann.me
16Copyright (c) 2025 Jess Mann
18----------------------------------------------------------------------------
20LAST MODIFIED:
222025-03-21 By Jess Mann
24"""
26from __future__ import annotations
28from typing import Any, Iterator, override
30from paperap.models.ui_settings import UISettings, UISettingsQuerySet
31from paperap.resources.base import BaseResource, StandardResource
34class UISettingsResource(StandardResource[UISettings, UISettingsQuerySet]):
35 """Resource for managing UI settings."""
37 model_class = UISettings
38 queryset_class = UISettingsQuerySet
39 name = "ui_settings"
41 def get_current(self) -> UISettings | None:
42 """
43 Get the current user's UI settings.
45 Returns:
46 The current user's UI settings.
48 """
49 if not (response := self.client.request("GET", "ui_settings/")):
50 return None
52 if response:
53 return self.parse_to_model(response)
54 return None
56 def update_current(self, settings: dict[str, Any]) -> UISettings:
57 """
58 Update the current user's UI settings.
60 Args:
61 settings: The settings to update.
63 Returns:
64 The updated UI settings.
66 """
67 ui_settings = self.get_current()
68 if ui_settings:
69 ui_settings.settings.update(settings)
70 return self.update(ui_settings)
72 # Create new settings
73 return self.create(**{"settings": settings})
75 @override
76 def delete(self, model_id: int | UISettings) -> None:
77 raise NotImplementedError("Cannot delete UI settings, per Paperless NGX REST Api")