Mercurial > kallithea
changeset 1361:87ca17540603 beta
fixed #47 adding a new repo that have a group chosen had wrong paths.
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sat, 04 Jun 2011 22:57:22 +0200 |
parents | 1f47adeb67c2 |
children | 4c9bd42f82f9 |
files | rhodecode/controllers/admin/repos.py rhodecode/lib/utils.py rhodecode/model/forms.py rhodecode/model/repo.py |
diffstat | 4 files changed, 28 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/rhodecode/controllers/admin/repos.py Sat Jun 04 20:34:30 2011 +0200 +++ b/rhodecode/controllers/admin/repos.py Sat Jun 04 22:57:22 2011 +0200 @@ -44,6 +44,7 @@ from rhodecode.model.forms import RepoForm from rhodecode.model.scm import ScmModel from rhodecode.model.repo import RepoModel +from sqlalchemy.exc import IntegrityError log = logging.getLogger(__name__) @@ -179,11 +180,12 @@ category='success') if request.POST.get('user_created'): + #created by regular non admin user action_logger(self.rhodecode_user, 'user_created_repo', - form_result['repo_name'], '', self.sa) + form_result['repo_name_full'], '', self.sa) else: action_logger(self.rhodecode_user, 'admin_created_repo', - form_result['repo_name'], '', self.sa) + form_result['repo_name_full'], '', self.sa) except formencode.Invalid, errors: @@ -287,6 +289,18 @@ invalidate_cache('get_repo_cached_%s' % repo_name) h.flash(_('deleted repository %s') % repo_name, category='success') + except IntegrityError, e: + if e.message.find('repositories_fork_id_fkey'): + log.error(traceback.format_exc()) + h.flash(_('Cannot delete %s it still contains attached ' + 'forks') % repo_name, + category='warning') + else: + log.error(traceback.format_exc()) + h.flash(_('An error occurred during ' + 'deletion of %s') % repo_name, + category='error') + except Exception, e: log.error(traceback.format_exc()) h.flash(_('An error occurred during deletion of %s') % repo_name,
--- a/rhodecode/lib/utils.py Sat Jun 04 20:34:30 2011 +0200 +++ b/rhodecode/lib/utils.py Sat Jun 04 22:57:22 2011 +0200 @@ -386,6 +386,7 @@ added.append(name) form_data = { 'repo_name': name, + 'repo_name_full': name, 'repo_type': repo.alias, 'description': repo.description \ if repo.description != 'unknown' else \
--- a/rhodecode/model/forms.py Sat Jun 04 20:34:30 2011 +0200 +++ b/rhodecode/model/forms.py Sat Jun 04 22:57:22 2011 +0200 @@ -227,8 +227,7 @@ def to_python(self, value, state): try: - self.user_db = User.query()\ - .filter(User.active == True)\ + User.query().filter(User.active == True)\ .filter(User.username == value).one() except Exception: raise formencode.Invalid(_('This username is not valid'), @@ -251,7 +250,8 @@ gr = Group.get(value.get('repo_group')) group_path = gr.full_path # value needs to be aware of group name in order to check - # db key + # db key This is an actuall just the name to store in the + # database repo_name_full = group_path + Group.url_sep() + repo_name else: group_path = ''
--- a/rhodecode/model/repo.py Sat Jun 04 20:34:30 2011 +0200 +++ b/rhodecode/model/repo.py Sat Jun 04 22:57:22 2011 +0200 @@ -198,14 +198,17 @@ #force str since hg doesn't go with unicode repo_name = str(form_data['fork_name']) org_name = str(form_data['repo_name']) + org_full_name = str(form_data['repo_name_full']) else: org_name = repo_name = str(form_data['repo_name']) + repo_name_full = form_data['repo_name_full'] + new_repo = Repository() new_repo.enable_statistics = False for k, v in form_data.items(): if k == 'repo_name': - v = repo_name + v = repo_name_full if k == 'repo_group': k = 'group_id' @@ -213,7 +216,7 @@ if fork: parent_repo = self.sa.query(Repository)\ - .filter(Repository.repo_name == org_name).scalar() + .filter(Repository.repo_name == org_full_name).scalar() new_repo.fork = parent_repo new_repo.user_id = cur_user.user_id @@ -309,7 +312,9 @@ def __create_repo(self, repo_name, alias, new_parent_id, clone_uri=False): """ - makes repository on filesystem it's group aware + makes repository on filesystem. It's group aware means it'll create + a repository within a group, and alter the paths accordingly of + group location :param repo_name: :param alias: