Changeset - abc29122c7f2
[Not reviewed]
stable
0 6 0
Mads Kiilerich - 3 years ago 2022-12-10 18:18:05
mads@kiilerich.com
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.
6 files changed with 15 insertions and 2 deletions:
0 comments (0 inline, 0 general)
kallithea/controllers/admin/repo_groups.py
Show inline comments
 
@@ -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()
kallithea/model/forms.py
Show inline comments
 
@@ -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
kallithea/model/repo_group.py
Show inline comments
 
@@ -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:
kallithea/templates/admin/repo_groups/repo_group_edit_settings.html
Show inline comments
 
@@ -9,6 +9,13 @@ ${h.form(url('update_repos_group',group_
 
        </div>
 

	
 
        <div class="form-group">
 
            <label class="control-label" for="owner">${_('Owner')}:</label>
 
            <div>
 
               ${h.text('owner',class_='form-control', placeholder=_('Type name of user'))}
 
            </div>
 
        </div>
 

	
 
        <div class="form-group">
 
            <label class="control-label" for="group_description">${_('Description')}:</label>
 
            <div>
 
                ${h.textarea('group_description',cols=23,rows=5,class_='form-control')}
 
@@ -47,5 +54,6 @@ ${h.end_form()}
 
        $("#parent_group_id").select2({
 
            'dropdownAutoWidth': true
 
        });
 
        SimpleUserAutoComplete($('#owner'));
 
    });
 
</script>
kallithea/tests/api/api_base.py
Show inline comments
 
@@ -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'}),
kallithea/tests/functional/test_admin_repo_groups.py
Show inline comments
 
@@ -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)
0 comments (0 inline, 0 general)