Coverage for src/paperap/resources/ui_settings.py: 50%
20 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-20 13:17 -0400
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-20 13:17 -0400
1"""
2----------------------------------------------------------------------------
4 METADATA:
6 File: ui_settings.py
7 Project: paperap
8 Created: 2025-03-04
9 Version: 0.0.8
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 typing import Any
26from paperap.models.ui_settings import UISettings, UISettingsQuerySet
27from paperap.resources.base import BaseResource, StandardResource
30class UISettingsResource(StandardResource[UISettings, UISettingsQuerySet]):
31 """Resource for managing UI settings."""
33 model_class = UISettings
34 queryset_class = UISettingsQuerySet
35 name = "ui_settings"
37 def get_current(self) -> UISettings | None:
38 """
39 Get the current user's UI settings.
41 Returns:
42 The current user's UI settings.
44 """
45 if not (response := self.client.request("GET", "ui_settings/")):
46 return None
48 if response:
49 return UISettings.from_dict(response)
50 return None
52 def update_current(self, settings: dict[str, Any]) -> UISettings:
53 """
54 Update the current user's UI settings.
56 Args:
57 settings: The settings to update.
59 Returns:
60 The updated UI settings.
62 """
63 ui_settings = self.get_current()
64 if ui_settings:
65 ui_settings.settings.update(settings)
66 return self.update(ui_settings)
68 # Create new settings
69 return self.create({"settings": settings})