# HG changeset patch # User Mads Kiilerich # Date 1670692685 -3600 # Node ID abc29122c7f2f4cd2bde3ed40399541d7ccb4703 # Parent fdc9c2fd439ae7c73c7f4021aa9084273499675d repo group: introduce editing of owner The repo group owner concept was only partially implemented. Owners were shown in the repo group listing, but couldn't be changed. Users owning repo groups couldn't be deleted, with no other solution than deleting owned repo groups. This also fixes the existing broken update_repo_group API, which tried to use unimplemented functionality. diff -r fdc9c2fd439a -r abc29122c7f2 kallithea/controllers/admin/repo_groups.py --- a/kallithea/controllers/admin/repo_groups.py Sat Dec 10 18:08:12 2022 +0100 +++ b/kallithea/controllers/admin/repo_groups.py Sat Dec 10 18:18:05 2022 +0100 @@ -76,6 +76,7 @@ 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 @@ 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 -r fdc9c2fd439a -r abc29122c7f2 kallithea/model/forms.py --- a/kallithea/model/forms.py Sat Dec 10 18:08:12 2022 +0100 +++ b/kallithea/model/forms.py Sat Dec 10 18:18:05 2022 +0100 @@ -173,6 +173,7 @@ 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 -r fdc9c2fd439a -r abc29122c7f2 kallithea/model/repo_group.py --- a/kallithea/model/repo_group.py Sat Dec 10 18:08:12 2022 +0100 +++ b/kallithea/model/repo_group.py Sat Dec 10 18:18:05 2022 +0100 @@ -281,6 +281,8 @@ 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 -r fdc9c2fd439a -r abc29122c7f2 kallithea/templates/admin/repo_groups/repo_group_edit_settings.html --- a/kallithea/templates/admin/repo_groups/repo_group_edit_settings.html Sat Dec 10 18:08:12 2022 +0100 +++ b/kallithea/templates/admin/repo_groups/repo_group_edit_settings.html Sat Dec 10 18:18:05 2022 +0100 @@ -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 -r fdc9c2fd439a -r abc29122c7f2 kallithea/tests/api/api_base.py --- a/kallithea/tests/api/api_base.py Sat Dec 10 18:08:12 2022 +0100 +++ b/kallithea/tests/api/api_base.py Sat Dec 10 18:18:05 2022 +0100 @@ -1851,7 +1851,7 @@ 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 -r fdc9c2fd439a -r abc29122c7f2 kallithea/tests/functional/test_admin_repo_groups.py --- a/kallithea/tests/functional/test_admin_repo_groups.py Sat Dec 10 18:08:12 2022 +0100 +++ b/kallithea/tests/functional/test_admin_repo_groups.py Sat Dec 10 18:18:05 2022 +0100 @@ -53,6 +53,7 @@ # 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)