diff --git a/celeryconfig.py b/celeryconfig.py --- a/celeryconfig.py +++ b/celeryconfig.py @@ -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}) diff --git a/pylons_app/lib/base.py b/pylons_app/lib/base.py --- a/pylons_app/lib/base.py +++ b/pylons_app/lib/base.py @@ -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 diff --git a/pylons_app/lib/celerylib/tasks.py b/pylons_app/lib/celerylib/tasks.py --- a/pylons_app/lib/celerylib/tasks.py +++ b/pylons_app/lib/celerylib/tasks.py @@ -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): diff --git a/pylons_app/model/hg_model.py b/pylons_app/model/hg_model.py --- a/pylons_app/model/hg_model.py +++ b/pylons_app/model/hg_model.py @@ -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 + + + diff --git a/pylons_app/tests/__init__.py b/pylons_app/tests/__init__.py --- a/pylons_app/tests/__init__.py +++ b/pylons_app/tests/__init__.py @@ -28,6 +28,8 @@ import pylons.test # 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 = {} diff --git a/pylons_app/tests/functional/test_settings.py b/pylons_app/tests/functional/test_settings.py --- a/pylons_app/tests/functional/test_settings.py +++ b/pylons_app/tests/functional/test_settings.py @@ -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' +