summaryrefslogtreecommitdiff
path: root/gitlab/v4/objects
diff options
context:
space:
mode:
Diffstat (limited to 'gitlab/v4/objects')
-rw-r--r--gitlab/v4/objects/personal_access_tokens.py23
-rw-r--r--gitlab/v4/objects/users.py2
2 files changed, 21 insertions, 4 deletions
diff --git a/gitlab/v4/objects/personal_access_tokens.py b/gitlab/v4/objects/personal_access_tokens.py
index a326bd6..6cdb305 100644
--- a/gitlab/v4/objects/personal_access_tokens.py
+++ b/gitlab/v4/objects/personal_access_tokens.py
@@ -1,17 +1,32 @@
-from gitlab.base import RESTManager, RESTObject
-from gitlab.mixins import ListMixin
+from gitlab.base import RequiredOptional, RESTManager, RESTObject
+from gitlab.mixins import CreateMixin, DeleteMixin, ListMixin, ObjectDeleteMixin
__all__ = [
"PersonalAccessToken",
"PersonalAccessTokenManager",
+ "UserPersonalAccessToken",
+ "UserPersonalAccessTokenManager",
]
-class PersonalAccessToken(RESTObject):
+class PersonalAccessToken(ObjectDeleteMixin, RESTObject):
pass
-class PersonalAccessTokenManager(ListMixin, RESTManager):
+class PersonalAccessTokenManager(DeleteMixin, ListMixin, RESTManager):
_path = "/personal_access_tokens"
_obj_cls = PersonalAccessToken
_list_filters = ("user_id",)
+
+
+class UserPersonalAccessToken(RESTObject):
+ pass
+
+
+class UserPersonalAccessTokenManager(CreateMixin, RESTManager):
+ _path = "/users/%(user_id)s/personal_access_tokens"
+ _obj_cls = UserPersonalAccessToken
+ _from_parent_attrs = {"user_id": "id"}
+ _create_attrs = RequiredOptional(
+ required=("name", "scopes"), optional=("expires_at",)
+ )
diff --git a/gitlab/v4/objects/users.py b/gitlab/v4/objects/users.py
index c0f8745..63da837 100644
--- a/gitlab/v4/objects/users.py
+++ b/gitlab/v4/objects/users.py
@@ -17,6 +17,7 @@ from gitlab.mixins import (
from .custom_attributes import UserCustomAttributeManager # noqa: F401
from .events import UserEventManager # noqa: F401
+from .personal_access_tokens import UserPersonalAccessTokenManager # noqa: F401
__all__ = [
"CurrentUserEmail",
@@ -122,6 +123,7 @@ class User(SaveMixin, ObjectDeleteMixin, RESTObject):
impersonationtokens: "UserImpersonationTokenManager"
keys: "UserKeyManager"
memberships: "UserMembershipManager"
+ personal_access_tokens: UserPersonalAccessTokenManager
projects: "UserProjectManager"
status: "UserStatusManager"