Mercurial > bitten > bitten-test
diff bitten/trac_ext/web_ui.py @ 228:a8c9dd7e3f71
* Cleanup and documentation for the `BuildQueue` class added in [236].
* Moved duplicate code from the master and the web UI into `collect_changes` function.
author | cmlenz |
---|---|
date | Wed, 28 Sep 2005 15:49:27 +0000 |
parents | aef09843d367 |
children | c7ff953ebb07 |
line wrap: on
line diff
--- a/bitten/trac_ext/web_ui.py +++ b/bitten/trac_ext/web_ui.py @@ -20,6 +20,7 @@ from trac.wiki import wiki_to_html from bitten.model import BuildConfig, TargetPlatform, Build, BuildStep, \ BuildLog, Report +from bitten.queue import collect_changes from bitten.trac_ext.api import ILogFormatter, IReportSummarizer _status_label = {Build.IN_PROGRESS: 'in progress', @@ -325,7 +326,7 @@ } req.hdf['page.mode'] = 'view_config' - platforms = TargetPlatform.select(self.env, config=config_name) + platforms = list(TargetPlatform.select(self.env, config=config_name)) req.hdf['config.platforms'] = [ {'name': platform.name, 'id': platform.id} for platform in platforms ] @@ -348,52 +349,35 @@ more = False req.hdf['page.number'] = page + builds_per_page = 12 * len(platforms) repos = self.env.get_repository(req.authname) - try: - root = repos.get_node(config.path) - idx = 0 - for path, rev, chg in root.get_history(): - # Don't follow moves/copies - if path != repos.normalize_path(config.path): - break - # If the directory was empty at that revision, it isn't built - old_node = repos.get_node(path, rev) - is_empty = True - for entry in old_node.get_entries(): - is_empty = False - break - if is_empty: - continue - - if idx < (page - 1) * 12: - idx += 1 - continue + repos.sync() + idx = 0 + for platform, rev, build in collect_changes(repos, config): + if idx < (page - 1) * builds_per_page: + idx += 1 + continue - prefix = 'config.builds.%d' % rev - req.hdf[prefix + '.href'] = self.env.href.changeset(rev) - for build in Build.select(self.env, config=config.name, rev=rev): - if build.status == Build.PENDING: - continue - build_hdf = _build_to_hdf(self.env, req, build) - req.hdf['%s.%s' % (prefix, build.platform)] = build_hdf + prefix = 'config.builds.%d' % rev + req.hdf[prefix + '.href'] = self.env.href.changeset(rev) + if build and build.status != Build.PENDING: + build_hdf = _build_to_hdf(self.env, req, build) + req.hdf['%s.%s' % (prefix, platform.id)] = build_hdf - idx += 1 - if idx >= page * 12: - more = True - break + idx += 1 + if idx >= page * builds_per_page: + more = True + break - if page > 1: - if page == 2: - prev_href = self.env.href.build(config.name) - else: - prev_href = self.env.href.build(config.name, page=page - 1) - add_link(req, 'prev', prev_href, 'Previous Page') - if more: - next_href = self.env.href.build(config.name, page=page + 1) - add_link(req, 'next', next_href, 'Next Page') - - except TracError: - self.log.error('Error accessing repository info', exc_info=True) + if page > 1: + if page == 2: + prev_href = self.env.href.build(config.name) + else: + prev_href = self.env.href.build(config.name, page=page - 1) + add_link(req, 'prev', prev_href, 'Previous Page') + if more: + next_href = self.env.href.build(config.name, page=page + 1) + add_link(req, 'next', next_href, 'Next Page') def _render_config_confirm(self, req, config_name): req.perm.assert_permission('BUILD_DELETE')