16
17
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25
from cherrypy import HTTPRedirect, session
24
from cherrypy import InternalError, session
27
from loggerhead.history import History
28
26
from loggerhead import util
31
29
class ChangeLogUI (object):
31
def __init__(self, branch):
36
@util.strip_whitespace
33
37
@turbogears.expose(html='loggerhead.templates.changelog')
34
38
def default(self, *args, **kw):
35
h = History.from_folder(turbogears.config.get('loggerhead.folder'))
40
h = self._branch.get_history()
41
config = self._branch.config
44
revid = h.fix_revid(args[0])
40
revlist = h.get_short_revision_history_from(revid)
41
entries = h.get_changelist(list(revlist)[:20])
44
('main', turbogears.url('/changes')),
45
('inventory', turbogears.url([ '/inventory', revid ])),
46
('feed', turbogears.url('/atom')),
49
merge_revids = h.simplify_merge_point_list(h.get_merge_point_list(revid))
52
'revno': h.get_revno(m_revid),
53
} for m_revid in merge_revids]
48
file_id = kw.get('file_id', None)
49
query = kw.get('q', None)
50
start_revid = h.fix_revid(kw.get('start_revid', None))
51
orig_start_revid = start_revid
52
pagesize = int(config.get('pagesize', '20'))
56
revid, start_revid, revid_list = h.get_view(revid, start_revid, file_id, query)
57
kw['start_revid'] = start_revid
60
if (query is not None) and (len(revid_list) == 0):
63
if len(revid_list) == 0:
64
scan_list = revid_list
66
scan_list = revid_list[h.get_revid_sequence(revid_list, revid):]
67
entry_list = scan_list[:pagesize]
68
entries = h.get_changes(entry_list)
70
self.log.exception('Exception fetching changes')
71
raise InternalError('Could not fetch changes')
73
navigation = util.Container(pagesize=pagesize, revid=revid, start_revid=start_revid, revid_list=revid_list,
74
file_id=file_id, scan_url='/changes', branch=self._branch, feed=True)
76
navigation.query = query
77
util.fill_in_navigation(h, navigation)
79
entries = list(entries)
80
# add parent & merge-point branch-nick info, in case it's useful
81
h.get_branch_nicks(entries)
56
'branch_name': turbogears.config.get('loggerhead.branch_name'),
84
'branch': self._branch,
85
'changes': list(entries),
60
'scan_url': '/changes',
64
'merge_points': [util.Container(m) for m in merge_points],
89
'navigation': navigation,
91
'start_revid': start_revid,
92
'viewing_from': (orig_start_revid is not None) and (orig_start_revid != h.last_revid),
94
'search_failed': search_failed,
66
if kw.get('style', None) == 'rss':
67
vals['tg_template'] = 'loggerhead.templates.changelog-rss'
68
vals['tg_format'] = 'xml'
69
vals['tg_content_type'] = 'application/rss+xml'
97
self.log.info('/changes %r: %r secs' % (revid, time.time() - z))