Mercurial > kallithea
diff rhodecode/model/repos_group.py @ 1591:0b63a0d2cede beta
Merge with upstream
author | Nicolas VINOT <aeris@imirhil.fr> |
---|---|
date | Wed, 19 Oct 2011 01:47:56 +0200 |
parents | ada6926c374f 307ec693bdf2 |
children | 92a4f7c496a5 |
line wrap: on
line diff
--- a/rhodecode/model/repos_group.py Mon Oct 17 15:48:19 2011 +0200 +++ b/rhodecode/model/repos_group.py Wed Oct 19 01:47:56 2011 +0200 @@ -36,21 +36,21 @@ from rhodecode.model.caching_query import FromCache from rhodecode.model.db import Group, RhodeCodeUi -log = logging.getLogger(__name__) +log = logging.getLogger( __name__ ) -class ReposGroupModel(BaseModel): +class ReposGroupModel( BaseModel ): @LazyProperty - def repos_path(self): + def repos_path( self ): """ Get's the repositories root path from database """ - q = RhodeCodeUi.get_by_key('/').one() + q = RhodeCodeUi.get_by_key( '/' ).one() return q.ui_value - def __create_group(self, group_name): + def __create_group( self, group_name, parent_id ): """ makes repositories group on filesystem @@ -58,107 +58,117 @@ :param parent_id: """ - create_path = os.path.join(self.repos_path, group_name) - log.debug('creating new group in %s', create_path) + if parent_id: + paths = Group.get( parent_id ).full_path.split( Group.url_sep() ) + parent_path = os.sep.join( paths ) + else: + parent_path = '' + + create_path = os.path.join( self.repos_path, parent_path, group_name ) + log.debug( 'creating new group in %s', create_path ) - if os.path.isdir(create_path): - raise Exception('That directory already exists !') + if os.path.isdir( create_path ): + raise Exception( 'That directory already exists !' ) + - os.makedirs(create_path) + os.makedirs( create_path ) - def __rename_group(self, old, new): + + def __rename_group( self, old, old_parent_id, new, new_parent_id ): """ Renames a group on filesystem :param group_name: """ + log.debug( 'renaming repos group from %s to %s', old, new ) - if old == new: - log.debug('skipping group rename') - return - - log.debug('renaming repos group from %s to %s', old, new) - + if new_parent_id: + paths = Group.get( new_parent_id ).full_path.split( Group.url_sep() ) + new_parent_path = os.sep.join( paths ) + else: + new_parent_path = '' - old_path = os.path.join(self.repos_path, old) - new_path = os.path.join(self.repos_path, new) + if old_parent_id: + paths = Group.get( old_parent_id ).full_path.split( Group.url_sep() ) + old_parent_path = os.sep.join( paths ) + else: + old_parent_path = '' - log.debug('renaming repos paths from %s to %s', old_path, new_path) + old_path = os.path.join( self.repos_path, old_parent_path, old ) + new_path = os.path.join( self.repos_path, new_parent_path, new ) - if os.path.isdir(new_path): - raise Exception('Was trying to rename to already ' - 'existing dir %s' % new_path) - shutil.move(old_path, new_path) + log.debug( 'renaming repos paths from %s to %s', old_path, new_path ) - def __delete_group(self, group): + if os.path.isdir( new_path ): + raise Exception( 'Was trying to rename to already ' + 'existing dir %s' % new_path ) + shutil.move( old_path, new_path ) + + def __delete_group( self, group ): """ Deletes a group from a filesystem :param group: instance of group from database """ - paths = group.full_path.split(Group.url_sep()) - paths = os.sep.join(paths) + paths = group.full_path.split( Group.url_sep() ) + paths = os.sep.join( paths ) - rm_path = os.path.join(self.repos_path, paths) - if os.path.isdir(rm_path): - # delete only if that path really exists - os.rmdir(rm_path) + rm_path = os.path.join( self.repos_path, paths ) + os.rmdir( rm_path ) - def create(self, form_data): + def create( self, form_data ): try: new_repos_group = Group() - new_repos_group.group_description = form_data['group_description'] - new_repos_group.parent_group = Group.get(form_data['group_parent_id']) - new_repos_group.group_name = new_repos_group.get_new_name(form_data['group_name']) + new_repos_group.group_name = form_data['group_name'] + new_repos_group.group_description = \ + form_data['group_description'] + new_repos_group.group_parent_id = form_data['group_parent_id'] - self.sa.add(new_repos_group) + self.sa.add( new_repos_group ) - self.__create_group(new_repos_group.group_name) + self.__create_group( form_data['group_name'], + form_data['group_parent_id'] ) self.sa.commit() return new_repos_group except: - log.error(traceback.format_exc()) + log.error( traceback.format_exc() ) self.sa.rollback() raise - def update(self, repos_group_id, form_data): + def update( self, repos_group_id, form_data ): try: - repos_group = Group.get(repos_group_id) - old_path = repos_group.full_path - - #change properties - repos_group.group_description = form_data['group_description'] - repos_group.parent_group = Group.get(form_data['group_parent_id']) - repos_group.group_name = repos_group.get_new_name(form_data['group_name']) - - new_path = repos_group.full_path + repos_group = Group.get( repos_group_id ) + old_name = repos_group.group_name + old_parent_id = repos_group.group_parent_id - self.sa.add(repos_group) - - self.__rename_group(old_path, new_path) + repos_group.group_name = form_data['group_name'] + repos_group.group_description = \ + form_data['group_description'] + repos_group.group_parent_id = form_data['group_parent_id'] - # we need to get all repositories from this new group and - # rename them accordingly to new group path - for r in repos_group.repositories: - r.repo_name = r.get_new_name(r.just_name) - self.sa.add(r) + self.sa.add( repos_group ) + + if old_name != form_data['group_name'] or ( old_parent_id != + form_data['group_parent_id'] ): + self.__rename_group( old = old_name, old_parent_id = old_parent_id, + new = form_data['group_name'], + new_parent_id = form_data['group_parent_id'] ) self.sa.commit() - return repos_group except: - log.error(traceback.format_exc()) + log.error( traceback.format_exc() ) self.sa.rollback() raise - def delete(self, users_group_id): + def delete( self, users_group_id ): try: - users_group = Group.get(users_group_id) - self.sa.delete(users_group) - self.__delete_group(users_group) + users_group = Group.get( users_group_id ) + self.sa.delete( users_group ) + self.__delete_group( users_group ) self.sa.commit() except: - log.error(traceback.format_exc()) + log.error( traceback.format_exc() ) self.sa.rollback() raise