~loggerhead-team/loggerhead/trunk-rich

« back to all changes in this revision

Viewing changes to loggerhead/controllers/revision_ui.py

merge jamesh's fix for bug 89854: on error, report an error instead of
trying to redirect to a safe page.  there's no guaranteed safe page.

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 datetime
 
21
import logging
 
22
import os
 
23
import textwrap
20
24
import time
21
25
 
22
26
import turbogears
23
 
from cherrypy import InternalError
 
27
from cherrypy import InternalError, session
24
28
 
25
29
from loggerhead import util
26
30
 
40
44
        h = self._branch.get_history()
41
45
        util.set_context(kw)
42
46
        
43
 
        h._branch.lock_read()
 
47
        if len(args) > 0:
 
48
            revid = h.fix_revid(args[0])
 
49
        else:
 
50
            revid = None
 
51
        
 
52
        file_id = kw.get('file_id', None)
 
53
        start_revid = h.fix_revid(kw.get('start_revid', None))
 
54
        query = kw.get('q', None)
 
55
        remember = kw.get('remember', None)
 
56
        compare_revid = kw.get('compare_revid', None)
 
57
        
44
58
        try:
45
 
            if len(args) > 0:
46
 
                revid = h.fix_revid(args[0])
47
 
            else:
48
 
                revid = None
49
 
 
50
 
            file_id = kw.get('file_id', None)
51
 
            start_revid = h.fix_revid(kw.get('start_revid', None))
52
 
            query = kw.get('q', None)
53
 
            remember = kw.get('remember', None)
54
 
            compare_revid = kw.get('compare_revid', None)
55
 
 
56
 
            try:
57
 
                revid, start_revid, revid_list = h.get_view(revid, start_revid, file_id, query)
58
 
            except:
59
 
                self.log.exception('Exception fetching changes')
60
 
                raise InternalError('Could not fetch changes')
61
 
 
62
 
            navigation = util.Container(revid_list=revid_list, revid=revid, start_revid=start_revid, file_id=file_id,
63
 
                                        pagesize=1, scan_url='/revision', branch=self._branch, feed=True)
64
 
            if query is not None:
65
 
                navigation.query = query
66
 
            util.fill_in_navigation(navigation)
67
 
 
68
 
            change = h.get_change_with_diff(revid, compare_revid)
69
 
            # add parent & merge-point branch-nick info, in case it's useful
70
 
            h.get_branch_nicks([ change ])
71
 
 
72
 
            # let's make side-by-side diff be the default
73
 
            side_by_side = not kw.get('unified', False)
74
 
            if side_by_side:
75
 
                h.add_side_by_side([ change ])
76
 
 
77
 
            vals = {
78
 
                'branch': self._branch,
79
 
                'revid': revid,
80
 
                'change': change,
81
 
                'start_revid': start_revid,
82
 
                'file_id': file_id,
83
 
                'util': util,
84
 
                'history': h,
85
 
                'navigation': navigation,
86
 
                'query': query,
87
 
                'remember': remember,
88
 
                'compare_revid': compare_revid,
89
 
                'side_by_side': side_by_side,
90
 
            }
91
 
            h.flush_cache()
92
 
            self.log.info('/revision: %r seconds' % (time.time() - z,))
93
 
            return vals
94
 
        finally:
95
 
            h._branch.unlock()
 
59
            revid, start_revid, revid_list = h.get_view(revid, start_revid, file_id, query)
 
60
        except:
 
61
            self.log.exception('Exception fetching changes')
 
62
            raise InternalError('Could not fetch changes')
 
63
        
 
64
        navigation = util.Container(revid_list=revid_list, revid=revid, start_revid=start_revid, file_id=file_id,
 
65
                                    pagesize=1, scan_url='/revision', branch=self._branch, feed=True)
 
66
        if query is not None:
 
67
            navigation.query = query
 
68
        util.fill_in_navigation(h, navigation)
 
69
 
 
70
        if compare_revid is not None:
 
71
            change = h.get_diff(compare_revid, revid)
 
72
        else:
 
73
            change = h.get_changes([ revid ], get_diffs=True)[0]
 
74
        # add parent & merge-point branch-nick info, in case it's useful
 
75
        h.get_branch_nicks([ change ])
 
76
 
 
77
        # let's make side-by-side diff be the default
 
78
        side_by_side = not kw.get('unified', False)
 
79
        if side_by_side:
 
80
            h.add_side_by_side([ change ])
 
81
        
 
82
        vals = {
 
83
            'branch': self._branch,
 
84
            'revid': revid,
 
85
            'change': change,
 
86
            'start_revid': start_revid,
 
87
            'file_id': file_id,
 
88
            'util': util,
 
89
            'history': h,
 
90
            'navigation': navigation,
 
91
            'query': query,
 
92
            'remember': remember,
 
93
            'compare_revid': compare_revid,
 
94
            'side_by_side': side_by_side,
 
95
        }
 
96
        h.flush_cache()
 
97
        self.log.info('/revision: %r seconds' % (time.time() - z,))
 
98
        return vals