~loggerhead-team/loggerhead/trunk-rich

« back to all changes in this revision

Viewing changes to loggerhead/controllers/revision_ui.py

  • Committer: Martin Albisetti
  • Date: 2008-10-24 17:54:06 UTC
  • mfrom: (230.1.2 pep8)
  • Revision ID: martin.albisetti@canonical.com-20081024175406-73bpc73m7pshat9c
PEP8 fixes

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
 
try:
21
 
    import simplejson
22
 
except ImportError:
23
 
    import json as simplejson
24
 
import urllib
25
 
 
26
20
from paste.httpexceptions import HTTPServerError
27
21
 
28
22
from loggerhead import util
29
23
from loggerhead.controllers import TemplatedBranchView
30
 
from loggerhead.controllers.filediff_ui import diff_chunks_for_file
31
24
 
32
25
 
33
26
DEFAULT_LINE_COUNT_LIMIT = 3000
34
27
 
35
 
def dq(p):
36
 
    return urllib.quote(urllib.quote(p, safe=''))
37
 
 
38
28
 
39
29
class RevisionUI(TemplatedBranchView):
40
30
 
41
31
    template_path = 'loggerhead.templates.revision'
42
32
 
43
 
    def get_values(self, path, kwargs, headers):
44
 
        h = self._history
45
 
        revid = self.get_revid()
46
 
 
47
 
        filter_file_id = kwargs.get('filter_file_id', None)
48
 
        start_revid = h.fix_revid(kwargs.get('start_revid', None))
49
 
        query = kwargs.get('q', None)
50
 
        remember = h.fix_revid(kwargs.get('remember', None))
51
 
        compare_revid = h.fix_revid(kwargs.get('compare_revid', None))
 
33
    def get_values(self, h, args, kw, headers):
 
34
 
 
35
        if len(args) > 0:
 
36
            revid = h.fix_revid(args[0])
 
37
        else:
 
38
            revid = None
 
39
 
 
40
        filter_file_id = kw.get('filter_file_id', None)
 
41
        start_revid = h.fix_revid(kw.get('start_revid', None))
 
42
        query = kw.get('q', None)
 
43
        remember = h.fix_revid(kw.get('remember', None))
 
44
        compare_revid = h.fix_revid(kw.get('compare_revid', None))
52
45
 
53
46
        try:
54
47
            revid, start_revid, revid_list = h.get_view(revid,
67
60
            navigation.query = query
68
61
        util.fill_in_navigation(navigation)
69
62
 
70
 
        change = h.get_changes([revid])[0]
71
 
 
72
 
        if compare_revid is None:
73
 
            file_changes = h.get_file_changes(change)
74
 
        else:
75
 
            file_changes = h.file_changes_for_revision_ids(
76
 
                compare_revid, change.revid)
77
 
 
78
 
        if path in ('', '/'):
79
 
            path = None
80
 
 
81
 
        link_data = {}
82
 
        path_to_id = {}
83
 
        if path:
84
 
            item = [x for x in file_changes.text_changes if x.filename == path][0]
85
 
            diff_chunks = diff_chunks_for_file(
86
 
                self._history._branch.repository, item.file_id,
87
 
                item.old_revision, item.new_revision)
88
 
        else:
89
 
            diff_chunks = None
90
 
            for i, item in enumerate(file_changes.text_changes):
91
 
                item.index = i
92
 
                link_data['diff-' + str(i)] = '%s/%s/%s' % (
93
 
                    dq(item.new_revision), dq(item.old_revision), dq(item.file_id))
94
 
                path_to_id[item.filename] = 'diff-' + str(i)
95
 
 
96
 
        h.add_branch_nicks(change)
 
63
        change = h.get_change_with_diff(revid, compare_revid)
 
64
        # add parent & merge-point branch-nick info, in case it's useful
 
65
        h.get_branch_nicks([change])
 
66
 
 
67
        line_count_limit = DEFAULT_LINE_COUNT_LIMIT
 
68
        line_count = 0
 
69
        for file in change.changes.modified:
 
70
            for chunk in file.chunks:
 
71
                line_count += len(chunk.diff)
 
72
 
 
73
        # let's make side-by-side diff be the default
 
74
        side_by_side = not kw.get('unified', False)
 
75
        if side_by_side:
 
76
            h.add_side_by_side([change])
97
77
 
98
78
        # Directory Breadcrumbs
99
79
        directory_breadcrumbs = (
106
86
            'branch': self._branch,
107
87
            'revid': revid,
108
88
            'change': change,
109
 
            'file_changes': file_changes,
110
 
            'diff_chunks': diff_chunks,
111
 
            'link_data': simplejson.dumps(link_data),
112
 
            'specific_path': path,
113
 
            'json_specific_path': simplejson.dumps(path),
114
 
            'path_to_id': simplejson.dumps(path_to_id),
115
89
            'start_revid': start_revid,
116
90
            'filter_file_id': filter_file_id,
117
91
            'util': util,
120
94
            'query': query,
121
95
            'remember': remember,
122
96
            'compare_revid': compare_revid,
 
97
            'side_by_side': side_by_side,
123
98
            'url': self._branch.context_url,
 
99
            'line_count': line_count,
 
100
            'line_count_limit': line_count_limit,
 
101
            'show_plain_diffs': line_count > line_count_limit,
124
102
            'directory_breadcrumbs': directory_breadcrumbs,
125
103
        }