Mercurial > kallithea
diff rhodecode/controllers/admin/repos.py @ 1159:187a924ed653 beta
Changes for repo groups
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sat, 19 Mar 2011 18:52:27 +0100 |
parents | f3f847712f87 |
children | 6e70fcca8de8 |
line wrap: on
line diff
--- a/rhodecode/controllers/admin/repos.py Sat Mar 19 01:07:53 2011 +0100 +++ b/rhodecode/controllers/admin/repos.py Sat Mar 19 18:52:27 2011 +0100 @@ -63,19 +63,36 @@ c.admin_username = session.get('admin_username') super(ReposController, self).__before__() - + def __load_defaults(self): + repo_model = RepoModel() - def __load_data(self, repo_name): + c.repo_groups = [('', '')] + parents_link = lambda k:h.literal('»'.join( + map(lambda k:k.group_name, + k.parents + [k]) + ) + ) + + c.repo_groups.extend([(x.group_id, parents_link(x)) for \ + x in self.sa.query(Group).all()]) + c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups) + c.users_array = repo_model.get_users_js() + c.users_groups_array = repo_model.get_users_groups_js() + + def __load_data(self, repo_name=None): """ Load defaults settings for edit, and update :param repo_name: """ + self.__load_defaults() + repo, dbrepo = ScmModel().get(repo_name, retval='repo') repo_model = RepoModel() c.repo_info = repo_model.get_by_repo_name(repo_name) + if c.repo_info is None: h.flash(_('%s repository is not mapped to db perhaps' ' it was created or renamed from the filesystem' @@ -86,10 +103,6 @@ return redirect(url('repos')) - - c.repo_groups = [('', '')] - c.repo_groups.extend([(x.group_id, x.group_name) for x in self.sa.query(Group).all()]) - c.default_user_id = User.by_username('default').user_id c.in_public_journal = self.sa.query(UserFollowing)\ .filter(UserFollowing.user_id == c.default_user_id)\ @@ -109,13 +122,13 @@ c.stats_percentage = '%.2f' % ((float((last_rev)) / c.repo_last_rev) * 100) - c.users_array = repo_model.get_users_js() - c.users_groups_array = repo_model.get_users_groups_js() + defaults = c.repo_info.get_dict() group, repo_name = c.repo_info.groups_and_repo defaults['repo_name'] = repo_name - defaults['repo_group'] = getattr(group, 'group_id', None) + defaults['repo_group'] = getattr(group[-1], 'group_id', None) + #fill owner if c.repo_info.user: defaults.update({'user':c.repo_info.user.username}) @@ -153,11 +166,11 @@ POST /repos: Create a new item""" # url('repos') repo_model = RepoModel() - c.repo_groups = [('', '')] - c.repo_groups.extend([(x.group_id, x.group_name) for x in self.sa.query(Group).all()]) + self.__load_defaults() form_result = {} try: - form_result = RepoForm()(repo_groups=c.repo_groups).to_python(dict(request.POST)) + form_result = RepoForm(repo_groups=c.repo_groups_choices)()\ + .to_python(dict(request.POST)) repo_model.create(form_result, self.rhodecode_user) if form_result['clone_uri']: h.flash(_('created repository %s from %s') \ @@ -177,8 +190,6 @@ except formencode.Invalid, errors: c.new_repo = errors.value['repo_name'] - c.repo_groups = [('', '')] - c.repo_groups.extend([(x.group_id, x.group_name) for x in self.sa.query(Group).all()]) if request.POST.get('user_created'): r = render('admin/repos/repo_add_create_repository.html') @@ -206,8 +217,7 @@ """GET /repos/new: Form to create a new item""" new_repo = request.GET.get('repo', '') c.new_repo = repo_name_slug(new_repo) - c.repo_groups = [('', '')] - c.repo_groups.extend([(x.group_id, x.group_name) for x in self.sa.query(Group).all()]) + self.__load_defaults() return render('admin/repos/repo_add.html') @HasPermissionAllDecorator('hg.admin') @@ -220,9 +230,11 @@ # h.form(url('repo', repo_name=ID), # method='put') # url('repo', repo_name=ID) + self.__load_defaults() repo_model = RepoModel() changed_name = repo_name - _form = RepoForm(edit=True, old_data={'repo_name':repo_name})() + _form = RepoForm(edit=True, old_data={'repo_name':repo_name}, + repo_groups=c.repo_groups_choices)() try: form_result = _form.to_python(dict(request.POST)) repo_model.update(repo_name, form_result)