/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/plugins/gitlab/hoster.py

  • Committer: Breezy landing bot
  • Author(s): Jelmer Vernooij
  • Date: 2020-06-11 16:46:46 UTC
  • mfrom: (7512.1.1 drop-travis-appveyor)
  • Revision ID: breezy.the.bot@gmail.com-20200611164646-w4tufva3jchfv1mn
Drop appveyor + travis configuration.

Merged from https://code.launchpad.net/~jelmer/brz/drop-travis-appveyor/+merge/385578

Show diffs side-by-side

added added

removed removed

Lines of Context:
166
166
        raise NotGitLabUrl(url)
167
167
    path = path.strip('/')
168
168
    parts = path.split('/')
 
169
    if len(parts) < 2:
 
170
        raise NotMergeRequestUrl(host, url)
169
171
    if parts[-2] != 'merge_requests':
170
172
        raise NotMergeRequestUrl(host, url)
171
 
    return host, '/'.join(parts[:-2]), int(parts[-1])
 
173
    if parts[-3] == '-':
 
174
        project_name = '/'.join(parts[:-3])
 
175
    else:
 
176
        project_name = '/'.join(parts[:-2])
 
177
    return host, project_name, int(parts[-1])
172
178
 
173
179
 
174
180
class GitLabMergeProposal(MergeProposal):
244
250
            return False
245
251
        elif self._mr['merge_status'] == 'can_be_merged':
246
252
            return True
 
253
        elif self._mr['merge_status'] in (
 
254
                'unchecked', 'cannot_be_merged_recheck'):
 
255
            # See https://gitlab.com/gitlab-org/gitlab/-/commit/7517105303c for
 
256
            # an explanation of the distinction between unchecked and
 
257
            # cannot_be_merged_recheck
 
258
            return None
247
259
        else:
248
260
            raise ValueError(self._mr['merge_status'])
249
261
 
280
292
    def base_url(self):
281
293
        return self.transport.base
282
294
 
 
295
    @property
 
296
    def base_hostname(self):
 
297
        return urlutils.parse_url(self.base_url)[3]
 
298
 
283
299
    def _api_request(self, method, path, fields=None, body=None):
284
300
        return self.transport.request(
285
301
            method, urlutils.join(self.base_url, 'api', 'v4', path),
374
390
            parameters['owner_id'] = urlutils.quote(owner, '')
375
391
        return self._list_paged(path, parameters, per_page=DEFAULT_PAGE_SIZE)
376
392
 
 
393
    def _get_merge_request(self, project, merge_id):
 
394
        path = 'projects/%s/merge_requests/%d' % (urlutils.quote(str(project), ''), merge_id)
 
395
        response = self._api_request('GET', path)
 
396
        if response.status == 403:
 
397
            raise errors.PermissionDenied(response.text)
 
398
        if response.status != 200:
 
399
            raise errors.InvalidHttpResponse(path, response.text)
 
400
        return json.loads(response.data)
 
401
 
377
402
    def _list_projects(self, owner):
378
403
        path = 'users/%s/projects' % urlutils.quote(str(owner), '')
379
404
        parameters = {}
390
415
    def _create_mergerequest(
391
416
            self, title, source_project_id, target_project_id,
392
417
            source_branch_name, target_branch_name, description,
393
 
            labels=None):
 
418
            labels=None, allow_collaboration=False):
394
419
        path = 'projects/%s/merge_requests' % source_project_id
395
420
        fields = {
396
421
            'title': title,
398
423
            'target_branch': target_branch_name,
399
424
            'target_project_id': target_project_id,
400
425
            'description': description,
 
426
            'allow_collaboration': allow_collaboration,
401
427
            }
402
428
        if labels:
403
429
            fields['labels'] = labels
484
510
            (host, project, branch_name) = parse_gitlab_branch_url(branch)
485
511
        except NotGitLabUrl:
486
512
            return False
487
 
        return (self.base_url == ('https://%s' % host))
 
513
        return self.base_hostname == host
488
514
 
489
515
    def check(self):
490
516
        response = self._api_request('GET', 'user')
539
565
        except NotGitLabUrl:
540
566
            raise UnsupportedHoster(url)
541
567
        except NotMergeRequestUrl as e:
542
 
            if self.base_url == ('https://%s' % e.host):
 
568
            if self.base_hostname == e.host:
543
569
                raise
544
570
            else:
545
571
                raise UnsupportedHoster(url)
546
 
        if self.base_url != ('https://%s' % host):
 
572
        if self.base_hostname != host:
547
573
            raise UnsupportedHoster(url)
548
574
        project = self._get_project(project)
549
 
        mr = project.mergerequests.get(merge_id)
550
 
        return GitLabMergeProposal(mr)
 
575
        mr = self._get_merge_request(project['path_with_namespace'], merge_id)
 
576
        return GitLabMergeProposal(self, mr)
551
577
 
552
578
    def delete_project(self, project):
553
579
        path = 'projects/%s' % urlutils.quote(str(project), '')
623
649
        try:
624
650
            merge_request = self.gl._create_mergerequest(**kwargs)
625
651
        except MergeRequestExists:
626
 
            raise ProposalExists(self.source_branch.user_url)
 
652
            raise MergeProposalExists(self.source_branch.user_url)
627
653
        return GitLabMergeProposal(self.gl, merge_request)
628
654
 
629
655