diff options
-rw-r--r-- | docs/gl_objects/users.py | 44 | ||||
-rw-r--r-- | docs/gl_objects/users.rst | 64 | ||||
-rw-r--r-- | gitlab/__init__.py | 2 | ||||
-rw-r--r-- | gitlab/objects.py | 33 | ||||
-rw-r--r-- | tools/python_test.py | 7 |
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() |