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: