diff --git a/kallithea/controllers/admin/repo_groups.py b/kallithea/controllers/admin/repo_groups.py --- a/kallithea/controllers/admin/repo_groups.py +++ b/kallithea/controllers/admin/repo_groups.py @@ -76,6 +76,7 @@ class RepoGroupsController(base.BaseCont repo_group = db.RepoGroup.get_or_404(group_id) data = repo_group.get_dict() data['group_name'] = repo_group.name + data['owner'] = repo_group.owner.username # fill repository group users for p in repo_group.repo_group_to_perm: @@ -146,7 +147,7 @@ class RepoGroupsController(base.BaseCont group_name=form_result['group_name'], group_description=form_result['group_description'], parent=form_result['parent_group_id'], - owner=request.authuser.user_id, # TODO: make editable + owner=request.authuser.user_id, copy_permissions=form_result['group_copy_permissions'] ) meta.Session().commit() diff --git a/kallithea/model/forms.py b/kallithea/model/forms.py --- a/kallithea/model/forms.py +++ b/kallithea/model/forms.py @@ -173,6 +173,7 @@ def RepoGroupForm(edit=False, old_data=N group_copy_permissions = v.StringBoolean(if_missing=False) if edit: + owner = All(v.UnicodeString(not_empty=True), v.ValidRepoUser()) # FIXME: do a special check that we cannot move a group to one of # its children pass diff --git a/kallithea/model/repo_group.py b/kallithea/model/repo_group.py --- a/kallithea/model/repo_group.py +++ b/kallithea/model/repo_group.py @@ -281,6 +281,8 @@ class RepoGroupModel(object): old_path = repo_group.full_path # change properties + if 'owner' in repo_group_args: + repo_group.owner = db.User.get_by_username(repo_group_args['owner']) if 'group_description' in repo_group_args: repo_group.group_description = repo_group_args['group_description'] if 'parent_group_id' in repo_group_args: diff --git a/kallithea/templates/admin/repo_groups/repo_group_edit_settings.html b/kallithea/templates/admin/repo_groups/repo_group_edit_settings.html --- a/kallithea/templates/admin/repo_groups/repo_group_edit_settings.html +++ b/kallithea/templates/admin/repo_groups/repo_group_edit_settings.html @@ -9,6 +9,13 @@
+ +
+ ${h.text('owner',class_='form-control', placeholder=_('Type name of user'))} +
+
+ +
${h.textarea('group_description',cols=23,rows=5,class_='form-control')} @@ -47,5 +54,6 @@ $("#parent_group_id").select2({ 'dropdownAutoWidth': true }); + SimpleUserAutoComplete($('#owner')); }); diff --git a/kallithea/tests/api/api_base.py b/kallithea/tests/api/api_base.py --- a/kallithea/tests/api/api_base.py +++ b/kallithea/tests/api/api_base.py @@ -1851,7 +1851,7 @@ class _BaseTestApi(object): self._compare_error(id_, expected, given=response.body) @base.parametrize('changing_attr,updates', [ - #('owner', {'owner': base.TEST_USER_REGULAR_LOGIN}), # currently broken + ('owner', {'owner': base.TEST_USER_REGULAR_LOGIN}), ('description', {'description': 'new description'}), ('group_name', {'group_name': 'new_repo_name'}), ('parent', {'parent': 'test_group_for_update'}), diff --git a/kallithea/tests/functional/test_admin_repo_groups.py b/kallithea/tests/functional/test_admin_repo_groups.py --- a/kallithea/tests/functional/test_admin_repo_groups.py +++ b/kallithea/tests/functional/test_admin_repo_groups.py @@ -53,6 +53,7 @@ class TestRepoGroupsController(base.Test # edit response = self.app.post(base.url('update_repos_group', group_name=group_name), {'group_name': group_name, + 'owner': base.TEST_USER_REGULAR2_LOGIN, 'group_description': 'lolo', '_session_csrf_secret_token': self.session_csrf_secret_token()}) self.checkSessionFlash(response, 'Updated repository group %s' % group_name)