~loggerhead-team/loggerhead/trunk-rich

« back to all changes in this revision

Viewing changes to loggerhead/templatefunctions.py

  • Committer: John Arbash Meinel
  • Date: 2011-06-15 14:47:11 UTC
  • mfrom: (447.1.3 loggerhead)
  • Revision ID: john@arbash-meinel.com-20110615144711-wv0wgim27u1ismhi
Merge css updates for annotate from Jasper St. Pierre.

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
# along with this program; if not, write to the Free Software
14
14
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
15
15
#
16
 
import cgi
 
16
 
17
17
import os
 
18
import urllib
 
19
 
 
20
import pkg_resources
 
21
 
 
22
import bzrlib
 
23
 
 
24
import loggerhead
18
25
from loggerhead.zptsupport import zpt
 
26
from loggerhead.util import html_format
19
27
 
20
28
 
21
29
templatefunctions = {}
38
46
 
39
47
 
40
48
@templatefunc
41
 
def file_change_summary(url, entry, link_style='normal', currently_showing=None):
42
 
    if link_style == 'fragment':
 
49
def file_change_summary(url, entry, file_changes, style='normal', currently_showing=None):
 
50
    if style == 'fragment':
43
51
        def file_link(filename):
44
 
            if currently_showing:
45
 
                if filename == currently_showing:
46
 
                    return '<b><a href="#%s">%s</a></b>' % (
47
 
                        cgi.escape(filename), cgi.escape(filename))
48
 
                else:
49
 
                    return revision_link(url, entry.revno, filename)
 
52
            if currently_showing and filename == currently_showing:
 
53
                return html_format(
 
54
                    '<b><a href="#%s">%s</a></b>',
 
55
                    urllib.quote(filename.encode('utf-8')), filename)
50
56
            else:
51
 
                return '<a href="#%s">%s</a>' % (
52
 
                    cgi.escape(filename), cgi.escape(filename))
 
57
                return revision_link(
 
58
                    url, entry.revno, filename,
 
59
                    '#' + urllib.quote(filename.encode('utf-8')))
53
60
    else:
54
 
        file_link = lambda filename: revision_link(url, entry.revno, filename)
 
61
        def file_link(filename):
 
62
            return html_format(
 
63
                '<a href="%s%s" title="View changes to %s in revision %s">'
 
64
                '%s</a>',
 
65
                url(['/revision', entry.revno]),
 
66
                '#' + urllib.quote(filename.encode('utf-8')),
 
67
                filename, entry.revno, filename)
55
68
    return _pt('revisionfilechanges').expand(
56
 
        url=url, entry=entry, file_link=file_link,
57
 
        currently_showing=currently_showing, **templatefunctions)
 
69
        entry=entry, file_changes=file_changes, file_link=file_link, **templatefunctions)
58
70
 
59
71
 
60
72
@templatefunc
61
 
def revisioninfo(url, branch, entry, include_file_list=False, currently_showing=None):
 
73
def revisioninfo(url, branch, entry, file_changes=None, currently_showing=None, merged_in=None):
62
74
    from loggerhead import util
63
75
    return _pt('revisioninfo').expand(
64
76
        url=url, change=entry, branch=branch, util=util,
65
 
        include_file_list=include_file_list, currently_showing=currently_showing,
66
 
        **templatefunctions)
 
77
        file_changes=file_changes, currently_showing=currently_showing,
 
78
        merged_in=merged_in, **templatefunctions)
67
79
 
68
80
 
69
81
@templatefunc
94
106
        extra = ' ' + entry.branch_nick
95
107
    else:
96
108
        extra = ''
97
 
    return '(%s%s)'%(entry.revno, extra)
 
109
    return '(%s%s)' % (entry.revno, extra)
98
110
 
99
111
 
100
112
@templatefunc
115
127
 
116
128
 
117
129
@templatefunc
118
 
def annotate_link(url, revno, path):
119
 
    return '<a href="%s" title="Annotate %s">%s</a>'%(
120
 
        url(['/annotate', revno, path]), cgi.escape(path), cgi.escape(path))
121
 
 
122
 
@templatefunc
123
 
def revision_link(url, revno, path):
124
 
    return '<a href="%s" title="View changes to %s in revision %s">%s</a>'%(
125
 
        url(['/revision', revno, path]), cgi.escape(path), cgi.escape(revno),
126
 
        cgi.escape(path))
 
130
def view_link(url, revno, path):
 
131
    return html_format(
 
132
        '<a href="%s" title="Annotate %s">%s</a>',
 
133
        url(['/view', revno, path]), path, path)
 
134
 
 
135
 
 
136
@templatefunc
 
137
def revision_link(url, revno, path, frag=''):
 
138
    return html_format(
 
139
        '<a href="%s%s" title="View changes to %s in revision %s">%s</a>',
 
140
        url(['/revision', revno, path]), frag, path, revno, path)
 
141
 
 
142
 
 
143
@templatefunc
 
144
def loggerhead_version():
 
145
    return loggerhead.__version__
 
146
 
 
147
_cached_generator_string = None
 
148
 
 
149
@templatefunc
 
150
def generator_string():
 
151
    global _cached_generator_string
 
152
    if _cached_generator_string is None:
 
153
        versions = []
 
154
 
 
155
        # TODO: Errors -- e.g. from a missing/invalid __version__ attribute, or
 
156
        # ValueError accessing Distribution.version -- should be non-fatal.
 
157
 
 
158
        versions.append(('Loggerhead', loggerhead.__version__))
 
159
 
 
160
        import sys
 
161
        python_version = bzrlib._format_version_tuple(sys.version_info)
 
162
        versions.append(('Python', python_version))
 
163
 
 
164
        versions.append(('Bazaar', bzrlib.__version__))
 
165
 
 
166
        Paste = pkg_resources.get_distribution('Paste')
 
167
        versions.append(('Paste', Paste.version))
 
168
 
 
169
        try:
 
170
            PasteDeploy = pkg_resources.get_distribution('PasteDeploy')
 
171
        except pkg_resources.DistributionNotFound:
 
172
            pass
 
173
        else:
 
174
            versions.append(('PasteDeploy', PasteDeploy.version))
 
175
 
 
176
        import simpletal
 
177
        versions.append(('SimpleTAL', simpletal.__version__))
 
178
 
 
179
        try:
 
180
            import pygments
 
181
        except ImportError:
 
182
            pass
 
183
        else:
 
184
            versions.append(('Pygments', pygments.__version__))
 
185
 
 
186
        try:
 
187
            from bzrlib.plugins import search
 
188
        except ImportError:
 
189
            pass
 
190
        else:
 
191
            bzr_search_version = bzrlib._format_version_tuple(
 
192
                search.version_info)
 
193
            versions.append(('bzr-search', bzr_search_version))
 
194
 
 
195
        # TODO: On old Python versions, elementtree may be used.
 
196
 
 
197
        import simplejson
 
198
        versions.append(('simplejson', simplejson.__version__))
 
199
 
 
200
        try:
 
201
            Dozer = pkg_resources.get_distribution('Dozer')
 
202
        except pkg_resources.DistributionNotFound:
 
203
            pass
 
204
        else:
 
205
            versions.append(('Dozer', Dozer.version))
 
206
 
 
207
        version_strings = ("%s/%s" % t for t in versions)
 
208
        _cached_generator_string = ' '.join(version_strings)
 
209
    return _cached_generator_string