177
177
def _update(self, **kwargs):
178
178
self.gl._update_merge_request(self._mr['project_id'], self._mr['iid'], kwargs)
181
return "<%s at %r>" % (type(self).__name__, self._mr['web_url'])
182
185
return self._mr['web_url']
256
265
self.headers = {"Private-Token": private_token}
268
def _get_user(self, username):
269
path = 'users/%s' % urlutils.quote(str(project_name), '')
270
response = self._api_request('GET', path)
271
if response.status == 404:
272
raise KeyError('no such user %s' % username)
273
if response.status == 200:
274
return json.loads(response.data)
275
raise errors.InvalidHttpResponse(path, response.text)
277
def _get_user_by_email(self, username):
278
path = 'users?search=%s' % urlutils.quote(str(project_name), '')
279
response = self._api_request('GET', path)
280
if response.status == 404:
281
raise KeyError('no such user %s' % username)
282
if response.status == 200:
283
ret = json.loads(response.data)
285
raise ValueError('unexpected number of results; %r' % ret)
287
raise errors.InvalidHttpResponse(path, response.text)
259
289
def _get_project(self, project_name):
260
290
path = 'projects/%s' % urlutils.quote(str(project_name), '')
261
291
response = self._api_request('GET', path)
505
535
if prerequisite_branch is not None:
506
536
raise PrerequisiteBranchUnsupported(self)
507
537
# Note that commit_message is ignored, since Gitlab doesn't support it.
508
# TODO(jelmer): Support reviewers
509
538
source_project = self.gl._get_project(self.source_project_name)
510
539
target_project = self.gl._get_project(self.target_project_name)
511
540
# TODO(jelmer): Allow setting title explicitly
522
551
'description': description}
524
553
kwargs['labels'] = ','.join(labels)
555
kwargs['assignee_ids'] = []
556
for reviewer in reviewers:
558
user = self.gl._get_user_by_email(reviewer)
560
user = self.gl._get_user(reviewer)
561
kwargs['assignee_ids'].append(user['id'])
525
562
merge_request = self.gl._create_mergerequest(**kwargs)
526
563
return GitLabMergeProposal(self.gl, merge_request)