/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/propose/gitlabs.py

  • Committer: Jelmer Vernooij
  • Date: 2019-12-22 23:16:21 UTC
  • mfrom: (7422 work)
  • mto: This revision was merged to the branch mainline in revision 7426.
  • Revision ID: jelmer@jelmer.uk-20191222231621-3p14u9zaypv3q8zl
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
46
46
 
47
47
 
48
48
_DEFAULT_FILES = ['/etc/python-gitlab.cfg', '~/.python-gitlab.cfg']
 
49
DEFAULT_PAGE_SIZE = 50
49
50
 
50
51
 
51
52
def mp_status_to_status(status):
217
218
        return (self._mr['state'] == 'closed')
218
219
 
219
220
    def reopen(self):
220
 
        return self._update(state_event='open')
 
221
        return self._update(state_event='reopen')
221
222
 
222
223
    def close(self):
223
224
        self._update(state_event='close')
238
239
def gitlab_url_to_bzr_url(url, name):
239
240
    if not PY3:
240
241
        name = name.encode('utf-8')
241
 
    return urlutils.join_segment_parameters(
242
 
        git_url_to_bzr_url(url), {"branch": name})
 
242
    return git_url_to_bzr_url(url, branch=name)
243
243
 
244
244
 
245
245
class GitLab(Hoster):
316
316
    def _get_logged_in_username(self):
317
317
        return self._current_user['username']
318
318
 
 
319
    def _list_paged(self, path, parameters=None, per_page=None):
 
320
        if parameters is None:
 
321
            parameters = {}
 
322
        else:
 
323
            parameters = dict(parameters.items())
 
324
        if per_page:
 
325
            parameters['per_page'] = str(per_page)
 
326
        page = "1"
 
327
        while page:
 
328
            parameters['page'] = page
 
329
            response = self._api_request(
 
330
                'GET', path + '?' +
 
331
                ';'.join(['%s=%s' % item for item in parameters.items()]))
 
332
            if response.status == 403:
 
333
                raise errors.PermissionDenied(response.text)
 
334
            if response.status != 200:
 
335
                raise errors.InvalidHttpResponse(path, response.text)
 
336
            page = response.getheader("X-Next-Page")
 
337
            for entry in json.loads(response.data):
 
338
                yield entry
 
339
 
319
340
    def _list_merge_requests(self, owner=None, project=None, state=None):
320
341
        if project is not None:
321
342
            path = 'projects/%s/merge_requests' % urlutils.quote(str(project), '')
326
347
            parameters['state'] = state
327
348
        if owner:
328
349
            parameters['owner_id'] = urlutils.quote(owner, '')
329
 
        response = self._api_request(
330
 
            'GET', path + '?' +
331
 
            ';'.join(['%s=%s' % item for item in parameters.items()]))
332
 
        if response.status == 403:
333
 
            raise errors.PermissionDenied(response.text)
334
 
        if response.status == 200:
335
 
            return json.loads(response.data)
336
 
        raise errors.InvalidHttpResponse(path, response.text)
 
350
        return self._list_paged(path, parameters, per_page=DEFAULT_PAGE_SIZE)
337
351
 
338
352
    def _update_merge_request(self, project_id, iid, mr):
339
353
        path = 'projects/%s/merge_requests/%s' % (