summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/gl_objects/users.py44
-rw-r--r--docs/gl_objects/users.rst64
-rw-r--r--gitlab/__init__.py2
-rw-r--r--gitlab/objects.py33
-rw-r--r--tools/python_test.py7
5 files changed, 148 insertions, 2 deletions
diff --git a/docs/gl_objects/users.py b/docs/gl_objects/users.py
index 99b986f..9b127a4 100644
--- a/docs/gl_objects/users.py
+++ b/docs/gl_objects/users.py
@@ -64,6 +64,32 @@ user.keys.delete(1)
key.delete()
# end key delete
+# email list
+emails = gl.user_emails.list(user_id=1)
+# or
+emails = user.emails.list()
+# end email list
+
+# email get
+email = gl.user_emails.list(1, user_id=1)
+# or
+email = user.emails.get(1)
+# end email get
+
+# email create
+k = gl.user_emails.create({'email': 'foo@bar.com'}, user_id=2)
+# or
+k = user.emails.create({'email': 'foo@bar.com'})
+# end email create
+
+# email delete
+gl.user_emails.delete(1, user_id=1)
+# or
+user.emails.delete(1)
+# or
+email.delete()
+# end email delete
+
# currentuser get
gl.auth()
current_user = gl.user
@@ -86,3 +112,21 @@ gl.user.keys.delete(1)
# or
key.delete()
# end currentuser key delete
+
+# currentuser email list
+emails = gl.user.emails.list()
+# end currentuser email list
+
+# currentuser email get
+email = gl.user.emails.get(1)
+# end currentuser email get
+
+# currentuser email create
+email = gl.user.emails.create({'email': 'foo@bar.com'})
+# end currentuser email create
+
+# currentuser email delete
+gl.user.emails.delete(1)
+# or
+email.delete()
+# end currentuser email delete
diff --git a/docs/gl_objects/users.rst b/docs/gl_objects/users.rst
index d7a9ab7..8df93b0 100644
--- a/docs/gl_objects/users.rst
+++ b/docs/gl_objects/users.rst
@@ -88,6 +88,41 @@ Delete an SSH key for a user:
:start-after: # key delete
:end-before: # end key delete
+Emails
+======
+
+Use the :class:`~gitlab.objects.UserEmail` objects to manage user emails.
+
+To create :class:`~gitlab.objects.UserEmail` objects use the :attr:`User.emails
+<gitlab.objects.User.emails>` or :attr:`gitlab.Gitlab.user_emails` managers.
+
+Exemples
+--------
+
+List emails for a user:
+
+.. literalinclude:: users.py
+ :start-after: # email list
+ :end-before: # end email list
+
+Get an email for a user:
+
+.. literalinclude:: users.py
+ :start-after: # email get
+ :end-before: # end email get
+
+Create an email for a user:
+
+.. literalinclude:: users.py
+ :start-after: # email create
+ :end-before: # end email create
+
+Delete an email for a user:
+
+.. literalinclude:: users.py
+ :start-after: # email delete
+ :end-before: # end email delete
+
Current User
============
@@ -99,6 +134,11 @@ Use the :class:`~gitlab.objects.CurrentUserKey` objects to manage user keys.
To create :class:`~gitlab.objects.CurrentUserKey` objects use the
:attr:`gitlab.objects.CurrentUser.keys <CurrentUser.keys>` manager.
+Use the :class:`~gitlab.objects.CurrentUserEmail` objects to manage user emails.
+
+To create :class:`~gitlab.objects.CurrentUserEmail` objects use the
+:attr:`gitlab.objects.CurrentUser.emails <CurrentUser.emails>` manager.
+
Examples
--------
@@ -131,3 +171,27 @@ Delete a key for the current user:
.. literalinclude:: users.py
:start-after: # currentuser key delete
:end-before: # end currentuser key delete
+
+List the current user emails:
+
+.. literalinclude:: users.py
+ :start-after: # currentuser email list
+ :end-before: # end currentuser email list
+
+Get an email for the current user:
+
+.. literalinclude:: users.py
+ :start-after: # currentuser email get
+ :end-before: # end currentuser email get
+
+Create an email for the current user:
+
+.. literalinclude:: users.py
+ :start-after: # currentuser email create
+ :end-before: # end currentuser email create
+
+Delete an email for the current user:
+
+.. literalinclude:: users.py
+ :start-after: # currentuser email delete
+ :end-before: # end currentuser email delete
diff --git a/gitlab/__init__.py b/gitlab/__init__.py
index 836aaea..3ef5dff 100644
--- a/gitlab/__init__.py
+++ b/gitlab/__init__.py
@@ -65,6 +65,7 @@ class Gitlab(object):
http_username: (str): Username for HTTP authentication
http_password: (str): Password for HTTP authentication
Attributes:
+ user_emails (UserEmailManager): Manager for GitLab users' emails.
user_keys (UserKeyManager): Manager for GitLab users' SSH keys.
users (UserManager): Manager for GitLab users
group_projects (GroupProjectManager): Manager for GitLab group projects
@@ -136,6 +137,7 @@ class Gitlab(object):
self.session = requests.Session()
self.settings = ApplicationSettingsManager(self)
+ self.user_emails = UserEmailManager(self)
self.user_keys = UserKeyManager(self)
self.users = UserManager(self)
self.group_projects = GroupProjectManager(self)
diff --git a/gitlab/objects.py b/gitlab/objects.py
index 9ff8231..1827595 100644
--- a/gitlab/objects.py
+++ b/gitlab/objects.py
@@ -494,6 +494,18 @@ class GitlabObject(object):
return not self.__eq__(other)
+class UserEmail(GitlabObject):
+ _url = '/users/%(user_id)s/emails'
+ canUpdate = False
+ shortPrintAttr = 'email'
+ requiredUrlAttrs = ['user_id']
+ requiredCreateAttrs = ['email']
+
+
+class UserEmailManager(BaseManager):
+ obj_cls = UserEmail
+
+
class UserKey(GitlabObject):
_url = '/users/%(user_id)s/keys'
canGet = 'from_list'
@@ -519,7 +531,10 @@ class User(GitlabObject):
'projects_limit', 'extern_uid', 'provider', 'bio',
'admin', 'can_create_group', 'website_url',
'confirm', 'external']
- managers = [('keys', UserKeyManager, [('user_id', 'id')])]
+ managers = [
+ ('emails', UserEmailManager, [('user_id', 'id')]),
+ ('keys', UserKeyManager, [('user_id', 'id')])
+ ]
def _data_for_gitlab(self, extra_parameters={}, update=False):
if hasattr(self, 'confirm'):
@@ -601,6 +616,17 @@ class UserManager(BaseManager):
raise GitlabGetError('no such user: ' + username)
+class CurrentUserEmail(GitlabObject):
+ _url = '/user/emails'
+ canUpdate = False
+ shortPrintAttr = 'email'
+ requiredCreateAttrs = ['email']
+
+
+class CurrentUserEmailManager(BaseManager):
+ obj_cls = CurrentUserEmail
+
+
class CurrentUserKey(GitlabObject):
_url = '/user/keys'
canUpdate = False
@@ -619,7 +645,10 @@ class CurrentUser(GitlabObject):
canUpdate = False
canDelete = False
shortPrintAttr = 'username'
- managers = [('keys', CurrentUserKeyManager, [('user_id', 'id')])]
+ managers = [
+ ('emails', CurrentUserEmailManager, [('user_id', 'id')]),
+ ('keys', CurrentUserKeyManager, [('user_id', 'id')])
+ ]
def Key(self, id=None, **kwargs):
warnings.warn("`Key` is deprecated, use `keys` instead",
diff --git a/tools/python_test.py b/tools/python_test.py
index f95b132..9204862 100644
--- a/tools/python_test.py
+++ b/tools/python_test.py
@@ -68,6 +68,13 @@ else:
key = new_user.keys.create({'title': 'testkey', 'key': SSH_KEY})
assert(len(new_user.keys.list()) == 1)
key.delete()
+assert(len(new_user.keys.list()) == 0)
+
+# emails
+email = new_user.emails.create({'email': 'foo2@bar.com'})
+assert(len(new_user.emails.list()) == 1)
+email.delete()
+assert(len(new_user.emails.list()) == 0)
new_user.delete()
foobar_user.delete()