@@ -494,6 +494,18 @@ def __ne__(self, other):
494494 return not self .__eq__ (other )
495495
496496
497+ class UserEmail (GitlabObject ):
498+ _url = '/users/%(user_id)s/emails'
499+ canUpdate = False
500+ shortPrintAttr = 'email'
501+ requiredUrlAttrs = ['user_id' ]
502+ requiredCreateAttrs = ['email' ]
503+
504+
505+ class UserEmailManager (BaseManager ):
506+ obj_cls = UserEmail
507+
508+
497509class UserKey (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 if hasattr (self , 'confirm' ):
@@ -601,6 +616,17 @@ def get_by_username(self, username, **kwargs):
601616 raise GitlabGetError ('no such user: ' + username )
602617
603618
619+ class CurrentUserEmail (GitlabObject ):
620+ _url = '/user/emails'
621+ canUpdate = False
622+ shortPrintAttr = 'email'
623+ requiredCreateAttrs = ['email' ]
624+
625+
626+ class CurrentUserEmailManager (BaseManager ):
627+ obj_cls = CurrentUserEmail
628+
629+
604630class CurrentUserKey (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 def Key (self , id = None , ** kwargs ):
625654 warnings .warn ("`Key` is deprecated, use `keys` instead" ,
0 commit comments