Rev 414: page_loading in http://bazaar.launchpad.net/~jameinel/loggerhead/all
John Arbash Meinel
john at arbash-meinel.com
Mon Apr 26 22:29:55 BST 2010
At http://bazaar.launchpad.net/~jameinel/loggerhead/all
------------------------------------------------------------
revno: 414 [merge]
revision-id: john at arbash-meinel.com-20100426212917-e438apefo5fxm8dj
parent: john at arbash-meinel.com-20100426212902-nb76zvp1h8qcee90
parent: john at arbash-meinel.com-20100426190237-ba4x3pw3nq039psy
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: all
timestamp: Mon 2010-04-26 16:29:17 -0500
message:
page_loading
modified:
loggerhead/controllers/changelog_ui.py changelog_ui.py-20061211064342-102iqirsciyvgtcf-19
loggerhead/history.py history.py-20061211064342-102iqirsciyvgtcf-5
-------------- next part --------------
=== modified file 'loggerhead/controllers/changelog_ui.py'
--- a/loggerhead/controllers/changelog_ui.py 2010-04-22 08:52:59 +0000
+++ b/loggerhead/controllers/changelog_ui.py 2010-04-26 19:02:37 +0000
@@ -50,7 +50,8 @@
try:
revid, start_revid, revid_list = history.get_view(
- revid, start_revid, filter_file_id, query)
+ revid, start_revid, filter_file_id, query,
+ extra_rev_count=pagesize+1)
util.set_context(kwargs)
if (query is not None) and (len(revid_list) == 0):
=== modified file 'loggerhead/history.py'
--- a/loggerhead/history.py 2010-04-26 18:17:26 +0000
+++ b/loggerhead/history.py 2010-04-26 21:29:17 +0000
@@ -454,15 +454,40 @@
if revid is None:
revid = self.last_revid
if file_id is not None:
- # since revid is 'start_revid', possibly should start the path
- # tracing from revid... FIXME
- revlist = list(self.get_short_revision_history_by_fileid(file_id))
- revlist = list(self.get_revids_from(revlist, revid))
+ revlist = list(
+ self.get_short_revision_history_by_fileid(file_id, revid))
+ revlist = self.get_revids_from(revlist, revid)
else:
- revlist = list(self.get_revids_from(None, revid))
+ revlist = self.get_revids_from(None, revid)
return revlist
- def get_view(self, revid, start_revid, file_id, query=None):
+ def _iterate_sufficiently(self, iterable, stop_at, extra_rev_count):
+ """Return a list of iterable.
+
+ If extra_rev_count is None, fully consume iterable.
+ Otherwise, stop at 'stop_at' + extra_rev_count.
+
+ Example:
+ iterate until you find stop_at, then iterate 10 more times.
+ """
+ if extra_rev_count is None:
+ return list(iterable)
+ result = []
+ found = False
+ for n in iterable:
+ result.append(n)
+ if n == stop_at:
+ found = True
+ break
+ if found:
+ for count, n in enumerate(iterable):
+ result.append(n)
+ if count >= extra_rev_count:
+ break
+ return result
+
+ def get_view(self, revid, start_revid, file_id, query=None,
+ extra_rev_count=None):
"""
use the URL parameters (revid, start_revid, file_id, and query) to
determine the revision list we're viewing (start_revid, file_id, query)
@@ -473,6 +498,10 @@
file.
- if a start_revid is given, we're viewing the branch from a
specific revision up the tree.
+ - if extra_rev_count is given, find the view from start_revid =>
+ revid, and continue an additional 'extra_rev_count'. If not
+ given, then revid_list will contain the full history of
+ start_revid
these may be combined to view revisions for a specific file, from
a specific revision, with a specific search query.
@@ -491,12 +520,16 @@
if query is None:
revid_list = self.get_file_view(start_revid, file_id)
+ revid_list = self._iterate_sufficiently(revid_list, revid,
+ extra_rev_count)
if revid is None:
revid = start_revid
if revid not in revid_list:
# if the given revid is not in the revlist, use a revlist that
# starts at the given revid.
revid_list = self.get_file_view(revid, file_id)
+ revid_list = self._iterate_sufficiently(revid_list, revid,
+ extra_rev_count)
start_revid = revid
return revid, start_revid, revid_list
More information about the bazaar-commits
mailing list