Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit0be4761

Browse files
author
Gauvain Pocentek
committed
Implement user emails support
1 parent6f9f42b commit0be4761

File tree

5 files changed

+148
-2
lines changed

5 files changed

+148
-2
lines changed

‎docs/gl_objects/users.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,32 @@
6464
key.delete()
6565
# end key delete
6666

67+
# email list
68+
emails=gl.user_emails.list(user_id=1)
69+
# or
70+
emails=user.emails.list()
71+
# end email list
72+
73+
# email get
74+
email=gl.user_emails.list(1,user_id=1)
75+
# or
76+
email=user.emails.get(1)
77+
# end email get
78+
79+
# email create
80+
k=gl.user_emails.create({'email':'foo@bar.com'},user_id=2)
81+
# or
82+
k=user.emails.create({'email':'foo@bar.com'})
83+
# end email create
84+
85+
# email delete
86+
gl.user_emails.delete(1,user_id=1)
87+
# or
88+
user.emails.delete(1)
89+
# or
90+
email.delete()
91+
# end email delete
92+
6793
# currentuser get
6894
gl.auth()
6995
current_user=gl.user
@@ -86,3 +112,21 @@
86112
# or
87113
key.delete()
88114
# end currentuser key delete
115+
116+
# currentuser email list
117+
emails=gl.user.emails.list()
118+
# end currentuser email list
119+
120+
# currentuser email get
121+
email=gl.user.emails.get(1)
122+
# end currentuser email get
123+
124+
# currentuser email create
125+
email=gl.user.emails.create({'email':'foo@bar.com'})
126+
# end currentuser email create
127+
128+
# currentuser email delete
129+
gl.user.emails.delete(1)
130+
# or
131+
email.delete()
132+
# end currentuser email delete

‎docs/gl_objects/users.rst

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,41 @@ Delete an SSH key for a user:
8888
:start-after: # key delete
8989
:end-before: # end key delete
9090

91+
Emails
92+
======
93+
94+
Use the:class:`~gitlab.objects.UserEmail` objects to manage user emails.
95+
96+
To create:class:`~gitlab.objects.UserEmail` objects use the:attr:`User.emails
97+
<gitlab.objects.User.emails>` or:attr:`gitlab.Gitlab.user_emails` managers.
98+
99+
Exemples
100+
--------
101+
102+
List emails for a user:
103+
104+
..literalinclude::users.py
105+
:start-after: # email list
106+
:end-before: # end email list
107+
108+
Get an email for a user:
109+
110+
..literalinclude::users.py
111+
:start-after: # email get
112+
:end-before: # end email get
113+
114+
Create an email for a user:
115+
116+
..literalinclude::users.py
117+
:start-after: # email create
118+
:end-before: # end email create
119+
120+
Delete an email for a user:
121+
122+
..literalinclude::users.py
123+
:start-after: # email delete
124+
:end-before: # end email delete
125+
91126
Current User
92127
============
93128

@@ -99,6 +134,11 @@ Use the :class:`~gitlab.objects.CurrentUserKey` objects to manage user keys.
99134
To create:class:`~gitlab.objects.CurrentUserKey` objects use the
100135
:attr:`gitlab.objects.CurrentUser.keys <CurrentUser.keys>` manager.
101136

137+
Use the:class:`~gitlab.objects.CurrentUserEmail` objects to manage user emails.
138+
139+
To create:class:`~gitlab.objects.CurrentUserEmail` objects use the
140+
:attr:`gitlab.objects.CurrentUser.emails <CurrentUser.emails>` manager.
141+
102142
Examples
103143
--------
104144

@@ -131,3 +171,27 @@ Delete a key for the current user:
131171
..literalinclude::users.py
132172
:start-after: # currentuser key delete
133173
:end-before: # end currentuser key delete
174+
175+
List the current user emails:
176+
177+
..literalinclude::users.py
178+
:start-after: # currentuser email list
179+
:end-before: # end currentuser email list
180+
181+
Get an email for the current user:
182+
183+
..literalinclude::users.py
184+
:start-after: # currentuser email get
185+
:end-before: # end currentuser email get
186+
187+
Create an email for the current user:
188+
189+
..literalinclude::users.py
190+
:start-after: # currentuser email create
191+
:end-before: # end currentuser email create
192+
193+
Delete an email for the current user:
194+
195+
..literalinclude::users.py
196+
:start-after: # currentuser email delete
197+
:end-before: # end currentuser email delete

‎gitlab/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ class Gitlab(object):
6565
http_username: (str): Username for HTTP authentication
6666
http_password: (str): Password for HTTP authentication
6767
Attributes:
68+
user_emails (UserEmailManager): Manager for GitLab users' emails.
6869
user_keys (UserKeyManager): Manager for GitLab users' SSH keys.
6970
users (UserManager): Manager for GitLab users
7071
group_projects (GroupProjectManager): Manager for GitLab group projects
@@ -136,6 +137,7 @@ def __init__(self, url, private_token=None, email=None, password=None,
136137
self.session=requests.Session()
137138

138139
self.settings=ApplicationSettingsManager(self)
140+
self.user_emails=UserEmailManager(self)
139141
self.user_keys=UserKeyManager(self)
140142
self.users=UserManager(self)
141143
self.group_projects=GroupProjectManager(self)

‎gitlab/objects.py

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,18 @@ def __ne__(self, other):
494494
returnnotself.__eq__(other)
495495

496496

497+
classUserEmail(GitlabObject):
498+
_url='/users/%(user_id)s/emails'
499+
canUpdate=False
500+
shortPrintAttr='email'
501+
requiredUrlAttrs= ['user_id']
502+
requiredCreateAttrs= ['email']
503+
504+
505+
classUserEmailManager(BaseManager):
506+
obj_cls=UserEmail
507+
508+
497509
classUserKey(GitlabObject):
498510
_url='/users/%(user_id)s/keys'
499511
canGet='from_list'
@@ -519,7 +531,10 @@ class User(GitlabObject):
519531
'projects_limit','extern_uid','provider','bio',
520532
'admin','can_create_group','website_url',
521533
'confirm','external']
522-
managers= [('keys',UserKeyManager, [('user_id','id')])]
534+
managers= [
535+
('emails',UserEmailManager, [('user_id','id')]),
536+
('keys',UserKeyManager, [('user_id','id')])
537+
]
523538

524539
def_data_for_gitlab(self,extra_parameters={},update=False):
525540
ifhasattr(self,'confirm'):
@@ -601,6 +616,17 @@ def get_by_username(self, username, **kwargs):
601616
raiseGitlabGetError('no such user: '+username)
602617

603618

619+
classCurrentUserEmail(GitlabObject):
620+
_url='/user/emails'
621+
canUpdate=False
622+
shortPrintAttr='email'
623+
requiredCreateAttrs= ['email']
624+
625+
626+
classCurrentUserEmailManager(BaseManager):
627+
obj_cls=CurrentUserEmail
628+
629+
604630
classCurrentUserKey(GitlabObject):
605631
_url='/user/keys'
606632
canUpdate=False
@@ -619,7 +645,10 @@ class CurrentUser(GitlabObject):
619645
canUpdate=False
620646
canDelete=False
621647
shortPrintAttr='username'
622-
managers= [('keys',CurrentUserKeyManager, [('user_id','id')])]
648+
managers= [
649+
('emails',CurrentUserEmailManager, [('user_id','id')]),
650+
('keys',CurrentUserKeyManager, [('user_id','id')])
651+
]
623652

624653
defKey(self,id=None,**kwargs):
625654
warnings.warn("`Key` is deprecated, use `keys` instead",

‎tools/python_test.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,13 @@
6868
key=new_user.keys.create({'title':'testkey','key':SSH_KEY})
6969
assert(len(new_user.keys.list())==1)
7070
key.delete()
71+
assert(len(new_user.keys.list())==0)
72+
73+
# emails
74+
email=new_user.emails.create({'email':'foo2@bar.com'})
75+
assert(len(new_user.emails.list())==1)
76+
email.delete()
77+
assert(len(new_user.emails.list())==0)
7178

7279
new_user.delete()
7380
foobar_user.delete()

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp