@@ -190,7 +190,11 @@ def set_url(self, url):
190190
191191 def _construct_url (self , id_ , obj , parameters ):
192192 args = _sanitize_dict (parameters )
193- url = obj ._url % args
193+ if id_ is None and obj ._urlPlural is not None :
194+ url = obj ._urlPlural % args
195+ else :
196+ url = obj ._url % args
197+
194198 if id_ is not None :
195199 url = '%s%s/%s' % (self ._url , url , str (id_ ))
196200 else :
@@ -616,6 +620,8 @@ class GitlabObject(object):
616620 """
617621 #: Url to use in GitLab for this object
618622 _url = None
623+ #some objects (e.g. merge requests) have different urls for singular and plural
624+ _urlPlural = None
619625 _returnClass = None
620626 _constructorTypes = None
621627 #: Whether _get_list_or_object should return list or object when id is None
@@ -1056,14 +1062,14 @@ class ProjectTag(GitlabObject):
10561062class ProjectMergeRequestNote (GitlabObject ):
10571063 _url = '/projects/%(project_id)s/merge_requests/%(merge_request_id)s/notes'
10581064 _constructorTypes = {'author' : 'User' }
1059- canUpdate = False
10601065 canDelete = False
10611066 requiredUrlAttrs = ['project_id' , 'merge_request_id' ]
10621067 requiredCreateAttrs = ['body' ]
10631068
10641069
10651070class ProjectMergeRequest (GitlabObject ):
1066- _url = '/projects/%(project_id)s/merge_requests'
1071+ _url = '/projects/%(project_id)s/merge_request'
1072+ _urlPlural = '/projects/%(project_id)s/merge_requests'
10671073 _constructorTypes = {'author' : 'User' , 'assignee' : 'User' }
10681074 canDelete = False
10691075 requiredUrlAttrs = ['project_id' ]
0 commit comments