Changeset - 51b70569c330
[Not reviewed]
beta
0 6 0
Marcin Kuzminski - 15 years ago 2011-02-13 01:38:39
marcin@python-works.com
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.
6 files changed with 19 insertions and 10 deletions:
0 comments (0 inline, 0 general)
rhodecode/controllers/admin/repos.py
Show inline comments
 
@@ -153,8 +153,8 @@ class ReposController(BaseController):
 
            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 @@ class ReposController(BaseController):
 
    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 @@ class ReposController(BaseController):
 
            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
rhodecode/controllers/admin/settings.py
Show inline comments
 
@@ -105,12 +105,15 @@ class SettingsController(BaseController)
 
            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']
rhodecode/lib/utils.py
Show inline comments
 
@@ -363,12 +363,12 @@ def repo2db_mapper(initial_repo_list, re
 
    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 @@ def repo2db_mapper(initial_repo_list, re
 
                         }
 
            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):
rhodecode/model/db.py
Show inline comments
 
@@ -114,6 +114,7 @@ class User(Base, BaseModel):
 
    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)
rhodecode/model/repo.py
Show inline comments
 
@@ -90,7 +90,9 @@ class RepoModel(BaseModel):
 
        if invalidate and cache:
 
            repo.invalidate()
 

	
 
        return repo.scalar()
 
        ret = repo.scalar()
 
        self.sa.expunge_all()
 
        return ret
 

	
 

	
 
    def get_users_js(self):
rhodecode/model/scm.py
Show inline comments
 
@@ -217,7 +217,7 @@ class ScmModel(BaseModel):
 
            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
 

	
0 comments (0 inline, 0 general)