~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:
17
17
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
18
#
19
19
 
20
 
import base64
21
 
import logging
22
20
import os
23
 
import posixpath
24
21
import time
25
22
 
26
23
import turbogears
27
 
from cherrypy import HTTPRedirect, session
 
24
from cherrypy import InternalError, session
28
25
 
29
26
from loggerhead import util
30
27
 
31
 
log = logging.getLogger("loggerhead.controllers")
32
 
 
33
 
 
34
 
# just thinking out loud here...
35
 
#
36
 
# so, when browsing around, there are 3 pieces of context:
37
 
#     - starting revid 
38
 
#         the current beginning of navigation (navigation continues back to
39
 
#         the original revision) -- this may not be along the primary revision
40
 
#         path since the user may have navigated into a branch
41
 
#     - file_id
42
 
#         if navigating the revisions that touched a file
43
 
#     - current revid
44
 
#         current location along the navigation path (while browsing)
45
 
#
46
 
# current revid is given on the url path.  'file_id' and 'starting revid' are
47
 
# handed along as params.
48
 
 
49
28
 
50
29
class ChangeLogUI (object):
51
30
    
 
31
    def __init__(self, branch):
 
32
        # BranchView object
 
33
        self._branch = branch
 
34
        self.log = branch.log
 
35
        
 
36
    @util.strip_whitespace
52
37
    @turbogears.expose(html='loggerhead.templates.changelog')
53
38
    def default(self, *args, **kw):
54
39
        z = time.time()
55
 
        h = util.get_history()
 
40
        h = self._branch.get_history()
 
41
        config = self._branch.config
56
42
        
57
43
        if len(args) > 0:
58
44
            revid = h.fix_revid(args[0])
60
46
            revid = None
61
47
 
62
48
        file_id = kw.get('file_id', None)
 
49
        query = kw.get('q', None)
63
50
        start_revid = h.fix_revid(kw.get('start_revid', None))
64
 
        pagesize = int(util.get_config().get('pagesize', '20'))
 
51
        orig_start_revid = start_revid
 
52
        pagesize = int(config.get('pagesize', '20'))
 
53
        search_failed = False
65
54
        
66
55
        try:
67
 
            revlist, start_revid = h.get_navigation(start_revid, file_id)
68
 
            if revid is None:
69
 
                revid = start_revid
70
 
            if revid not in revlist:
71
 
                # if the given revid is not in the revlist, use a revlist that
72
 
                # starts at the given revid.
73
 
                revlist, start_revid = h.get_navigation(revid, file_id)
74
 
            entry_list = list(h.get_revids_from(revlist, revid))[:pagesize]
 
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]
75
68
            entries = h.get_changes(entry_list)
76
 
        except Exception, x:
77
 
            log.error('Exception fetching changes: %r, %s' % (x, x))
78
 
            raise HTTPRedirect(turbogears.url('/changes'))
 
69
        except:
 
70
            self.log.exception('Exception fetching changes')
 
71
            raise InternalError('Could not fetch changes')
79
72
 
80
 
        navigation = util.Container(pagesize=pagesize, revid=revid, start_revid=start_revid, revlist=revlist,
81
 
                                    file_id=file_id, scan_url='/changes', feed=True)
 
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
82
77
        util.fill_in_navigation(h, navigation)
83
78
        
84
79
        entries = list(entries)
86
81
        h.get_branch_nicks(entries)
87
82
 
88
83
        vals = {
89
 
            'branch_name': util.get_config().get('branch_name'),
 
84
            'branch': self._branch,
90
85
            'changes': list(entries),
91
86
            'util': util,
92
87
            'history': h,
93
88
            'revid': revid,
94
89
            'navigation': navigation,
95
90
            'file_id': file_id,
96
 
            'last_revid': h.last_revid,
97
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,
98
95
        }
99
96
        h.flush_cache()
100
 
        log.info('/changes %r: %r secs' % (revid, time.time() - z))
 
97
        self.log.info('/changes %r: %r secs' % (revid, time.time() - z))
101
98
        return vals