~loggerhead-team/loggerhead/trunk-rich

« back to all changes in this revision

Viewing changes to loggerhead/controllers/changelog_ui.py

  • Committer: Robey Pointer
  • Date: 2007-05-21 07:46:30 UTC
  • Revision ID: robey@lag.net-20070521074630-afkk5g3x2654wfpm
bug 113313: remove 0x0C (page break) from the list of characters that
identify a file as binary.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#
2
2
# Copyright (C) 2006  Robey Pointer <robey@lag.net>
 
3
# Copyright (C) 2006  Goffredo Baroncelli <kreijack@inwind.it>
3
4
#
4
5
# This program is free software; you can redistribute it and/or modify
5
6
# it under the terms of the GNU General Public License as published by
16
17
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
18
#
18
19
 
19
 
import base64
20
20
import os
21
 
import posixpath
22
21
import time
23
22
 
24
23
import turbogears
25
 
from cherrypy import HTTPRedirect, session
 
24
from cherrypy import InternalError, session
26
25
 
27
 
from loggerhead.history import History
28
26
from loggerhead import util
29
27
 
30
28
 
31
29
class ChangeLogUI (object):
32
 
 
 
30
    
 
31
    def __init__(self, branch):
 
32
        # BranchView object
 
33
        self._branch = branch
 
34
        self.log = branch.log
 
35
        
 
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'))
 
39
        z = time.time()
 
40
        h = self._branch.get_history()
 
41
        config = self._branch.config
 
42
        
36
43
        if len(args) > 0:
37
 
            revid = args[0]
 
44
            revid = h.fix_revid(args[0])
38
45
        else:
39
 
            revid = h.last_revid
40
 
        revlist = h.get_short_revision_history_from(revid)
41
 
        entries = h.get_changelist(list(revlist)[:20])
42
 
        
43
 
        buttons = [
44
 
            ('main', turbogears.url('/changes')),
45
 
            ('inventory', turbogears.url([ '/inventory', revid ])),
46
 
            ('feed', turbogears.url('/atom')),
47
 
        ]
48
 
 
49
 
        merge_revids = h.simplify_merge_point_list(h.get_merge_point_list(revid))
50
 
        merge_points = [{
51
 
            'revid': m_revid,
52
 
            'revno': h.get_revno(m_revid),
53
 
        } for m_revid in merge_revids]
 
46
            revid = None
 
47
 
 
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'))
 
53
        search_failed = False
 
54
        
 
55
        try:
 
56
            revid, start_revid, revid_list = h.get_view(revid, start_revid, file_id, query)
 
57
            kw['start_revid'] = start_revid
 
58
            util.set_context(kw)
 
59
            
 
60
            if (query is not None) and (len(revid_list) == 0):
 
61
                search_failed = True
 
62
 
 
63
            if len(revid_list) == 0:
 
64
                scan_list = revid_list
 
65
            else:
 
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)
 
69
        except:
 
70
            self.log.exception('Exception fetching changes')
 
71
            raise InternalError('Could not fetch changes')
 
72
 
 
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)
 
75
        if query is not None:
 
76
            navigation.query = query
 
77
        util.fill_in_navigation(h, navigation)
 
78
        
 
79
        entries = list(entries)
 
80
        # add parent & merge-point branch-nick info, in case it's useful
 
81
        h.get_branch_nicks(entries)
54
82
 
55
83
        vals = {
56
 
            'branch_name': turbogears.config.get('loggerhead.branch_name'),
57
 
            'changes': entries,
 
84
            'branch': self._branch,
 
85
            'changes': list(entries),
58
86
            'util': util,
59
87
            'history': h,
60
 
            'scan_url': '/changes',
61
 
            'pagesize': 20,
62
88
            'revid': revid,
63
 
            'buttons': buttons,
64
 
            'merge_points': [util.Container(m) for m in merge_points],
 
89
            'navigation': navigation,
 
90
            'file_id': file_id,
 
91
            'start_revid': start_revid,
 
92
            'viewing_from': (orig_start_revid is not None) and (orig_start_revid != h.last_revid),
 
93
            'query': query,
 
94
            'search_failed': search_failed,
65
95
        }
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'
 
96
        h.flush_cache()
 
97
        self.log.info('/changes %r: %r secs' % (revid, time.time() - z))
70
98
        return vals