Mercurial > kallithea
changeset 5948:7d0052c68a6f
Merge stable
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Mon, 30 May 2016 15:44:36 +0200 |
parents | a3c91d420bf3 (current diff) 6754597990cb (diff) |
children | 3578484a86d2 |
files | kallithea/controllers/api/api.py kallithea/model/repo.py kallithea/tests/__init__.py kallithea/tests/api/api_base.py |
diffstat | 5 files changed, 59 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/controllers/api/api.py Mon May 23 18:04:56 2016 +0200 +++ b/kallithea/controllers/api/api.py Mon May 30 15:44:36 2016 +0200 @@ -1566,10 +1566,7 @@ 'Only Kallithea admin can specify `owner` param' ) - updates = { - # update function requires this. - 'repo_name': repo.repo_name - } + updates = {} repo_group = group if not isinstance(repo_group, Optional): repo_group = get_repo_group_or_error(repo_group) @@ -1677,9 +1674,10 @@ try: # create structure of groups and return the last group group = map_groups(fork_name) + fork_base_name = fork_name.rsplit('/', 1)[-1] form_data = dict( - repo_name=fork_name, + repo_name=fork_base_name, repo_name_full=fork_name, repo_group=group, repo_type=repo.repo_type,
--- a/kallithea/lib/dbmigrate/versions/018_version_2_0_0.py Mon May 23 18:04:56 2016 +0200 +++ b/kallithea/lib/dbmigrate/versions/018_version_2_0_0.py Mon May 30 15:44:36 2016 +0200 @@ -64,9 +64,11 @@ old_setting = models.Setting.get_by_name(k) name = 'auth_%s' % k setting = models.Setting.get_by_name(name) - if not setting: + if setting is None: # if we don't have this option create it - setting = models.Setting(name, old_setting.app_settings_value, t) + if old_setting is not None: + v = old_setting.app_settings_value + setting = models.Setting(name, v, t) _SESSION().add(setting) _SESSION().commit()
--- a/kallithea/model/repo.py Mon May 23 18:04:56 2016 +0200 +++ b/kallithea/model/repo.py Mon May 30 15:44:36 2016 +0200 @@ -327,6 +327,7 @@ if 'repo_group' in kwargs: cur_repo.group = RepoGroup.get(kwargs['repo_group']) + cur_repo.repo_name = cur_repo.get_new_name(cur_repo.just_name) log.debug('Updating repo %s with params:%s', cur_repo, kwargs) for k in ['repo_enable_downloads', 'repo_description', @@ -341,10 +342,10 @@ if clone_uri is not None and clone_uri != cur_repo.clone_uri_hidden: cur_repo.clone_uri = clone_uri - new_name = cur_repo.get_new_name(kwargs['repo_name']) - cur_repo.repo_name = new_name + if 'repo_name' in kwargs: + cur_repo.repo_name = cur_repo.get_new_name(kwargs['repo_name']) + #if private flag is set, reset default permission to NONE - if kwargs.get('repo_private'): EMPTY_PERM = 'repository.none' RepoModel().grant_user_permission( @@ -360,9 +361,9 @@ self.sa.add(ex_field) self.sa.add(cur_repo) - if org_repo_name != new_name: + if org_repo_name != cur_repo.repo_name: # rename repository - self._rename_filesystem_repo(old=org_repo_name, new=new_name) + self._rename_filesystem_repo(old=org_repo_name, new=cur_repo.repo_name) return cur_repo except Exception:
--- a/kallithea/tests/__init__.py Mon May 23 18:04:56 2016 +0200 +++ b/kallithea/tests/__init__.py Mon May 30 15:44:36 2016 +0200 @@ -226,4 +226,3 @@ def checkSessionFlashRegex(self, response, regex, skip=0): self.checkSessionFlash(response, regex, skip=skip, _matcher=re.search) -
--- a/kallithea/tests/api/api_base.py Mon May 23 18:04:56 2016 +0200 +++ b/kallithea/tests/api/api_base.py Mon May 30 15:44:36 2016 +0200 @@ -1180,6 +1180,47 @@ if changing_attr == 'repo_group': fixture.destroy_repo_group(updates['group']) + @parametrize('changing_attr,updates', [ + ('owner', {'owner': TEST_USER_REGULAR_LOGIN}), + ('description', {'description': u'new description'}), + ('active', {'active': True}), + ('active', {'active': False}), + ('clone_uri', {'clone_uri': 'http://example.com/repo'}), + ('clone_uri', {'clone_uri': None}), + ('landing_rev', {'landing_rev': 'branch:master'}), + ('enable_statistics', {'enable_statistics': True}), + ('enable_locking', {'enable_locking': True}), + ('enable_downloads', {'enable_downloads': True}), + ('name', {'name': u'new_repo_name'}), + ('repo_group', {'group': u'test_group_for_update'}), + ]) + def test_api_update_group_repo(self, changing_attr, updates): + group_name = u'lololo' + fixture.create_repo_group(group_name) + repo_name = u'%s/api_update_me' % group_name + repo = fixture.create_repo(repo_name, repo_group=group_name, repo_type=self.REPO_TYPE) + if changing_attr == 'repo_group': + fixture.create_repo_group(updates['group']) + + id_, params = _build_data(self.apikey, 'update_repo', + repoid=repo_name, **updates) + response = api_call(self, params) + if changing_attr == 'name': + repo_name = u'%s/%s' % (group_name, updates['name']) + if changing_attr == 'repo_group': + repo_name = u'/'.join([updates['group'], repo_name.rsplit('/', 1)[-1]]) + try: + expected = { + 'msg': 'updated repo ID:%s %s' % (repo.repo_id, repo_name), + 'repository': repo.get_api_data() + } + self._compare_ok(id_, expected, given=response.body) + finally: + fixture.destroy_repo(repo_name) + if changing_attr == 'repo_group': + fixture.destroy_repo_group(updates['group']) + fixture.destroy_repo_group(group_name) + def test_api_update_repo_repo_group_does_not_exist(self): repo_name = u'admin_owned' fixture.create_repo(repo_name) @@ -1359,8 +1400,11 @@ self._compare_ok(id_, expected, given=response.body) fixture.destroy_repo(fork_name) - def test_api_fork_repo_non_admin(self): - fork_name = u'api-repo-fork' + @parametrize('fork_name', [ + u'api-repo-fork', + u'%s/api-repo-fork' % TEST_REPO_GROUP, + ]) + def test_api_fork_repo_non_admin(self, fork_name): id_, params = _build_data(self.apikey_regular, 'fork_repo', repoid=self.REPO, fork_name=fork_name,