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

1""" 

2---------------------------------------------------------------------------- 

3 

4 METADATA: 

5 

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 

13 

14---------------------------------------------------------------------------- 

15 

16 LAST MODIFIED: 

17 

18 2025-03-04 By Jess Mann 

19 

20""" 

21 

22from __future__ import annotations 

23 

24from typing import Any 

25 

26from paperap.models.ui_settings import UISettings, UISettingsQuerySet 

27from paperap.resources.base import BaseResource, StandardResource 

28 

29 

30class UISettingsResource(StandardResource[UISettings, UISettingsQuerySet]): 

31 """Resource for managing UI settings.""" 

32 

33 model_class = UISettings 

34 queryset_class = UISettingsQuerySet 

35 name = "ui_settings" 

36 

37 def get_current(self) -> UISettings | None: 

38 """ 

39 Get the current user's UI settings. 

40 

41 Returns: 

42 The current user's UI settings. 

43 

44 """ 

45 if not (response := self.client.request("GET", "ui_settings/")): 

46 return None 

47 

48 if response: 

49 return UISettings.from_dict(response) 

50 return None 

51 

52 def update_current(self, settings: dict[str, Any]) -> UISettings: 

53 """ 

54 Update the current user's UI settings. 

55 

56 Args: 

57 settings: The settings to update. 

58 

59 Returns: 

60 The updated UI settings. 

61 

62 """ 

63 ui_settings = self.get_current() 

64 if ui_settings: 

65 ui_settings.settings.update(settings) 

66 return self.update(ui_settings) 

67 

68 # Create new settings 

69 return self.create({"settings": settings})