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

1""" 

2 

3 

4 

5 

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

7 

8METADATA: 

9 

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 

17 

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

19 

20LAST MODIFIED: 

21 

222025-03-21 By Jess Mann 

23 

24""" 

25 

26from __future__ import annotations 

27 

28from typing import Any, Iterator, override 

29 

30from paperap.models.ui_settings import UISettings, UISettingsQuerySet 

31from paperap.resources.base import BaseResource, StandardResource 

32 

33 

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

35 """Resource for managing UI settings.""" 

36 

37 model_class = UISettings 

38 queryset_class = UISettingsQuerySet 

39 name = "ui_settings" 

40 

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

42 """ 

43 Get the current user's UI settings. 

44 

45 Returns: 

46 The current user's UI settings. 

47 

48 """ 

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

50 return None 

51 

52 if response: 

53 return self.parse_to_model(response) 

54 return None 

55 

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

57 """ 

58 Update the current user's UI settings. 

59 

60 Args: 

61 settings: The settings to update. 

62 

63 Returns: 

64 The updated UI settings. 

65 

66 """ 

67 ui_settings = self.get_current() 

68 if ui_settings: 

69 ui_settings.settings.update(settings) 

70 return self.update(ui_settings) 

71 

72 # Create new settings 

73 return self.create(**{"settings": settings}) 

74 

75 @override 

76 def delete(self, model_id: int | UISettings) -> None: 

77 raise NotImplementedError("Cannot delete UI settings, per Paperless NGX REST Api")