Mercurial > kallithea
changeset 1039:51b70569c330 beta
extended admin rescan to show what repositories was added and what removed
fixed found bugs, added expunge to cached getter since it introduce some more problems.
Added some relationship to properly clean related objects from database.
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sun, 13 Feb 2011 01:38:39 +0100 |
parents | 5554aa9c2480 |
children | 8e49b6ceffe1 |
files | rhodecode/controllers/admin/repos.py rhodecode/controllers/admin/settings.py rhodecode/lib/utils.py rhodecode/model/db.py rhodecode/model/repo.py rhodecode/model/scm.py |
diffstat | 6 files changed, 19 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/rhodecode/controllers/admin/repos.py Sun Feb 13 00:29:31 2011 +0100 +++ b/rhodecode/controllers/admin/repos.py Sun Feb 13 01:38:39 2011 +0100 @@ -153,8 +153,8 @@ else: last_rev = 0 c.stats_revision = last_rev - r = ScmModel().get(repo_name) - c.repo_last_rev = r.revisions[-1] if r.revisions else 0 + repo, dbrepo = ScmModel().get(repo_name, retval='repo') + c.repo_last_rev = repo.revisions[-1] if repo.revisions else 0 if last_rev == 0: c.stats_percentage = 0 @@ -282,7 +282,7 @@ def edit(self, repo_name, format='html'): """GET /repos/repo_name/edit: Form to edit an existing item""" # url('edit_repo', repo_name=ID) - r = ScmModel().get(repo_name)[0] + repo, dbrepo = ScmModel().get(repo_name, retval='repo') repo_model = RepoModel() c.repo_info = repo_model.get_by_repo_name(repo_name) @@ -302,7 +302,7 @@ last_rev = 0 c.stats_revision = last_rev - c.repo_last_rev = r.revisions[-1] if r.revisions else 0 + c.repo_last_rev = repo.revisions[-1] if repo.revisions else 0 if last_rev == 0 or c.repo_last_rev == 0: c.stats_percentage = 0
--- a/rhodecode/controllers/admin/settings.py Sun Feb 13 00:29:31 2011 +0100 +++ b/rhodecode/controllers/admin/settings.py Sun Feb 13 01:38:39 2011 +0100 @@ -105,12 +105,15 @@ rm_obsolete = request.POST.get('destroy', False) log.debug('Rescanning directories with destroy=%s', rm_obsolete) initial = ScmModel().repo_scan() + log.debug('invalidating all repositories') for repo_name in initial.keys(): invalidate_cache('get_repo_cached_%s' % repo_name) - repo2db_mapper(initial, rm_obsolete) + added, removed = repo2db_mapper(initial, rm_obsolete) - h.flash(_('Repositories successfully rescanned'), category='success') + h.flash(_('Repositories successfully' + ' rescanned added: %s,removed: %s') % (added, removed) + , category='success') if setting_id == 'whoosh': repo_location = self.get_hg_ui_settings()['paths_root_path']
--- a/rhodecode/lib/utils.py Sun Feb 13 00:29:31 2011 +0100 +++ b/rhodecode/lib/utils.py Sun Feb 13 01:38:39 2011 +0100 @@ -363,12 +363,12 @@ sa = meta.Session() rm = RepoModel() user = sa.query(User).filter(User.admin == True).first() - + added = [] for name, repo in initial_repo_list.items(): group = map_groups(name.split('/')) if not rm.get_by_repo_name(name, cache=False): log.info('repository %s not found creating default', name) - + added.append(name) form_data = { 'repo_name':name, 'repo_type':repo.alias, @@ -380,13 +380,16 @@ } rm.create(form_data, user, just_db=True) + removed = [] if remove_obsolete: #remove from database those repositories that are not in the filesystem for repo in sa.query(Repository).all(): if repo.repo_name not in initial_repo_list.keys(): + removed.append(repo.repo_name) sa.delete(repo) sa.commit() + return added, removed class OrderedDict(dict, DictMixin): def __init__(self, *args, **kwds):
--- a/rhodecode/model/db.py Sun Feb 13 00:29:31 2011 +0100 +++ b/rhodecode/model/db.py Sun Feb 13 01:38:39 2011 +0100 @@ -114,6 +114,7 @@ repositories = relationship('Repository') user_followers = relationship('UserFollowing', primaryjoin='UserFollowing.follows_user_id==User.user_id', cascade='all') + group_member = relationship('UsersGroupMember', cascade='all') @property def full_contact(self): return '%s %s <%s>' % (self.name, self.lastname, self.email)
--- a/rhodecode/model/repo.py Sun Feb 13 00:29:31 2011 +0100 +++ b/rhodecode/model/repo.py Sun Feb 13 01:38:39 2011 +0100 @@ -90,7 +90,9 @@ if invalidate and cache: repo.invalidate() - return repo.scalar() + ret = repo.scalar() + self.sa.expunge_all() + return ret def get_users_js(self):
--- a/rhodecode/model/scm.py Sun Feb 13 00:29:31 2011 +0100 +++ b/rhodecode/model/scm.py Sun Feb 13 01:38:39 2011 +0100 @@ -217,7 +217,7 @@ invalidate = self._should_invalidate(repo_name) if invalidate: log.info('invalidating cache for repository %s', repo_name) - #region_invalidate(_get_repo, None, repo_name) + region_invalidate(_get_repo, None, repo_name) self._mark_invalidated(invalidate) dbinvalidate = True