Changeset - 72778dda34cf
[Not reviewed]
default
0 6 0
Marcin Kuzminski - 15 years ago 2010-10-01 03:04:52
marcin@python-works.com
some fixups in cache, added fallback and cache invalidation when key not found in cached repos list,
added extra test, some other small fixes
6 files changed with 37 insertions and 8 deletions:
0 comments (0 inline, 0 general)
celeryconfig.py
Show inline comments
 
@@ -4,7 +4,7 @@ import os
 
import ConfigParser
 
root = os.getcwd()
 

	
 
PYLONS_CONFIG_NAME = 'test.ini'
 
PYLONS_CONFIG_NAME = 'production.ini'
 

	
 
sys.path.append(root)
 
config = ConfigParser.ConfigParser({'here':root})
pylons_app/lib/base.py
Show inline comments
 
@@ -22,8 +22,14 @@ class BaseController(WSGIController):
 
        c.repo_switcher_list = _get_repos_switcher_cached(c.cached_repo_list)
 
        
 
        if c.repo_name:
 
            c.repository_tags = c.cached_repo_list[c.repo_name].tags
 
            c.repository_branches = c.cached_repo_list[c.repo_name].branches
 
            cached_repo = c.cached_repo_list.get(c.repo_name)
 
            
 
            if cached_repo:
 
                c.repository_tags = cached_repo.tags
 
                c.repository_branches = cached_repo.branches
 
            else:
 
                c.repository_tags = {}
 
                c.repository_branches = {}
 
                    
 
        self.sa = meta.Session
 
    
pylons_app/lib/celerylib/tasks.py
Show inline comments
 
@@ -274,7 +274,6 @@ def send_email(recipients, subject, body
 
@task
 
def create_repo_fork(form_data, cur_user):
 
    import os
 
    from pylons_app.lib.utils import invalidate_cache
 
    from pylons_app.model.repo_model import RepoModel
 
    sa = get_session()
 
    rm = RepoModel(sa)
 
@@ -286,7 +285,6 @@ def create_repo_fork(form_data, cur_user
 
    repo_fork_path = os.path.join(repos_path, form_data['fork_name'])
 
    
 
    MercurialRepository(str(repo_fork_path), True, clone_url=str(repo_path))
 
    #invalidate_cache('cached_repo_list')
 

	
 
    
 
def __get_codes_stats(repo_name):
pylons_app/model/hg_model.py
Show inline comments
 
@@ -26,12 +26,13 @@ from beaker.cache import cache_region
 
from mercurial import ui
 
from mercurial.hgweb.hgwebdir_mod import findrepos
 
from pylons.i18n.translation import _
 
from pylons_app.lib import helpers as h
 
from pylons_app.lib.utils import invalidate_cache
 
from pylons_app.lib.auth import HasRepoPermissionAny
 
from pylons_app.model import meta
 
from pylons_app.model.db import Repository, User
 
from pylons_app.lib import helpers as h
 
from sqlalchemy.orm import joinedload
 
from vcs.exceptions import RepositoryError, VCSError
 
from sqlalchemy.orm import joinedload
 
import logging
 
import os
 
import sys
 
@@ -123,6 +124,8 @@ class HgModel(object):
 
                    
 
                    dbrepo = None
 
                    if not initial:
 
                        #for initial scann on application first run we don't
 
                        #have db repos yet.
 
                        dbrepo = sa.query(Repository)\
 
                            .options(joinedload(Repository.fork))\
 
                            .filter(Repository.repo_name == name)\
 
@@ -169,4 +172,15 @@ class HgModel(object):
 
            yield tmp_d
 

	
 
    def get_repo(self, repo_name):
 
        return _get_repos_cached()[repo_name]
 
        try:
 
            repo = _get_repos_cached()[repo_name]
 
            return repo
 
        except KeyError:
 
            #i we're here and we got key errors let's try to invalidate the
 
            #cahce and try again
 
            invalidate_cache('cached_repo_list')
 
            repo = _get_repos_cached()[repo_name]
 
            return repo
 
            
 
        
 
        
pylons_app/tests/__init__.py
Show inline comments
 
@@ -28,6 +28,8 @@ __all__ = ['environ', 'url', 'TestContro
 
# Invoke websetup with the current config file
 
#SetupCommand('setup-app').run([config_file])
 

	
 
##RUNNING DESIRED TESTS
 
#nosetests pylons_app.tests.functional.test_admin_settings:TestSettingsController.test_my_account
 

	
 
environ = {}
 

	
pylons_app/tests/functional/test_settings.py
Show inline comments
 
@@ -42,5 +42,14 @@ class TestSettingsController(TestControl
 
        
 
        #test if fork is visible in the list ?
 
        response = response.follow()
 

	
 

	
 
        #check if fork is marked as fork
 
        response = self.app.get(url(controller='summary', action='index',
 
                                    repo_name=fork_name))
 
        
 
        
 
        print response
 
        
 
        assert 'Fork of %s' % repo_name in response.body, 'no message about that this repo is a fork'
 
        
0 comments (0 inline, 0 general)