Mercurial > kallithea
changeset 1038:5554aa9c2480 beta
another major code rafactor, reimplemented (almost from scratch)
the way caching works, Should be solid rock for now. Some code optymizations on scmModel.get() to make it don't load unneded things. Changed db cache to file that should also reduce memory size
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sun, 13 Feb 2011 00:29:31 +0100 |
parents | b1d6478d4561 |
children | 51b70569c330 |
files | rhodecode/controllers/admin/repos.py rhodecode/controllers/branches.py rhodecode/controllers/changelog.py rhodecode/controllers/changeset.py rhodecode/controllers/feed.py rhodecode/controllers/files.py rhodecode/controllers/shortlog.py rhodecode/controllers/summary.py rhodecode/controllers/tags.py rhodecode/lib/base.py rhodecode/lib/helpers.py rhodecode/model/repo.py rhodecode/model/scm.py rhodecode/templates/admin/repos/repos.html rhodecode/templates/admin/users/user_edit_my_account.html rhodecode/templates/base/base.html rhodecode/templates/index.html rhodecode/templates/summary/summary.html |
diffstat | 18 files changed, 134 insertions(+), 150 deletions(-) [+] |
line wrap: on
line diff
--- a/rhodecode/controllers/admin/repos.py Sat Feb 12 21:22:30 2011 +0100 +++ b/rhodecode/controllers/admin/repos.py Sun Feb 13 00:29:31 2011 +0100 @@ -147,6 +147,7 @@ except formencode.Invalid, errors: c.repo_info = repo_model.get_by_repo_name(repo_name) + if c.repo_info.stats: last_rev = c.repo_info.stats.stat_on_revision else: @@ -281,8 +282,9 @@ 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_model = RepoModel() - r = ScmModel().get(repo_name) c.repo_info = repo_model.get_by_repo_name(repo_name) if c.repo_info is None:
--- a/rhodecode/controllers/branches.py Sat Feb 12 21:22:30 2011 +0100 +++ b/rhodecode/controllers/branches.py Sun Feb 13 00:29:31 2011 +0100 @@ -45,8 +45,7 @@ super(BranchesController, self).__before__() def index(self): - hg_model = ScmModel() - c.repo_info = hg_model.get_repo(c.repo_name) + c.repo_info, dbrepo = ScmModel().get(c.repo_name, retval='repo') c.repo_branches = OrderedDict() for name, hash_ in c.repo_info.branches.items(): c.repo_branches[name] = c.repo_info.get_changeset(hash_)
--- a/rhodecode/controllers/changelog.py Sat Feb 12 21:22:30 2011 +0100 +++ b/rhodecode/controllers/changelog.py Sun Feb 13 00:29:31 2011 +0100 @@ -67,14 +67,14 @@ else: c.size = int(session.get('changelog_size', default)) - changesets = ScmModel().get_repo(c.repo_name) + repo, dbrepo = ScmModel().get(c.repo_name, retval='repo') p = int(request.params.get('page', 1)) - c.total_cs = len(changesets) - c.pagination = Page(changesets, page=p, item_count=c.total_cs, + c.total_cs = len(repo) + c.pagination = Page(repo, page=p, item_count=c.total_cs, items_per_page=c.size) - self._graph(changesets, c.size, p) + self._graph(repo, c.size, p) return render('changelog/changelog.html')
--- a/rhodecode/controllers/changeset.py Sat Feb 12 21:22:30 2011 +0100 +++ b/rhodecode/controllers/changeset.py Sun Feb 13 00:29:31 2011 +0100 @@ -55,7 +55,6 @@ super(ChangesetController, self).__before__() def index(self, revision): - hg_model = ScmModel() def wrap_to_table(str): @@ -70,7 +69,7 @@ rev_range = revision.split('...')[:2] range_limit = 50 try: - repo = hg_model.get_repo(c.repo_name) + repo, dbrepo = ScmModel().get(c.repo_name, retval='repo') if len(rev_range) == 2: rev_start = rev_range[0] rev_end = rev_range[1] @@ -163,12 +162,11 @@ def raw_changeset(self, revision): - hg_model = ScmModel() method = request.GET.get('diff', 'show') try: - r = hg_model.get_repo(c.repo_name) - c.scm_type = r.alias - c.changeset = r.get_changeset(revision) + repo, dbrepo = ScmModel().get(c.repo_name, retval='repo') + c.scm_type = repo.alias + c.changeset = repo.get_changeset(revision) except RepositoryError: log.error(traceback.format_exc()) return redirect(url('home'))
--- a/rhodecode/controllers/feed.py Sat Feb 12 21:22:30 2011 +0100 +++ b/rhodecode/controllers/feed.py Sun Feb 13 00:29:31 2011 +0100 @@ -28,6 +28,7 @@ import logging from pylons import url, response +from pylons.i18n.translation import _ from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator from rhodecode.lib.base import BaseController @@ -45,7 +46,7 @@ def __before__(self): super(FeedController, self).__before__() #common values for feeds - self.description = 'Changes on %s repository' + self.description = _('Changes on %s repository') self.title = "%s feed" self.language = 'en-us' self.ttl = "5" @@ -59,9 +60,9 @@ language=self.language, ttl=self.ttl) - changesets = ScmModel().get_repo(repo_name) + repo, dbrepo = ScmModel().get(repo_name, retval='repo') - for cs in changesets[:self.feed_nr]: + for cs in repo[:self.feed_nr]: feed.add_item(title=cs.message, link=url('changeset_home', repo_name=repo_name, revision=cs.raw_id, qualified=True), @@ -79,8 +80,8 @@ language=self.language, ttl=self.ttl) - changesets = ScmModel().get_repo(repo_name) - for cs in changesets[:self.feed_nr]: + repo, dbrepo = ScmModel().get(repo_name, retval='repo') + for cs in repo[:self.feed_nr]: feed.add_item(title=cs.message, link=url('changeset_home', repo_name=repo_name, revision=cs.raw_id, qualified=True),
--- a/rhodecode/controllers/files.py Sat Feb 12 21:22:30 2011 +0100 +++ b/rhodecode/controllers/files.py Sun Feb 13 00:29:31 2011 +0100 @@ -57,8 +57,8 @@ c.cut_off_limit = self.cut_off_limit def index(self, repo_name, revision, f_path): - hg_model = ScmModel() - c.repo = hg_model.get_repo(c.repo_name) + c.repo, dbrepo = ScmModel().get(c.repo_name, retval='repo') + try: #reditect to given revision from form @@ -116,8 +116,7 @@ return render('files/files.html') def rawfile(self, repo_name, revision, f_path): - hg_model = ScmModel() - c.repo = hg_model.get_repo(c.repo_name) + c.repo, dbrepo = ScmModel().get(c.repo_name, retval='repo') file_node = c.repo.get_changeset(revision).get_node(f_path) response.content_type = file_node.mimetype response.content_disposition = 'attachment; filename=%s' \ @@ -125,16 +124,14 @@ return file_node.content def raw(self, repo_name, revision, f_path): - hg_model = ScmModel() - c.repo = hg_model.get_repo(c.repo_name) + c.repo, dbrepo = ScmModel().get(c.repo_name, retval='repo') file_node = c.repo.get_changeset(revision).get_node(f_path) response.content_type = 'text/plain' return file_node.content def annotate(self, repo_name, revision, f_path): - hg_model = ScmModel() - c.repo = hg_model.get_repo(c.repo_name) + c.repo, dbrepo = ScmModel().get(c.repo_name, retval='repo') try: c.cs = c.repo.get_changeset(revision) @@ -163,9 +160,9 @@ ext = ext_data[1] try: - repo = ScmModel().get_repo(repo_name) + repo, dbrepo = ScmModel().get(repo_name) - if repo.dbrepo.enable_downloads is False: + if dbrepo.enable_downloads is False: return _('downloads disabled') cs = repo.get_changeset(revision) @@ -185,13 +182,12 @@ def diff(self, repo_name, f_path): - hg_model = ScmModel() diff1 = request.GET.get('diff1') diff2 = request.GET.get('diff2') c.action = request.GET.get('diff') c.no_changes = diff1 == diff2 c.f_path = f_path - c.repo = hg_model.get_repo(c.repo_name) + c.repo, dbrepo = ScmModel().get(c.repo_name, retval='repo') try: if diff1 not in ['', None, 'None', '0' * 12, '0' * 40]:
--- a/rhodecode/controllers/shortlog.py Sat Feb 12 21:22:30 2011 +0100 +++ b/rhodecode/controllers/shortlog.py Sun Feb 13 00:29:31 2011 +0100 @@ -47,7 +47,7 @@ def index(self): p = int(request.params.get('page', 1)) - repo = ScmModel().get_repo(c.repo_name) + repo, dbrepo = ScmModel().get(c.repo_name, 'repo') c.repo_changesets = Page(repo, page=p, items_per_page=20) c.shortlog_data = render('shortlog/shortlog_data.html') if request.params.get('partial'):
--- a/rhodecode/controllers/summary.py Sat Feb 12 21:22:30 2011 +0100 +++ b/rhodecode/controllers/summary.py Sun Feb 13 00:29:31 2011 +0100 @@ -64,13 +64,14 @@ def index(self): scm_model = ScmModel() - c.repo_info = scm_model.get_repo(c.repo_name) + c.repo, dbrepo = scm_model.get(c.repo_name) + c.dbrepo = dbrepo c.following = scm_model.is_following_repo(c.repo_name, c.rhodecode_user.user_id) def url_generator(**kw): return url('shortlog_home', repo_name=c.repo_name, **kw) - c.repo_changesets = Page(c.repo_info, page=1, items_per_page=10, + c.repo_changesets = Page(c.repo, page=1, items_per_page=10, url=url_generator) e = request.environ @@ -92,16 +93,16 @@ 'repo_name':c.repo_name, } c.clone_repo_url = uri c.repo_tags = OrderedDict() - for name, hash in c.repo_info.tags.items()[:10]: + for name, hash in c.repo.tags.items()[:10]: try: - c.repo_tags[name] = c.repo_info.get_changeset(hash) + c.repo_tags[name] = c.repo.get_changeset(hash) except ChangesetError: c.repo_tags[name] = EmptyChangeset(hash) c.repo_branches = OrderedDict() - for name, hash in c.repo_info.branches.items()[:10]: + for name, hash in c.repo.branches.items()[:10]: try: - c.repo_branches[name] = c.repo_info.get_changeset(hash) + c.repo_branches[name] = c.repo.get_changeset(hash) except ChangesetError: c.repo_branches[name] = EmptyChangeset(hash) @@ -113,21 +114,21 @@ ts_min_y = mktime(td_1y.timetuple()) ts_max_y = mktime(td.timetuple()) - if c.repo_info.dbrepo.enable_statistics: + if dbrepo.enable_statistics: c.no_data_msg = _('No data loaded yet') - run_task(get_commits_stats, c.repo_info.name, ts_min_y, ts_max_y) + run_task(get_commits_stats, c.repo.name, ts_min_y, ts_max_y) else: c.no_data_msg = _('Statistics update are disabled for this repository') c.ts_min = ts_min_m c.ts_max = ts_max_y stats = self.sa.query(Statistics)\ - .filter(Statistics.repository == c.repo_info.dbrepo)\ + .filter(Statistics.repository == dbrepo)\ .scalar() if stats and stats.languages: - c.no_data = False is c.repo_info.dbrepo.enable_statistics + c.no_data = False is dbrepo.enable_statistics lang_stats = json.loads(stats.languages) c.commit_data = stats.commit_activity c.overview_data = stats.commit_activity_combined @@ -142,9 +143,9 @@ c.trending_languages = json.dumps({}) c.no_data = True - c.enable_downloads = c.repo_info.dbrepo.enable_downloads + c.enable_downloads = dbrepo.enable_downloads if c.enable_downloads: - c.download_options = self._get_download_links(c.repo_info) + c.download_options = self._get_download_links(c.repo) return render('summary/summary.html')
--- a/rhodecode/controllers/tags.py Sat Feb 12 21:22:30 2011 +0100 +++ b/rhodecode/controllers/tags.py Sun Feb 13 00:29:31 2011 +0100 @@ -44,8 +44,7 @@ super(TagsController, self).__before__() def index(self): - hg_model = ScmModel() - c.repo_info = hg_model.get_repo(c.repo_name) + c.repo_info, dbrepo = ScmModel().get(c.repo_name, retval='repo') c.repo_tags = OrderedDict() for name, hash_ in c.repo_info.tags.items(): c.repo_tags[name] = c.repo_info.get_changeset(hash_)
--- a/rhodecode/lib/base.py Sat Feb 12 21:22:30 2011 +0100 +++ b/rhodecode/lib/base.py Sun Feb 13 00:29:31 2011 +0100 @@ -28,12 +28,12 @@ #c.unread_journal = scm_model.get_unread_journal() if c.repo_name: - cached_repo = scm_model.get(c.repo_name) - if cached_repo: - c.repository_tags = cached_repo.tags - c.repository_branches = cached_repo.branches - c.repository_followers = scm_model.get_followers(cached_repo.dbrepo.repo_id) - c.repository_forks = scm_model.get_forks(cached_repo.dbrepo.repo_id) + repo, dbrepo = scm_model.get(c.repo_name) + if repo: + c.repository_tags = repo.tags + c.repository_branches = repo.branches + c.repository_followers = scm_model.get_followers(dbrepo.repo_id) + c.repository_forks = scm_model.get_forks(dbrepo.repo_id) else: c.repository_tags = {} c.repository_branches = {}
--- a/rhodecode/lib/helpers.py Sat Feb 12 21:22:30 2011 +0100 +++ b/rhodecode/lib/helpers.py Sun Feb 13 00:29:31 2011 +0100 @@ -483,12 +483,12 @@ def get_fork_name(): from rhodecode.model.scm import ScmModel repo_name = action_params - repo = ScmModel().get(repo_name) + repo, dbrepo = ScmModel().get(repo_name) if repo is None: return repo_name return link_to(action_params, url('summary_home', repo_name=repo.name,), - title=repo.dbrepo.description) + title=dbrepo.description) map = {'user_deleted_repo':(_('User [deleted] repository'), None), 'user_created_repo':(_('User [created] repository'), None),
--- a/rhodecode/model/repo.py Sat Feb 12 21:22:30 2011 +0100 +++ b/rhodecode/model/repo.py Sun Feb 13 00:29:31 2011 +0100 @@ -87,7 +87,7 @@ if cache: repo = repo.options(FromCache("sql_cache_long", "get_repo_full_%s" % repo_name)) - if invalidate: + if invalidate and cache: repo.invalidate() return repo.scalar()
--- a/rhodecode/model/scm.py Sat Feb 12 21:22:30 2011 +0100 +++ b/rhodecode/model/scm.py Sun Feb 13 00:29:31 2011 +0100 @@ -31,8 +31,6 @@ from mercurial import ui -from sqlalchemy.orm import joinedload -from sqlalchemy.orm.session import make_transient from sqlalchemy.exc import DatabaseError from beaker.cache import cache_region, region_invalidate @@ -45,9 +43,11 @@ from rhodecode import BACKENDS from rhodecode.lib import helpers as h from rhodecode.lib.auth import HasRepoPermissionAny -from rhodecode.lib.utils import get_repos as get_filesystem_repos, make_ui, action_logger +from rhodecode.lib.utils import get_repos as get_filesystem_repos, make_ui, \ + action_logger from rhodecode.model import BaseModel from rhodecode.model.user import UserModel +from rhodecode.model.repo import RepoModel from rhodecode.model.db import Repository, RhodeCodeUi, CacheInvalidation, \ UserFollowing, UserLog from rhodecode.model.caching_query import FromCache @@ -82,18 +82,19 @@ return q.ui_value - def repo_scan(self, repos_path, baseui): + def repo_scan(self, repos_path=None): """Listing of repositories in given path. This path should not be a repository itself. Return a dictionary of repository objects :param repos_path: path to directory containing repositories - :param baseui: baseui instance to instantiate MercurialRepostitory with """ log.info('scanning for repositories in %s', repos_path) - if not isinstance(baseui, ui.ui): - baseui = make_ui('db') + if repos_path is None: + repos_path = self.repos_path + + baseui = make_ui('db') repos_list = {} for name, path in get_filesystem_repos(repos_path, recursive=True): @@ -134,7 +135,7 @@ for r in all_repos: - repo = self.get(r.repo_name, invalidation_list) + repo, dbrepo = self.get(r.repo_name, invalidation_list) if repo is not None: last_change = repo.last_change @@ -143,33 +144,34 @@ tmp_d = {} tmp_d['name'] = r.repo_name tmp_d['name_sort'] = tmp_d['name'].lower() - tmp_d['description'] = repo.dbrepo.description + tmp_d['description'] = dbrepo.description tmp_d['description_sort'] = tmp_d['description'] tmp_d['last_change'] = last_change tmp_d['last_change_sort'] = time.mktime(last_change.timetuple()) tmp_d['tip'] = tip.raw_id tmp_d['tip_sort'] = tip.revision tmp_d['rev'] = tip.revision - tmp_d['contact'] = repo.dbrepo.user.full_contact + tmp_d['contact'] = dbrepo.user.full_contact tmp_d['contact_sort'] = tmp_d['contact'] tmp_d['owner_sort'] = tmp_d['contact'] tmp_d['repo_archives'] = list(repo._get_archives()) tmp_d['last_msg'] = tip.message tmp_d['repo'] = repo + tmp_d['dbrepo'] = dbrepo yield tmp_d - def get_repo(self, repo_name): - return self.get(repo_name) - - def get(self, repo_name, invalidation_list=None): - """Get's repository from given name, creates BackendInstance and + def get(self, repo_name, invalidation_list=None, retval='all'): + """Returns a tuple of Repository,DbRepository, + Get's repository from given name, creates BackendInstance and propagates it's data from database with all additional information :param repo_name: :param invalidation_list: if a invalidation list is given the get method should not manually check if this repository needs invalidation and just invalidate the repositories in list - + :param retval: string specifing what to return one of 'repo','dbrepo', + 'all'if repo or dbrepo is given it'll just lazy load chosen type + and return None as the second """ if not HasRepoPermissionAny('repository.read', 'repository.write', 'repository.admin')(repo_name, 'get repo check'): @@ -189,58 +191,45 @@ backend = get_backend(alias) except VCSError: log.error(traceback.format_exc()) - log.error('Perhaps this repository is in db and not in filesystem' - 'run rescan repositories with "destroy old data "' - 'option from admin panel') + log.error('Perhaps this repository is in db and not in ' + 'filesystem run rescan repositories with ' + '"destroy old data " option from admin panel') return if alias == 'hg': - from pylons import app_globals as g - repo = backend(repo_path, create=False, baseui=g.baseui) + repo = backend(repo_path, create=False, baseui=make_ui('db')) #skip hidden web repository if repo._get_hidden(): return else: repo = backend(repo_path, create=False) - dbrepo = self.sa.query(Repository)\ - .options(joinedload(Repository.fork))\ - .options(joinedload(Repository.user))\ - .filter(Repository.repo_name == repo_name)\ - .scalar() - - self.sa.expunge_all() - log.debug('making transient %s', dbrepo) - make_transient(dbrepo) - - for attr in ['user', 'forks', 'followers', 'group', 'repo_to_perm', - 'users_group_to_perm', 'stats', 'logs']: - attr = getattr(dbrepo, attr, False) - if attr: - if isinstance(attr, list): - for a in attr: - log.debug('making transient %s', a) - make_transient(a) - else: - log.debug('making transient %s', attr) - make_transient(attr) - - repo.dbrepo = dbrepo return repo pre_invalidate = True + dbinvalidate = False + if invalidation_list is not None: pre_invalidate = repo_name in invalidation_list if pre_invalidate: + #this returns object to invalidate 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 - return _get_repo(repo_name) + r, dbr = None, None + if retval == 'repo' or 'all': + r = _get_repo(repo_name) + if retval == 'dbrepo' or 'all': + dbr = RepoModel(self.sa).get_full(repo_name, cache=True, + invalidate=dbinvalidate) + + + return r, dbr @@ -370,8 +359,6 @@ """ ret = self.sa.query(CacheInvalidation)\ - .options(FromCache('sql_cache_short', - 'get_invalidation_%s' % repo_name))\ .filter(CacheInvalidation.cache_key == repo_name)\ .filter(CacheInvalidation.cache_active == False)\ .scalar() @@ -379,7 +366,8 @@ return ret def _mark_invalidated(self, cache_key): - """ Marks all occurences of cache to invaldation as already invalidated + """ Marks all occurrences of cache to invalidation as already + invalidated :param cache_key: """
--- a/rhodecode/templates/admin/repos/repos.html Sat Feb 12 21:22:30 2011 +0100 +++ b/rhodecode/templates/admin/repos/repos.html Sun Feb 13 00:29:31 2011 +0100 @@ -38,26 +38,26 @@ <tr class="parity${cnt%2}"> <td> ## TYPE OF REPO - %if repo['repo'].dbrepo.repo_type =='hg': + %if repo['dbrepo'].repo_type =='hg': <img class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="/images/icons/hgicon.png"/> - %elif repo['repo'].dbrepo.repo_type =='git': + %elif repo['dbrepo'].repo_type =='git': <img class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="/images/icons/giticon.png"/> %else: %endif ## PRIVATE/PUBLIC REPO - %if repo['repo'].dbrepo.private: + %if repo['dbrepo'].private: <img alt="${_('private')}" src="/images/icons/lock.png"/> %else: <img alt="${_('public')}" src="/images/icons/lock_open.png"/> %endif ${h.link_to(repo['name'],h.url('edit_repo',repo_name=repo['name']))} - %if repo['repo'].dbrepo.fork: - <a href="${h.url('summary_home',repo_name=repo['repo'].dbrepo.fork.repo_name)}"> + %if repo['dbrepo'].fork: + <a href="${h.url('summary_home',repo_name=repo['dbrepo'].fork.repo_name)}"> <img class="icon" alt="${_('public')}" - title="${_('Fork of')} ${repo['repo'].dbrepo.fork.repo_name}" + title="${_('Fork of')} ${repo['dbrepo'].fork.repo_name}" src="/images/icons/arrow_divide.png"/></a> %endif </td>
--- a/rhodecode/templates/admin/users/user_edit_my_account.html Sat Feb 12 21:22:30 2011 +0100 +++ b/rhodecode/templates/admin/users/user_edit_my_account.html Sun Feb 13 00:29:31 2011 +0100 @@ -119,24 +119,24 @@ %for repo in c.user_repos: <tr> <td> - %if repo['repo'].dbrepo.repo_type =='hg': + %if repo['dbrepo'].repo_type =='hg': <img class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="/images/icons/hgicon.png"/> - %elif repo['repo'].dbrepo.repo_type =='git': + %elif repo['dbrepo'].repo_type =='git': <img class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="/images/icons/giticon.png"/> %else: %endif - %if repo['repo'].dbrepo.private: + %if repo['dbrepo'].private: <img class="icon" alt="${_('private')}" src="/images/icons/lock.png"/> %else: <img class="icon" alt="${_('public')}" src="/images/icons/lock_open.png"/> %endif ${h.link_to(repo['repo'].name, h.url('summary_home',repo_name=repo['repo'].name),class_="repo_name")} - %if repo['repo'].dbrepo.fork: - <a href="${h.url('summary_home',repo_name=repo['repo'].dbrepo.fork.repo_name)}"> + %if repo['dbrepo'].fork: + <a href="${h.url('summary_home',repo_name=repo['dbrepo'].fork.repo_name)}"> <img class="icon" alt="${_('public')}" - title="${_('Fork of')} ${repo['repo'].dbrepo.fork.repo_name}" + title="${_('Fork of')} ${repo['dbrepo'].fork.repo_name}" src="/images/icons/arrow_divide.png"/></a> %endif </td>
--- a/rhodecode/templates/base/base.html Sat Feb 12 21:22:30 2011 +0100 +++ b/rhodecode/templates/base/base.html Sun Feb 13 00:29:31 2011 +0100 @@ -142,10 +142,10 @@ <ul class="repo_switcher"> %for repo in c.cached_repo_list: - %if repo['repo'].dbrepo.private: - <li><img src="/images/icons/lock.png" alt="${_('Private repository')}" class="repo_switcher_type"/>${h.link_to(repo['repo'].name,h.url('summary_home',repo_name=repo['repo'].name),class_="%s" % repo['repo'].dbrepo.repo_type)}</li> + %if repo['dbrepo'].private: + <li><img src="/images/icons/lock.png" alt="${_('Private repository')}" class="repo_switcher_type"/>${h.link_to(repo['repo'].name,h.url('summary_home',repo_name=repo['repo'].name),class_="%s" % repo['dbrepo'].repo_type)}</li> %else: - <li><img src="/images/icons/lock_open.png" alt="${_('Public repository')}" class="repo_switcher_type" />${h.link_to(repo['repo'].name,h.url('summary_home',repo_name=repo['repo'].name),class_="%s" % repo['repo'].dbrepo.repo_type)}</li> + <li><img src="/images/icons/lock_open.png" alt="${_('Public repository')}" class="repo_switcher_type" />${h.link_to(repo['repo'].name,h.url('summary_home',repo_name=repo['repo'].name),class_="%s" % repo['dbrepo'].repo_type)}</li> %endif %endfor </ul>
--- a/rhodecode/templates/index.html Sat Feb 12 21:22:30 2011 +0100 +++ b/rhodecode/templates/index.html Sun Feb 13 00:29:31 2011 +0100 @@ -60,16 +60,16 @@ <td> <div style="white-space: nowrap"> ## TYPE OF REPO - %if repo['repo'].dbrepo.repo_type =='hg': + %if repo['dbrepo'].repo_type =='hg': <img class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="/images/icons/hgicon.png"/> - %elif repo['repo'].dbrepo.repo_type =='git': + %elif repo['dbrepo'].repo_type =='git': <img class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="/images/icons/giticon.png"/> %else: %endif ##PRIVATE/PUBLIC - %if repo['repo'].dbrepo.private: + %if repo['dbrepo'].private: <img class="icon" title="${_('private repository')}" alt="${_('private repository')}" src="/images/icons/lock.png"/> %else: <img class="icon" title="${_('public repository')}" alt="${_('public repository')}" src="/images/icons/lock_open.png"/> @@ -78,10 +78,10 @@ ##NAME ${h.link_to(repo['name'], h.url('summary_home',repo_name=repo['name']),class_="repo_name")} - %if repo['repo'].dbrepo.fork: - <a href="${h.url('summary_home',repo_name=repo['repo'].dbrepo.fork.repo_name)}"> + %if repo['dbrepo'].fork: + <a href="${h.url('summary_home',repo_name=repo['dbrepo'].fork.repo_name)}"> <img class="icon" alt="${_('fork')}" - title="${_('Fork of')} ${repo['repo'].dbrepo.fork.repo_name}" + title="${_('Fork of')} ${repo['dbrepo'].fork.repo_name}" src="/images/icons/arrow_divide.png"/></a> %endif </div>
--- a/rhodecode/templates/summary/summary.html Sat Feb 12 21:22:30 2011 +0100 +++ b/rhodecode/templates/summary/summary.html Sun Feb 13 00:29:31 2011 +0100 @@ -31,38 +31,38 @@ <label>${_('Name')}:</label> </div> <div class="input-short"> - %if c.repo_info.dbrepo.repo_type =='hg': + %if c.dbrepo.repo_type =='hg': <img style="margin-bottom:2px" class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="/images/icons/hgicon.png"/> %endif - %if c.repo_info.dbrepo.repo_type =='git': + %if c.dbrepo.repo_type =='git': <img style="margin-bottom:2px" class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="/images/icons/giticon.png"/> %endif - %if c.repo_info.dbrepo.private: + %if c.dbrepo.private: <img style="margin-bottom:2px" class="icon" title="${_('private repository')}" alt="${_('private repository')}" src="/images/icons/lock.png"/> %else: <img style="margin-bottom:2px" class="icon" title="${_('public repository')}" alt="${_('public repository')}" src="/images/icons/lock_open.png"/> %endif - <span style="font-size: 1.6em;font-weight: bold;vertical-align: baseline;">${c.repo_info.name}</span> + <span style="font-size: 1.6em;font-weight: bold;vertical-align: baseline;">${c.repo.name}</span> %if c.rhodecode_user.username != 'default': %if c.following: <span id="follow_toggle" class="following" title="${_('Stop following this repository')}" - onclick="javascript:toggleFollowingRepo(this,${c.repo_info.dbrepo.repo_id},'${str(h.get_token())}')"> + onclick="javascript:toggleFollowingRepo(this,${c.dbrepo.repo_id},'${str(h.get_token())}')"> </span> %else: <span id="follow_toggle" class="follow" title="${_('Start following this repository')}" - onclick="javascript:toggleFollowingRepo(this,${c.repo_info.dbrepo.repo_id},'${str(h.get_token())}')"> + onclick="javascript:toggleFollowingRepo(this,${c.dbrepo.repo_id},'${str(h.get_token())}')"> </span> %endif %endif: <br/> - %if c.repo_info.dbrepo.fork: + %if c.dbrepo.fork: <span style="margin-top:5px"> - <a href="${h.url('summary_home',repo_name=c.repo_info.dbrepo.fork.repo_name)}"> + <a href="${h.url('summary_home',repo_name=c.dbrepo.fork.repo_name)}"> <img class="icon" alt="${_('public')}" - title="${_('Fork of')} ${c.repo_info.dbrepo.fork.repo_name}" + title="${_('Fork of')} ${c.dbrepo.fork.repo_name}" src="/images/icons/arrow_divide.png"/> - ${_('Fork of')} ${c.repo_info.dbrepo.fork.repo_name} + ${_('Fork of')} ${c.dbrepo.fork.repo_name} </a> </span> %endif @@ -75,7 +75,7 @@ <label>${_('Description')}:</label> </div> <div class="input-short"> - ${c.repo_info.dbrepo.description} + ${c.dbrepo.description} </div> </div> @@ -86,11 +86,11 @@ </div> <div class="input-short"> <div class="gravatar"> - <img alt="gravatar" src="${h.gravatar_url(c.repo_info.dbrepo.user.email)}"/> + <img alt="gravatar" src="${h.gravatar_url(c.dbrepo.user.email)}"/> </div> - ${_('Username')}: ${c.repo_info.dbrepo.user.username}<br/> - ${_('Name')}: ${c.repo_info.dbrepo.user.name} ${c.repo_info.dbrepo.user.lastname}<br/> - ${_('Email')}: <a href="mailto:${c.repo_info.dbrepo.user.email}">${c.repo_info.dbrepo.user.email}</a> + ${_('Username')}: ${c.dbrepo.user.username}<br/> + ${_('Name')}: ${c.dbrepo.user.name} ${c.dbrepo.user.lastname}<br/> + ${_('Email')}: <a href="mailto:${c.dbrepo.user.email}">${c.dbrepo.user.email}</a> </div> </div> @@ -99,8 +99,8 @@ <label>${_('Last change')}:</label> </div> <div class="input-short"> - ${h.age(c.repo_info.last_change)} - ${c.repo_info.last_change} - ${_('by')} ${h.get_changeset_safe(c.repo_info,'tip').author} + ${h.age(c.repo.last_change)} - ${c.repo.last_change} + ${_('by')} ${h.get_changeset_safe(c.repo,'tip').author} </div> </div> @@ -128,7 +128,7 @@ <label>${_('Download')}:</label> </div> <div class="input-short"> - %if len(c.repo_info.revisions) == 0: + %if len(c.repo.revisions) == 0: ${_('There are no downloads yet')} %elif c.enable_downloads is False: ${_('Downloads are disabled for this repository')} @@ -136,14 +136,14 @@ [${h.link_to(_('enable'),h.url('edit_repo',repo_name=c.repo_name))}] %endif %else: - ${h.select('download_options',c.repo_info.get_changeset().raw_id,c.download_options)} - %for cnt,archive in enumerate(c.repo_info._get_archives()): + ${h.select('download_options',c.repo.get_changeset().raw_id,c.download_options)} + %for cnt,archive in enumerate(c.repo._get_archives()): %if cnt >=1: | %endif <span class="tooltip" title="${_('Download %s as %s') %('tip',archive['type'])}" id="${archive['type']+'_link'}">${h.link_to(archive['type'], - h.url('files_archive_home',repo_name=c.repo_info.name, + h.url('files_archive_home',repo_name=c.repo.name, fname='tip'+archive['extension']),class_="archive_icon")}</span> %endfor %endif @@ -155,8 +155,8 @@ <label>${_('Feeds')}:</label> </div> <div class="input-short"> - ${h.link_to(_('RSS'),h.url('rss_feed_home',repo_name=c.repo_info.name),class_='rss_icon')} - ${h.link_to(_('Atom'),h.url('atom_feed_home',repo_name=c.repo_info.name),class_='atom_icon')} + ${h.link_to(_('RSS'),h.url('rss_feed_home',repo_name=c.repo.name),class_='rss_icon')} + ${h.link_to(_('Atom'),h.url('atom_feed_home',repo_name=c.repo.name),class_='atom_icon')} </div> </div> </div> @@ -250,9 +250,9 @@ YUE.on('download_options','change',function(e){ var new_cs = e.target.options[e.target.selectedIndex]; var tmpl_links = {} - %for cnt,archive in enumerate(c.repo_info._get_archives()): + %for cnt,archive in enumerate(c.repo._get_archives()): tmpl_links['${archive['type']}'] = '${h.link_to(archive['type'], - h.url('files_archive_home',repo_name=c.repo_info.name, + h.url('files_archive_home',repo_name=c.repo.name, fname='__CS__'+archive['extension']),class_="archive_icon")}'; %endfor