Coverage for src/paperap/models/user/model.py: 93%
30 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-18 12:26 -0400
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-18 12:26 -0400
1"""
2----------------------------------------------------------------------------
4 METADATA:
6 File: user.py
7 Project: paperap
8 Created: 2025-03-04
9 Version: 0.0.5
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, Optional
26from pydantic import Field
28from paperap.models.abstract.model import StandardModel
29from paperap.models.user.queryset import GroupQuerySet, UserQuerySet
32class Group(StandardModel):
33 """
34 Represents a user group in Paperless-NgX.
35 """
37 name: str | None = None
38 permissions: list[str] = Field(default_factory=list)
40 class Meta(StandardModel.Meta):
41 queryset = GroupQuerySet
43 @property
44 def users(self) -> "UserQuerySet":
45 """
46 Get the users in this group.
48 Returns:
49 UserQuerySet: The users in this group
51 """
52 return self._client.users().all().in_group(self.id)
55class User(StandardModel):
56 """
57 Represents a user in Paperless-NgX.
58 """
60 username: str | None = None
61 email: str | None = None
62 password: str | None = None
63 first_name: str | None = None
64 last_name: str | None = None
65 date_joined: str | None = None
66 is_staff: bool | None = None
67 is_active: bool | None = None
68 is_superuser: bool | None = None
69 groups: list[int] = Field(default_factory=list)
70 user_permissions: list[str] = Field(default_factory=list)
71 inherited_permissions: list[str] = Field(default_factory=list)
73 class Meta(StandardModel.Meta):
74 queryset = UserQuerySet
76 def get_groups(self) -> "GroupQuerySet":
77 """
78 Get the groups this user is a member of.
80 Returns:
81 GroupQuerySet: The groups this user is a member
83 """
84 return self._client.groups().all().id(self.groups)