14
16
# You should have received a copy of the GNU General Public License
15
17
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
# Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
25
from cherrypy import HTTPRedirect, session
27
from loggerhead.history import History
28
from loggerhead import util
31
FOLDER = '/Users/robey/code/paramiko/paramiko'
32
BRANCH_NAME = 'paramiko-dev'
34
class ChangeLogUI (object):
36
@turbogears.expose(html='loggerhead.templates.changelog', content_type='html')
37
def default(self, *args, **kw):
38
h = History.from_folder(FOLDER)
43
revlist = h.get_short_revision_history_from(revid)
44
entries = h.get_changelist(list(revlist)[:20])
47
('main', turbogears.url('/changes')),
48
('inventory', turbogears.url([ '/inventory', revid ])),
49
('feed', turbogears.url('/atom')),
52
merge_revids = h.simplify_merge_point_list(h.get_merge_point_list(revid))
55
'revno': h.get_revno(m_revid),
56
} for m_revid in merge_revids]
59
'branch_name': BRANCH_NAME,
23
from paste.httpexceptions import HTTPServerError
25
from breezy import osutils, urlutils
28
from ..controllers import TemplatedBranchView
31
class ChangeLogUI(TemplatedBranchView):
33
template_name = 'changelog'
35
def get_values(self, path, kwargs, headers):
36
history = self._history
37
revid = self.get_revid()
38
filter_file_id = kwargs.get('filter_file_id', None)
39
if filter_file_id is not None:
40
filter_file_id = urlutils.unquote_to_bytes(osutils.safe_utf8(filter_file_id))
41
query = kwargs.get('q', None)
42
start_revid = history.fix_revid(kwargs.get('start_revid', None))
43
orig_start_revid = start_revid
44
pagesize = 20#int(config.get('pagesize', '20'))
47
if filter_file_id is None and path is not None:
48
filter_file_id = history.get_file_id(revid, path)
51
revid, start_revid, revid_list = history.get_view(
52
revid, start_revid, filter_file_id, query,
53
extra_rev_count=pagesize+1)
54
util.set_context(kwargs)
56
if (query is not None) and (len(revid_list) == 0):
59
if len(revid_list) == 0:
60
scan_list = revid_list
62
if revid in revid_list: # XXX is this always true?
63
i = revid_list.index(revid)
66
scan_list = revid_list[i:]
67
change_list = scan_list[:pagesize]
68
changes = list(history.get_changes(change_list))
70
for i, c in enumerate(changes):
72
data[str(i)] = urlutils.quote(urlutils.quote_from_bytes(c.revid, safe=''))
74
self.log.exception('Exception fetching changes')
75
raise HTTPServerError('Could not fetch changes')
77
navigation = util.Container(
78
pagesize=pagesize, revid=revid, start_revid=start_revid,
79
revid_list=revid_list, filter_file_id=filter_file_id,
80
scan_url='/changes', branch=self._branch, feed=True, history=history)
82
navigation.query = query
83
util.fill_in_navigation(navigation)
85
# Directory Breadcrumbs
86
directory_breadcrumbs = (
87
util.directory_breadcrumbs(
88
self._branch.friendly_name,
93
for change in changes:
94
if change.tags is not None:
99
'branch': self._branch,
101
'show_tag_col': show_tag_col,
102
'data': simplejson.dumps(data),
63
'scan_url': '/changes',
66
'merge_points': [util.Container(m) for m in merge_points],
106
'navigation': navigation,
107
'filter_file_id': filter_file_id,
108
'start_revid': start_revid,
109
'viewing_from': (orig_start_revid is not None) and
110
(orig_start_revid != history.last_revid),
112
'search_failed': search_failed,
113
'url': self._branch.context_url,
114
'directory_breadcrumbs': directory_breadcrumbs,
68
if kw.get('style', None) == 'rss':
69
vals['tg_template'] = 'loggerhead.templates.changelog-rss'
70
vals['tg_format'] = 'xml'
71
vals['tg_content_type'] = 'application/rss+xml'