annotate rhodecode/lib/helpers.py @ 1366:9c0f5d558789 beta

fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached to db repository instance, and then fetched from cache. Also made all current test work.
author Marcin Kuzminski <marcin@python-works.com>
date Tue, 07 Jun 2011 17:58:51 +0200
parents 54fc83f2192c
children 66f03a87141c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1 """Helper functions
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3 Consists of functions to typically be used within templates, but also
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4 available to Controllers. This module is available to both as 'h'.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5 """
734
49eb69d78988 implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents: 718
diff changeset
6 import random
49eb69d78988 implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents: 718
diff changeset
7 import hashlib
966
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
8 import StringIO
1101
c1080b42a7cb fixed problem with int. chars in gravatars
Marcin Kuzminski <marcin@python-works.com>
parents: 1100
diff changeset
9 import urllib
c1080b42a7cb fixed problem with int. chars in gravatars
Marcin Kuzminski <marcin@python-works.com>
parents: 1100
diff changeset
10
1154
36fe593dfe4b simplified str2bool, and moved safe_unicode out of helpers since it was not html specific function
Marcin Kuzminski <marcin@python-works.com>
parents: 1115
diff changeset
11 from datetime import datetime
250
be4621c6de58 Pygments code coloring rewrite, annotation was moved to vcs whitch had much better lib for that. Fixed code recognition based on mimetypes of filenodes, for better coloring.
Marcin Kuzminski <marcin@python-works.com>
parents: 165
diff changeset
12 from pygments.formatters import HtmlFormatter
be4621c6de58 Pygments code coloring rewrite, annotation was moved to vcs whitch had much better lib for that. Fixed code recognition based on mimetypes of filenodes, for better coloring.
Marcin Kuzminski <marcin@python-works.com>
parents: 165
diff changeset
13 from pygments import highlight as code_highlight
1110
5351a3a32381 #21 added optional flag to disable gravatar, and use local icon
Marcin Kuzminski <marcin@python-works.com>
parents: 1105
diff changeset
14 from pylons import url, request, config
97
be0096a02772 added helper for filesize
Marcin Kuzminski <marcin@python-works.com>
parents: 94
diff changeset
15 from pylons.i18n.translation import _, ungettext
1022
4f834b0abcd3 Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents: 1009
diff changeset
16
250
be4621c6de58 Pygments code coloring rewrite, annotation was moved to vcs whitch had much better lib for that. Fixed code recognition based on mimetypes of filenodes, for better coloring.
Marcin Kuzminski <marcin@python-works.com>
parents: 165
diff changeset
17 from webhelpers.html import literal, HTML, escape
281
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
18 from webhelpers.html.tools import *
98
01d0f363f36d added pygments webhelper
Marcin Kuzminski <marcin@python-works.com>
parents: 97
diff changeset
19 from webhelpers.html.builder import make_tag
250
be4621c6de58 Pygments code coloring rewrite, annotation was moved to vcs whitch had much better lib for that. Fixed code recognition based on mimetypes of filenodes, for better coloring.
Marcin Kuzminski <marcin@python-works.com>
parents: 165
diff changeset
20 from webhelpers.html.tags import auto_discovery_link, checkbox, css_classes, \
be4621c6de58 Pygments code coloring rewrite, annotation was moved to vcs whitch had much better lib for that. Fixed code recognition based on mimetypes of filenodes, for better coloring.
Marcin Kuzminski <marcin@python-works.com>
parents: 165
diff changeset
21 end_form, file, form, hidden, image, javascript_link, link_to, link_to_if, \
be4621c6de58 Pygments code coloring rewrite, annotation was moved to vcs whitch had much better lib for that. Fixed code recognition based on mimetypes of filenodes, for better coloring.
Marcin Kuzminski <marcin@python-works.com>
parents: 165
diff changeset
22 link_to_unless, ol, required_legend, select, stylesheet_link, submit, text, \
281
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
23 password, textarea, title, ul, xml_declaration, radio
250
be4621c6de58 Pygments code coloring rewrite, annotation was moved to vcs whitch had much better lib for that. Fixed code recognition based on mimetypes of filenodes, for better coloring.
Marcin Kuzminski <marcin@python-works.com>
parents: 165
diff changeset
24 from webhelpers.html.tools import auto_link, button_to, highlight, js_obfuscate, \
be4621c6de58 Pygments code coloring rewrite, annotation was moved to vcs whitch had much better lib for that. Fixed code recognition based on mimetypes of filenodes, for better coloring.
Marcin Kuzminski <marcin@python-works.com>
parents: 165
diff changeset
25 mail_to, strip_links, strip_tags, tag_re
be4621c6de58 Pygments code coloring rewrite, annotation was moved to vcs whitch had much better lib for that. Fixed code recognition based on mimetypes of filenodes, for better coloring.
Marcin Kuzminski <marcin@python-works.com>
parents: 165
diff changeset
26 from webhelpers.number import format_byte_size, format_bit_size
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
27 from webhelpers.pylonslib import Flash as _Flash
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
28 from webhelpers.pylonslib.secure_form import secure_form
250
be4621c6de58 Pygments code coloring rewrite, annotation was moved to vcs whitch had much better lib for that. Fixed code recognition based on mimetypes of filenodes, for better coloring.
Marcin Kuzminski <marcin@python-works.com>
parents: 165
diff changeset
29 from webhelpers.text import chop_at, collapse, convert_accented_entities, \
be4621c6de58 Pygments code coloring rewrite, annotation was moved to vcs whitch had much better lib for that. Fixed code recognition based on mimetypes of filenodes, for better coloring.
Marcin Kuzminski <marcin@python-works.com>
parents: 165
diff changeset
30 convert_misc_entities, lchop, plural, rchop, remove_formatting, \
281
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
31 replace_whitespace, urlify, truncate, wrap_paragraphs
635
fd63782c4426 Fixed age, for new vcs implementation. Removed all obsolete date formatters
Marcin Kuzminski <marcin@python-works.com>
parents: 631
diff changeset
32 from webhelpers.date import time_ago_in_words
1098
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
33 from webhelpers.paginate import Page
698
4cd0709b6d4b fixes #65, Added reset buttons to edit forms
Marcin Kuzminski <marcin@python-works.com>
parents: 668
diff changeset
34 from webhelpers.html.tags import _set_input_attrs, _set_id_attr, \
4cd0709b6d4b fixes #65, Added reset buttons to edit forms
Marcin Kuzminski <marcin@python-works.com>
parents: 668
diff changeset
35 convert_boolean_attrs, NotGiven
4cd0709b6d4b fixes #65, Added reset buttons to edit forms
Marcin Kuzminski <marcin@python-works.com>
parents: 668
diff changeset
36
1101
c1080b42a7cb fixed problem with int. chars in gravatars
Marcin Kuzminski <marcin@python-works.com>
parents: 1100
diff changeset
37 from vcs.utils.annotate import annotate_highlight
c1080b42a7cb fixed problem with int. chars in gravatars
Marcin Kuzminski <marcin@python-works.com>
parents: 1100
diff changeset
38 from rhodecode.lib.utils import repo_name_slug
1176
014c9a58a0d9 fixes for issues #137 and #116 safe_unicode is now default for handling file names
Marcin Kuzminski <marcin@python-works.com>
parents: 1171
diff changeset
39 from rhodecode.lib import str2bool, safe_unicode
1101
c1080b42a7cb fixed problem with int. chars in gravatars
Marcin Kuzminski <marcin@python-works.com>
parents: 1100
diff changeset
40
698
4cd0709b6d4b fixes #65, Added reset buttons to edit forms
Marcin Kuzminski <marcin@python-works.com>
parents: 668
diff changeset
41 def _reset(name, value=None, id=NotGiven, type="reset", **attrs):
1154
36fe593dfe4b simplified str2bool, and moved safe_unicode out of helpers since it was not html specific function
Marcin Kuzminski <marcin@python-works.com>
parents: 1115
diff changeset
42 """
36fe593dfe4b simplified str2bool, and moved safe_unicode out of helpers since it was not html specific function
Marcin Kuzminski <marcin@python-works.com>
parents: 1115
diff changeset
43 Reset button
899
d65843e07d3c Added message tooltip into journal revisions in push.
Marcin Kuzminski <marcin@python-works.com>
parents: 864
diff changeset
44 """
698
4cd0709b6d4b fixes #65, Added reset buttons to edit forms
Marcin Kuzminski <marcin@python-works.com>
parents: 668
diff changeset
45 _set_input_attrs(attrs, type, name, value)
4cd0709b6d4b fixes #65, Added reset buttons to edit forms
Marcin Kuzminski <marcin@python-works.com>
parents: 668
diff changeset
46 _set_id_attr(attrs, id, name)
4cd0709b6d4b fixes #65, Added reset buttons to edit forms
Marcin Kuzminski <marcin@python-works.com>
parents: 668
diff changeset
47 convert_boolean_attrs(attrs, ["disabled"])
4cd0709b6d4b fixes #65, Added reset buttons to edit forms
Marcin Kuzminski <marcin@python-works.com>
parents: 668
diff changeset
48 return HTML.input(**attrs)
4cd0709b6d4b fixes #65, Added reset buttons to edit forms
Marcin Kuzminski <marcin@python-works.com>
parents: 668
diff changeset
49
4cd0709b6d4b fixes #65, Added reset buttons to edit forms
Marcin Kuzminski <marcin@python-works.com>
parents: 668
diff changeset
50 reset = _reset
4cd0709b6d4b fixes #65, Added reset buttons to edit forms
Marcin Kuzminski <marcin@python-works.com>
parents: 668
diff changeset
51
734
49eb69d78988 implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents: 718
diff changeset
52
49eb69d78988 implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents: 718
diff changeset
53 def get_token():
49eb69d78988 implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents: 718
diff changeset
54 """Return the current authentication token, creating one if one doesn't
49eb69d78988 implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents: 718
diff changeset
55 already exist.
49eb69d78988 implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents: 718
diff changeset
56 """
49eb69d78988 implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents: 718
diff changeset
57 token_key = "_authentication_token"
49eb69d78988 implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents: 718
diff changeset
58 from pylons import session
49eb69d78988 implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents: 718
diff changeset
59 if not token_key in session:
49eb69d78988 implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents: 718
diff changeset
60 try:
49eb69d78988 implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents: 718
diff changeset
61 token = hashlib.sha1(str(random.getrandbits(128))).hexdigest()
49eb69d78988 implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents: 718
diff changeset
62 except AttributeError: # Python < 2.4
49eb69d78988 implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents: 718
diff changeset
63 token = hashlib.sha1(str(random.randrange(2 ** 128))).hexdigest()
49eb69d78988 implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents: 718
diff changeset
64 session[token_key] = token
49eb69d78988 implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents: 718
diff changeset
65 if hasattr(session, 'save'):
49eb69d78988 implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents: 718
diff changeset
66 session.save()
49eb69d78988 implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents: 718
diff changeset
67 return session[token_key]
49eb69d78988 implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents: 718
diff changeset
68
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
69 class _GetError(object):
899
d65843e07d3c Added message tooltip into journal revisions in push.
Marcin Kuzminski <marcin@python-works.com>
parents: 864
diff changeset
70 """Get error from form_errors, and represent it as span wrapped error
d65843e07d3c Added message tooltip into journal revisions in push.
Marcin Kuzminski <marcin@python-works.com>
parents: 864
diff changeset
71 message
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1187
diff changeset
72
899
d65843e07d3c Added message tooltip into journal revisions in push.
Marcin Kuzminski <marcin@python-works.com>
parents: 864
diff changeset
73 :param field_name: field to fetch errors for
d65843e07d3c Added message tooltip into journal revisions in push.
Marcin Kuzminski <marcin@python-works.com>
parents: 864
diff changeset
74 :param form_errors: form errors dict
d65843e07d3c Added message tooltip into journal revisions in push.
Marcin Kuzminski <marcin@python-works.com>
parents: 864
diff changeset
75 """
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
76
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
77 def __call__(self, field_name, form_errors):
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
78 tmpl = """<span class="error_msg">%s</span>"""
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
79 if form_errors and form_errors.has_key(field_name):
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
80 return literal(tmpl % form_errors.get(field_name))
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
81
281
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
82 get_error = _GetError()
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
83
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
84 class _ToolTip(object):
631
05528ad948c4 Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents: 604
diff changeset
85
281
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
86 def __call__(self, tooltip_title, trim_at=50):
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1187
diff changeset
87 """Special function just to wrap our text into nice formatted
905
1294f2baf2bc added wrapping of long tooltips in index page
Marcin Kuzminski <marcin@python-works.com>
parents: 904
diff changeset
88 autowrapped text
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1187
diff changeset
89
604
5cc96df705b9 fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
90 :param tooltip_title:
281
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
91 """
631
05528ad948c4 Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents: 604
diff changeset
92
1352
79041f2d16f4 wrap_paragraph was to slow for toolip generation and was removed.
Marcin Kuzminski <marcin@python-works.com>
parents: 1342
diff changeset
93 return escape(tooltip_title)
631
05528ad948c4 Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents: 604
diff changeset
94
281
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
95 def activate(self):
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1187
diff changeset
96 """Adds tooltip mechanism to the given Html all tooltips have to have
904
82aaf4e71817 reimplemented tooltip, refactored tooltip_title into title for proper html,
Marcin Kuzminski <marcin@python-works.com>
parents: 899
diff changeset
97 set class `tooltip` and set attribute `tooltip_title`.
82aaf4e71817 reimplemented tooltip, refactored tooltip_title into title for proper html,
Marcin Kuzminski <marcin@python-works.com>
parents: 899
diff changeset
98 Then a tooltip will be generated based on that. All with yui js tooltip
281
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
99 """
631
05528ad948c4 Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents: 604
diff changeset
100
281
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
101 js = '''
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
102 YAHOO.util.Event.onDOMReady(function(){
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
103 function toolTipsId(){
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
104 var ids = [];
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
105 var tts = YAHOO.util.Dom.getElementsByClassName('tooltip');
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1187
diff changeset
106
281
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
107 for (var i = 0; i < tts.length; i++) {
904
82aaf4e71817 reimplemented tooltip, refactored tooltip_title into title for proper html,
Marcin Kuzminski <marcin@python-works.com>
parents: 899
diff changeset
108 //if element doesn't not have and id autogenerate one for tooltip
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1187
diff changeset
109
281
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
110 if (!tts[i].id){
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
111 tts[i].id='tt'+i*100;
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
112 }
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
113 ids.push(tts[i].id);
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
114 }
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1187
diff changeset
115 return ids
281
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
116 };
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1187
diff changeset
117 var myToolTips = new YAHOO.widget.Tooltip("tooltip", {
1187
08d77411c881 fixed problem with tooltips flickering.
Marcin Kuzminski <marcin@python-works.com>
parents: 1176
diff changeset
118 context: [[toolTipsId()],"tl","bl",null,[0,5]],
281
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
119 monitorresize:false,
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
120 xyoffset :[0,0],
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
121 autodismissdelay:300000,
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
122 hidedelay:5,
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
123 showdelay:20,
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
124 });
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1187
diff changeset
125
281
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
126 });
631
05528ad948c4 Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents: 604
diff changeset
127 '''
281
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
128 return literal(js)
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
129
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
130 tooltip = _ToolTip()
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
131
102
2dc0c8e4f384 Updated tempaltes, added file browser breadcrumbs, and feed icons
Marcin Kuzminski <marcin@python-works.com>
parents: 98
diff changeset
132 class _FilesBreadCrumbs(object):
631
05528ad948c4 Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents: 604
diff changeset
133
102
2dc0c8e4f384 Updated tempaltes, added file browser breadcrumbs, and feed icons
Marcin Kuzminski <marcin@python-works.com>
parents: 98
diff changeset
134 def __call__(self, repo_name, rev, paths):
955
129eb072b8a8 fixes for #99, added casting to unicode for int chars as utf-8 files
Marcin Kuzminski <marcin@python-works.com>
parents: 953
diff changeset
135 if isinstance(paths, str):
1176
014c9a58a0d9 fixes for issues #137 and #116 safe_unicode is now default for handling file names
Marcin Kuzminski <marcin@python-works.com>
parents: 1171
diff changeset
136 paths = safe_unicode(paths)
287
5827c739b0bd webhelpers breadcrumbs bugfix
Marcin Kuzminski <marcin@python-works.com>
parents: 286
diff changeset
137 url_l = [link_to(repo_name, url('files_home',
5827c739b0bd webhelpers breadcrumbs bugfix
Marcin Kuzminski <marcin@python-works.com>
parents: 286
diff changeset
138 repo_name=repo_name,
5827c739b0bd webhelpers breadcrumbs bugfix
Marcin Kuzminski <marcin@python-works.com>
parents: 286
diff changeset
139 revision=rev, f_path=''))]
5827c739b0bd webhelpers breadcrumbs bugfix
Marcin Kuzminski <marcin@python-works.com>
parents: 286
diff changeset
140 paths_l = paths.split('/')
740
9279dfedcf93 fixed python2.5 incompatible enumerate calls
Marcin Kuzminski <marcin@python-works.com>
parents: 735
diff changeset
141 for cnt, p in enumerate(paths_l):
102
2dc0c8e4f384 Updated tempaltes, added file browser breadcrumbs, and feed icons
Marcin Kuzminski <marcin@python-works.com>
parents: 98
diff changeset
142 if p != '':
287
5827c739b0bd webhelpers breadcrumbs bugfix
Marcin Kuzminski <marcin@python-works.com>
parents: 286
diff changeset
143 url_l.append(link_to(p, url('files_home',
5827c739b0bd webhelpers breadcrumbs bugfix
Marcin Kuzminski <marcin@python-works.com>
parents: 286
diff changeset
144 repo_name=repo_name,
5827c739b0bd webhelpers breadcrumbs bugfix
Marcin Kuzminski <marcin@python-works.com>
parents: 286
diff changeset
145 revision=rev,
740
9279dfedcf93 fixed python2.5 incompatible enumerate calls
Marcin Kuzminski <marcin@python-works.com>
parents: 735
diff changeset
146 f_path='/'.join(paths_l[:cnt + 1]))))
97
be0096a02772 added helper for filesize
Marcin Kuzminski <marcin@python-works.com>
parents: 94
diff changeset
147
448
4679105ef03e more css html fixes (+cleanups), rewrote definition list for files
Marcin Kuzminski <marcin@python-works.com>
parents: 444
diff changeset
148 return literal('/'.join(url_l))
98
01d0f363f36d added pygments webhelper
Marcin Kuzminski <marcin@python-works.com>
parents: 97
diff changeset
149
281
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
150 files_breadcrumbs = _FilesBreadCrumbs()
899
d65843e07d3c Added message tooltip into journal revisions in push.
Marcin Kuzminski <marcin@python-works.com>
parents: 864
diff changeset
151
505
5aba7adff196 little gui change for file source
Marcin Kuzminski <marcin@python-works.com>
parents: 494
diff changeset
152 class CodeHtmlFormatter(HtmlFormatter):
966
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
153 """My code Html Formatter for source codes
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
154 """
281
cd2ee462fc2c implemented yui tooltip, and added it into annotation and main page.
Marcin Kuzminski <marcin@python-works.com>
parents: 278
diff changeset
155
505
5aba7adff196 little gui change for file source
Marcin Kuzminski <marcin@python-works.com>
parents: 494
diff changeset
156 def wrap(self, source, outfile):
5aba7adff196 little gui change for file source
Marcin Kuzminski <marcin@python-works.com>
parents: 494
diff changeset
157 return self._wrap_div(self._wrap_pre(self._wrap_code(source)))
5aba7adff196 little gui change for file source
Marcin Kuzminski <marcin@python-works.com>
parents: 494
diff changeset
158
5aba7adff196 little gui change for file source
Marcin Kuzminski <marcin@python-works.com>
parents: 494
diff changeset
159 def _wrap_code(self, source):
740
9279dfedcf93 fixed python2.5 incompatible enumerate calls
Marcin Kuzminski <marcin@python-works.com>
parents: 735
diff changeset
160 for cnt, it in enumerate(source):
505
5aba7adff196 little gui change for file source
Marcin Kuzminski <marcin@python-works.com>
parents: 494
diff changeset
161 i, t = it
966
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
162 t = '<div id="L%s">%s</div>' % (cnt + 1, t)
505
5aba7adff196 little gui change for file source
Marcin Kuzminski <marcin@python-works.com>
parents: 494
diff changeset
163 yield i, t
966
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
164
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
165 def _wrap_tablelinenos(self, inner):
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
166 dummyoutfile = StringIO.StringIO()
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
167 lncount = 0
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
168 for t, line in inner:
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
169 if t:
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
170 lncount += 1
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
171 dummyoutfile.write(line)
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
172
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
173 fl = self.linenostart
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
174 mw = len(str(lncount + fl - 1))
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
175 sp = self.linenospecial
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
176 st = self.linenostep
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
177 la = self.lineanchors
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
178 aln = self.anchorlinenos
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
179 nocls = self.noclasses
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
180 if sp:
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
181 lines = []
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
182
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
183 for i in range(fl, fl + lncount):
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
184 if i % st == 0:
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
185 if i % sp == 0:
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
186 if aln:
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
187 lines.append('<a href="#%s%d" class="special">%*d</a>' %
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
188 (la, i, mw, i))
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
189 else:
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
190 lines.append('<span class="special">%*d</span>' % (mw, i))
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
191 else:
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
192 if aln:
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
193 lines.append('<a href="#%s%d">%*d</a>' % (la, i, mw, i))
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
194 else:
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
195 lines.append('%*d' % (mw, i))
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
196 else:
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
197 lines.append('')
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
198 ls = '\n'.join(lines)
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
199 else:
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
200 lines = []
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
201 for i in range(fl, fl + lncount):
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
202 if i % st == 0:
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
203 if aln:
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
204 lines.append('<a href="#%s%d">%*d</a>' % (la, i, mw, i))
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
205 else:
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
206 lines.append('%*d' % (mw, i))
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
207 else:
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
208 lines.append('')
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
209 ls = '\n'.join(lines)
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
210
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
211 # in case you wonder about the seemingly redundant <div> here: since the
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
212 # content in the other cell also is wrapped in a div, some browsers in
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
213 # some configurations seem to mess up the formatting...
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
214 if nocls:
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
215 yield 0, ('<table class="%stable">' % self.cssclass +
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
216 '<tr><td><div class="linenodiv" '
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
217 'style="background-color: #f0f0f0; padding-right: 10px">'
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
218 '<pre style="line-height: 125%">' +
1320
09c3fb460fcb Fixed problem with anchor link positioning when passed in ranges.
Marcin Kuzminski <marcin@python-works.com>
parents: 1312
diff changeset
219 ls + '</pre></div></td><td id="hlcode" class="code">')
966
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
220 else:
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
221 yield 0, ('<table class="%stable">' % self.cssclass +
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
222 '<tr><td class="linenos"><div class="linenodiv"><pre>' +
1320
09c3fb460fcb Fixed problem with anchor link positioning when passed in ranges.
Marcin Kuzminski <marcin@python-works.com>
parents: 1312
diff changeset
223 ls + '</pre></div></td><td id="hlcode" class="code">')
966
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
224 yield 0, dummyoutfile.getvalue()
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
225 yield 0, '</td></tr></table>'
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
226
63c91390853c fixed line number look
Marcin Kuzminski <marcin@python-works.com>
parents: 965
diff changeset
227
250
be4621c6de58 Pygments code coloring rewrite, annotation was moved to vcs whitch had much better lib for that. Fixed code recognition based on mimetypes of filenodes, for better coloring.
Marcin Kuzminski <marcin@python-works.com>
parents: 165
diff changeset
228 def pygmentize(filenode, **kwargs):
899
d65843e07d3c Added message tooltip into journal revisions in push.
Marcin Kuzminski <marcin@python-works.com>
parents: 864
diff changeset
229 """pygmentize function using pygments
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1187
diff changeset
230
604
5cc96df705b9 fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
231 :param filenode:
165
ea893ffb7f00 implemented pygmentize codes into webhelpers. Together with color_dict caching into pylons globals
Marcin Kuzminski <marcin@python-works.com>
parents: 104
diff changeset
232 """
899
d65843e07d3c Added message tooltip into journal revisions in push.
Marcin Kuzminski <marcin@python-works.com>
parents: 864
diff changeset
233
450
c3236d7febad fixed, empty cs bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 448
diff changeset
234 return literal(code_highlight(filenode.content,
505
5aba7adff196 little gui change for file source
Marcin Kuzminski <marcin@python-works.com>
parents: 494
diff changeset
235 filenode.lexer, CodeHtmlFormatter(**kwargs)))
165
ea893ffb7f00 implemented pygmentize codes into webhelpers. Together with color_dict caching into pylons globals
Marcin Kuzminski <marcin@python-works.com>
parents: 104
diff changeset
236
1171
2ab211e0aecd changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents: 1159
diff changeset
237 def pygmentize_annotation(repo_name, filenode, **kwargs):
899
d65843e07d3c Added message tooltip into journal revisions in push.
Marcin Kuzminski <marcin@python-works.com>
parents: 864
diff changeset
238 """pygmentize function for annotation
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1187
diff changeset
239
604
5cc96df705b9 fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
240 :param filenode:
165
ea893ffb7f00 implemented pygmentize codes into webhelpers. Together with color_dict caching into pylons globals
Marcin Kuzminski <marcin@python-works.com>
parents: 104
diff changeset
241 """
631
05528ad948c4 Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents: 604
diff changeset
242
438
0d4fceb91c9c fixes #24, added generator that generates equally distrybuted colors. Thus skipping creating one large coloring history.
Marcin Kuzminski <marcin@python-works.com>
parents: 428
diff changeset
243 color_dict = {}
947
99850ac883d1 Fixed whoosh daemon, for depracated walk method
Marcin Kuzminski <marcin@python-works.com>
parents: 946
diff changeset
244 def gen_color(n=10000):
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1187
diff changeset
245 """generator for getting n of evenly distributed colors using
947
99850ac883d1 Fixed whoosh daemon, for depracated walk method
Marcin Kuzminski <marcin@python-works.com>
parents: 946
diff changeset
246 hsv color and golden ratio. It always return same order of colors
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1187
diff changeset
247
947
99850ac883d1 Fixed whoosh daemon, for depracated walk method
Marcin Kuzminski <marcin@python-works.com>
parents: 946
diff changeset
248 :returns: RGB tuple
631
05528ad948c4 Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents: 604
diff changeset
249 """
438
0d4fceb91c9c fixes #24, added generator that generates equally distrybuted colors. Thus skipping creating one large coloring history.
Marcin Kuzminski <marcin@python-works.com>
parents: 428
diff changeset
250 import colorsys
0d4fceb91c9c fixes #24, added generator that generates equally distrybuted colors. Thus skipping creating one large coloring history.
Marcin Kuzminski <marcin@python-works.com>
parents: 428
diff changeset
251 golden_ratio = 0.618033988749895
0d4fceb91c9c fixes #24, added generator that generates equally distrybuted colors. Thus skipping creating one large coloring history.
Marcin Kuzminski <marcin@python-works.com>
parents: 428
diff changeset
252 h = 0.22717784590367374
947
99850ac883d1 Fixed whoosh daemon, for depracated walk method
Marcin Kuzminski <marcin@python-works.com>
parents: 946
diff changeset
253
1320
09c3fb460fcb Fixed problem with anchor link positioning when passed in ranges.
Marcin Kuzminski <marcin@python-works.com>
parents: 1312
diff changeset
254 for _ in xrange(n):
450
c3236d7febad fixed, empty cs bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 448
diff changeset
255 h += golden_ratio
438
0d4fceb91c9c fixes #24, added generator that generates equally distrybuted colors. Thus skipping creating one large coloring history.
Marcin Kuzminski <marcin@python-works.com>
parents: 428
diff changeset
256 h %= 1
0d4fceb91c9c fixes #24, added generator that generates equally distrybuted colors. Thus skipping creating one large coloring history.
Marcin Kuzminski <marcin@python-works.com>
parents: 428
diff changeset
257 HSV_tuple = [h, 0.95, 0.95]
0d4fceb91c9c fixes #24, added generator that generates equally distrybuted colors. Thus skipping creating one large coloring history.
Marcin Kuzminski <marcin@python-works.com>
parents: 428
diff changeset
258 RGB_tuple = colorsys.hsv_to_rgb(*HSV_tuple)
631
05528ad948c4 Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents: 604
diff changeset
259 yield map(lambda x:str(int(x * 256)), RGB_tuple)
438
0d4fceb91c9c fixes #24, added generator that generates equally distrybuted colors. Thus skipping creating one large coloring history.
Marcin Kuzminski <marcin@python-works.com>
parents: 428
diff changeset
260
0d4fceb91c9c fixes #24, added generator that generates equally distrybuted colors. Thus skipping creating one large coloring history.
Marcin Kuzminski <marcin@python-works.com>
parents: 428
diff changeset
261 cgenerator = gen_color()
631
05528ad948c4 Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents: 604
diff changeset
262
165
ea893ffb7f00 implemented pygmentize codes into webhelpers. Together with color_dict caching into pylons globals
Marcin Kuzminski <marcin@python-works.com>
parents: 104
diff changeset
263 def get_color_string(cs):
ea893ffb7f00 implemented pygmentize codes into webhelpers. Together with color_dict caching into pylons globals
Marcin Kuzminski <marcin@python-works.com>
parents: 104
diff changeset
264 if color_dict.has_key(cs):
ea893ffb7f00 implemented pygmentize codes into webhelpers. Together with color_dict caching into pylons globals
Marcin Kuzminski <marcin@python-works.com>
parents: 104
diff changeset
265 col = color_dict[cs]
ea893ffb7f00 implemented pygmentize codes into webhelpers. Together with color_dict caching into pylons globals
Marcin Kuzminski <marcin@python-works.com>
parents: 104
diff changeset
266 else:
438
0d4fceb91c9c fixes #24, added generator that generates equally distrybuted colors. Thus skipping creating one large coloring history.
Marcin Kuzminski <marcin@python-works.com>
parents: 428
diff changeset
267 col = color_dict[cs] = cgenerator.next()
0d4fceb91c9c fixes #24, added generator that generates equally distrybuted colors. Thus skipping creating one large coloring history.
Marcin Kuzminski <marcin@python-works.com>
parents: 428
diff changeset
268 return "color: rgb(%s)! important;" % (', '.join(col))
631
05528ad948c4 Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents: 604
diff changeset
269
1171
2ab211e0aecd changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents: 1159
diff changeset
270 def url_func(repo_name):
1352
79041f2d16f4 wrap_paragraph was to slow for toolip generation and was removed.
Marcin Kuzminski <marcin@python-works.com>
parents: 1342
diff changeset
271
1171
2ab211e0aecd changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents: 1159
diff changeset
272 def _url_func(changeset):
1352
79041f2d16f4 wrap_paragraph was to slow for toolip generation and was removed.
Marcin Kuzminski <marcin@python-works.com>
parents: 1342
diff changeset
273 author = changeset.author
79041f2d16f4 wrap_paragraph was to slow for toolip generation and was removed.
Marcin Kuzminski <marcin@python-works.com>
parents: 1342
diff changeset
274 date = changeset.date
79041f2d16f4 wrap_paragraph was to slow for toolip generation and was removed.
Marcin Kuzminski <marcin@python-works.com>
parents: 1342
diff changeset
275 message = tooltip(changeset.message)
631
05528ad948c4 Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents: 604
diff changeset
276
1352
79041f2d16f4 wrap_paragraph was to slow for toolip generation and was removed.
Marcin Kuzminski <marcin@python-works.com>
parents: 1342
diff changeset
277 tooltip_html = ("<div style='font-size:0.8em'><b>Author:</b>"
79041f2d16f4 wrap_paragraph was to slow for toolip generation and was removed.
Marcin Kuzminski <marcin@python-works.com>
parents: 1342
diff changeset
278 " %s<br/><b>Date:</b> %s</b><br/><b>Message:"
79041f2d16f4 wrap_paragraph was to slow for toolip generation and was removed.
Marcin Kuzminski <marcin@python-works.com>
parents: 1342
diff changeset
279 "</b> %s<br/></div>")
79041f2d16f4 wrap_paragraph was to slow for toolip generation and was removed.
Marcin Kuzminski <marcin@python-works.com>
parents: 1342
diff changeset
280
79041f2d16f4 wrap_paragraph was to slow for toolip generation and was removed.
Marcin Kuzminski <marcin@python-works.com>
parents: 1342
diff changeset
281 tooltip_html = tooltip_html % (author, date, message)
1171
2ab211e0aecd changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents: 1159
diff changeset
282 lnk_format = '%5s:%s' % ('r%s' % changeset.revision,
2ab211e0aecd changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents: 1159
diff changeset
283 short_id(changeset.raw_id))
2ab211e0aecd changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents: 1159
diff changeset
284 uri = link_to(
2ab211e0aecd changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents: 1159
diff changeset
285 lnk_format,
2ab211e0aecd changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents: 1159
diff changeset
286 url('changeset_home', repo_name=repo_name,
2ab211e0aecd changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents: 1159
diff changeset
287 revision=changeset.raw_id),
2ab211e0aecd changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents: 1159
diff changeset
288 style=get_color_string(changeset.raw_id),
2ab211e0aecd changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents: 1159
diff changeset
289 class_='tooltip',
2ab211e0aecd changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents: 1159
diff changeset
290 title=tooltip_html
2ab211e0aecd changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents: 1159
diff changeset
291 )
631
05528ad948c4 Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents: 604
diff changeset
292
1171
2ab211e0aecd changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents: 1159
diff changeset
293 uri += '\n'
2ab211e0aecd changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents: 1159
diff changeset
294 return uri
2ab211e0aecd changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents: 1159
diff changeset
295 return _url_func
2ab211e0aecd changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents: 1159
diff changeset
296
2ab211e0aecd changes for #56
Marcin Kuzminski <marcin@python-works.com>
parents: 1159
diff changeset
297 return literal(annotate_highlight(filenode, url_func(repo_name), **kwargs))
631
05528ad948c4 Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents: 604
diff changeset
298
450
c3236d7febad fixed, empty cs bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 448
diff changeset
299 def get_changeset_safe(repo, rev):
c3236d7febad fixed, empty cs bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 448
diff changeset
300 from vcs.backends.base import BaseRepository
c3236d7febad fixed, empty cs bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 448
diff changeset
301 from vcs.exceptions import RepositoryError
c3236d7febad fixed, empty cs bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 448
diff changeset
302 if not isinstance(repo, BaseRepository):
c3236d7febad fixed, empty cs bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 448
diff changeset
303 raise Exception('You must pass an Repository '
c3236d7febad fixed, empty cs bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 448
diff changeset
304 'object as first argument got %s', type(repo))
631
05528ad948c4 Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents: 604
diff changeset
305
450
c3236d7febad fixed, empty cs bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 448
diff changeset
306 try:
c3236d7febad fixed, empty cs bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 448
diff changeset
307 cs = repo.get_changeset(rev)
c3236d7febad fixed, empty cs bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 448
diff changeset
308 except RepositoryError:
547
1e757ac98988 renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents: 512
diff changeset
309 from rhodecode.lib.utils import EmptyChangeset
450
c3236d7febad fixed, empty cs bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 448
diff changeset
310 cs = EmptyChangeset()
c3236d7febad fixed, empty cs bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 448
diff changeset
311 return cs
c3236d7febad fixed, empty cs bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 448
diff changeset
312
c3236d7febad fixed, empty cs bug.
Marcin Kuzminski <marcin@python-works.com>
parents: 448
diff changeset
313
999
1951c35483ab fixed following js snipet. It' can be called multiple times now next to each repository
Marcin Kuzminski <marcin@python-works.com>
parents: 995
diff changeset
314 def is_following_repo(repo_name, user_id):
1951c35483ab fixed following js snipet. It' can be called multiple times now next to each repository
Marcin Kuzminski <marcin@python-works.com>
parents: 995
diff changeset
315 from rhodecode.model.scm import ScmModel
1951c35483ab fixed following js snipet. It' can be called multiple times now next to each repository
Marcin Kuzminski <marcin@python-works.com>
parents: 995
diff changeset
316 return ScmModel().is_following_repo(repo_name, user_id)
1951c35483ab fixed following js snipet. It' can be called multiple times now next to each repository
Marcin Kuzminski <marcin@python-works.com>
parents: 995
diff changeset
317
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
318 flash = _Flash()
282
237470e64bb8 switched filters into webhelpers for easy of usage.
Marcin Kuzminski <marcin@python-works.com>
parents: 281
diff changeset
319
635
fd63782c4426 Fixed age, for new vcs implementation. Removed all obsolete date formatters
Marcin Kuzminski <marcin@python-works.com>
parents: 631
diff changeset
320 #==============================================================================
1356
eec4defdf2b8 Make rhodecode use author/username filter from vcs instead of mercurial
Marcin Kuzminski <marcin@python-works.com>
parents: 1352
diff changeset
321 # SCM FILTERS available via h.
635
fd63782c4426 Fixed age, for new vcs implementation. Removed all obsolete date formatters
Marcin Kuzminski <marcin@python-works.com>
parents: 631
diff changeset
322 #==============================================================================
1356
eec4defdf2b8 Make rhodecode use author/username filter from vcs instead of mercurial
Marcin Kuzminski <marcin@python-works.com>
parents: 1352
diff changeset
323 from vcs.utils import author_name, author_email
1342
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
324 from rhodecode.lib import credentials_hidder, age as _age
282
237470e64bb8 switched filters into webhelpers for easy of usage.
Marcin Kuzminski <marcin@python-works.com>
parents: 281
diff changeset
325
635
fd63782c4426 Fixed age, for new vcs implementation. Removed all obsolete date formatters
Marcin Kuzminski <marcin@python-works.com>
parents: 631
diff changeset
326 age = lambda x:_age(x)
282
237470e64bb8 switched filters into webhelpers for easy of usage.
Marcin Kuzminski <marcin@python-works.com>
parents: 281
diff changeset
327 capitalize = lambda x: x.capitalize()
1356
eec4defdf2b8 Make rhodecode use author/username filter from vcs instead of mercurial
Marcin Kuzminski <marcin@python-works.com>
parents: 1352
diff changeset
328 email = author_email
eec4defdf2b8 Make rhodecode use author/username filter from vcs instead of mercurial
Marcin Kuzminski <marcin@python-works.com>
parents: 1352
diff changeset
329 email_or_none = lambda x: email(x) if email(x) != x else None
eec4defdf2b8 Make rhodecode use author/username filter from vcs instead of mercurial
Marcin Kuzminski <marcin@python-works.com>
parents: 1352
diff changeset
330 person = lambda x: author_name(x)
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 635
diff changeset
331 short_id = lambda x: x[:12]
1342
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
332 hide_credentials = lambda x: ''.join(credentials_hidder(x))
660
df61378032f3 #48 rewrote action logger, translated action logger messages, added some extra messages. Linked and showed pushed revisions in logs
Marcin Kuzminski <marcin@python-works.com>
parents: 653
diff changeset
333
712
131c1e335fa7 Added ldap info on admin users, added bool2icon helper for nicer representation of
Marcin Kuzminski <marcin@python-works.com>
parents: 698
diff changeset
334 def bool2icon(value):
899
d65843e07d3c Added message tooltip into journal revisions in push.
Marcin Kuzminski <marcin@python-works.com>
parents: 864
diff changeset
335 """Returns True/False values represented as small html image of true/false
712
131c1e335fa7 Added ldap info on admin users, added bool2icon helper for nicer representation of
Marcin Kuzminski <marcin@python-works.com>
parents: 698
diff changeset
336 icons
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1187
diff changeset
337
712
131c1e335fa7 Added ldap info on admin users, added bool2icon helper for nicer representation of
Marcin Kuzminski <marcin@python-works.com>
parents: 698
diff changeset
338 :param value: bool value
131c1e335fa7 Added ldap info on admin users, added bool2icon helper for nicer representation of
Marcin Kuzminski <marcin@python-works.com>
parents: 698
diff changeset
339 """
131c1e335fa7 Added ldap info on admin users, added bool2icon helper for nicer representation of
Marcin Kuzminski <marcin@python-works.com>
parents: 698
diff changeset
340
131c1e335fa7 Added ldap info on admin users, added bool2icon helper for nicer representation of
Marcin Kuzminski <marcin@python-works.com>
parents: 698
diff changeset
341 if value is True:
1050
cabe887a9829 removed obsolete _static flag from url, and fixed urls in webhelpers
Marcin Kuzminski <marcin@python-works.com>
parents: 1045
diff changeset
342 return HTML.tag('img', src=url("/images/icons/accept.png"),
cabe887a9829 removed obsolete _static flag from url, and fixed urls in webhelpers
Marcin Kuzminski <marcin@python-works.com>
parents: 1045
diff changeset
343 alt=_('True'))
712
131c1e335fa7 Added ldap info on admin users, added bool2icon helper for nicer representation of
Marcin Kuzminski <marcin@python-works.com>
parents: 698
diff changeset
344
131c1e335fa7 Added ldap info on admin users, added bool2icon helper for nicer representation of
Marcin Kuzminski <marcin@python-works.com>
parents: 698
diff changeset
345 if value is False:
1050
cabe887a9829 removed obsolete _static flag from url, and fixed urls in webhelpers
Marcin Kuzminski <marcin@python-works.com>
parents: 1045
diff changeset
346 return HTML.tag('img', src=url("/images/icons/cancel.png"),
cabe887a9829 removed obsolete _static flag from url, and fixed urls in webhelpers
Marcin Kuzminski <marcin@python-works.com>
parents: 1045
diff changeset
347 alt=_('False'))
712
131c1e335fa7 Added ldap info on admin users, added bool2icon helper for nicer representation of
Marcin Kuzminski <marcin@python-works.com>
parents: 698
diff changeset
348
131c1e335fa7 Added ldap info on admin users, added bool2icon helper for nicer representation of
Marcin Kuzminski <marcin@python-works.com>
parents: 698
diff changeset
349 return value
131c1e335fa7 Added ldap info on admin users, added bool2icon helper for nicer representation of
Marcin Kuzminski <marcin@python-works.com>
parents: 698
diff changeset
350
131c1e335fa7 Added ldap info on admin users, added bool2icon helper for nicer representation of
Marcin Kuzminski <marcin@python-works.com>
parents: 698
diff changeset
351
1087
51076a2a2b64 fixed unicode problems with file paths.
Marcin Kuzminski <marcin@python-works.com>
parents: 1055
diff changeset
352 def action_parser(user_log, feed=False):
51076a2a2b64 fixed unicode problems with file paths.
Marcin Kuzminski <marcin@python-works.com>
parents: 1055
diff changeset
353 """This helper will action_map the specified string action into translated
660
df61378032f3 #48 rewrote action logger, translated action logger messages, added some extra messages. Linked and showed pushed revisions in logs
Marcin Kuzminski <marcin@python-works.com>
parents: 653
diff changeset
354 fancy names with icons and links
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1187
diff changeset
355
899
d65843e07d3c Added message tooltip into journal revisions in push.
Marcin Kuzminski <marcin@python-works.com>
parents: 864
diff changeset
356 :param user_log: user log instance
1087
51076a2a2b64 fixed unicode problems with file paths.
Marcin Kuzminski <marcin@python-works.com>
parents: 1055
diff changeset
357 :param feed: use output for feeds (no html and fancy icons)
660
df61378032f3 #48 rewrote action logger, translated action logger messages, added some extra messages. Linked and showed pushed revisions in logs
Marcin Kuzminski <marcin@python-works.com>
parents: 653
diff changeset
358 """
899
d65843e07d3c Added message tooltip into journal revisions in push.
Marcin Kuzminski <marcin@python-works.com>
parents: 864
diff changeset
359
660
df61378032f3 #48 rewrote action logger, translated action logger messages, added some extra messages. Linked and showed pushed revisions in logs
Marcin Kuzminski <marcin@python-works.com>
parents: 653
diff changeset
360 action = user_log.action
840
ee6f345736a6 action logger upgrade, for working with migrations
Marcin Kuzminski <marcin@python-works.com>
parents: 817
diff changeset
361 action_params = ' '
660
df61378032f3 #48 rewrote action logger, translated action logger messages, added some extra messages. Linked and showed pushed revisions in logs
Marcin Kuzminski <marcin@python-works.com>
parents: 653
diff changeset
362
df61378032f3 #48 rewrote action logger, translated action logger messages, added some extra messages. Linked and showed pushed revisions in logs
Marcin Kuzminski <marcin@python-works.com>
parents: 653
diff changeset
363 x = action.split(':')
df61378032f3 #48 rewrote action logger, translated action logger messages, added some extra messages. Linked and showed pushed revisions in logs
Marcin Kuzminski <marcin@python-works.com>
parents: 653
diff changeset
364
df61378032f3 #48 rewrote action logger, translated action logger messages, added some extra messages. Linked and showed pushed revisions in logs
Marcin Kuzminski <marcin@python-works.com>
parents: 653
diff changeset
365 if len(x) > 1:
df61378032f3 #48 rewrote action logger, translated action logger messages, added some extra messages. Linked and showed pushed revisions in logs
Marcin Kuzminski <marcin@python-works.com>
parents: 653
diff changeset
366 action, action_params = x
df61378032f3 #48 rewrote action logger, translated action logger messages, added some extra messages. Linked and showed pushed revisions in logs
Marcin Kuzminski <marcin@python-works.com>
parents: 653
diff changeset
367
718
7df3855bf6c7 Added fork name to journal
Marcin Kuzminski <marcin@python-works.com>
parents: 714
diff changeset
368 def get_cs_links():
953
def3578dac8c fixed vcs import.
Marcin Kuzminski <marcin@python-works.com>
parents: 947
diff changeset
369 revs_limit = 5 #display this amount always
def3578dac8c fixed vcs import.
Marcin Kuzminski <marcin@python-works.com>
parents: 947
diff changeset
370 revs_top_limit = 50 #show upto this amount of changesets hidden
def3578dac8c fixed vcs import.
Marcin Kuzminski <marcin@python-works.com>
parents: 947
diff changeset
371 revs = action_params.split(',')
def3578dac8c fixed vcs import.
Marcin Kuzminski <marcin@python-works.com>
parents: 947
diff changeset
372 repo_name = user_log.repository.repo_name
1045
3fc9183e05dd another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents: 1041
diff changeset
373
953
def3578dac8c fixed vcs import.
Marcin Kuzminski <marcin@python-works.com>
parents: 947
diff changeset
374 from rhodecode.model.scm import ScmModel
1366
9c0f5d558789 fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents: 1359
diff changeset
375 repo = user_log.repository.scm_instance
1045
3fc9183e05dd another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents: 1041
diff changeset
376
1040
8e49b6ceffe1 fixes fixes fixes ! optimized queries on journal
Marcin Kuzminski <marcin@python-works.com>
parents: 1038
diff changeset
377 message = lambda rev: get_changeset_safe(repo, rev).message
1359
54fc83f2192c Removed all string concat for exchange of ''.join()
Marcin Kuzminski <marcin@python-works.com>
parents: 1356
diff changeset
378 cs_links = []
54fc83f2192c Removed all string concat for exchange of ''.join()
Marcin Kuzminski <marcin@python-works.com>
parents: 1356
diff changeset
379 cs_links.append(" " + ', '.join ([link_to(rev,
953
def3578dac8c fixed vcs import.
Marcin Kuzminski <marcin@python-works.com>
parents: 947
diff changeset
380 url('changeset_home',
def3578dac8c fixed vcs import.
Marcin Kuzminski <marcin@python-works.com>
parents: 947
diff changeset
381 repo_name=repo_name,
def3578dac8c fixed vcs import.
Marcin Kuzminski <marcin@python-works.com>
parents: 947
diff changeset
382 revision=rev), title=tooltip(message(rev)),
1359
54fc83f2192c Removed all string concat for exchange of ''.join()
Marcin Kuzminski <marcin@python-works.com>
parents: 1356
diff changeset
383 class_='tooltip') for rev in revs[:revs_limit] ]))
1009
eafe5ae429ea Added compare view into journal, fixed wrong function call to show compare view
Marcin Kuzminski <marcin@python-works.com>
parents: 999
diff changeset
384
eafe5ae429ea Added compare view into journal, fixed wrong function call to show compare view
Marcin Kuzminski <marcin@python-works.com>
parents: 999
diff changeset
385 compare_view = (' <div class="compare_view tooltip" title="%s">'
eafe5ae429ea Added compare view into journal, fixed wrong function call to show compare view
Marcin Kuzminski <marcin@python-works.com>
parents: 999
diff changeset
386 '<a href="%s">%s</a> '
eafe5ae429ea Added compare view into journal, fixed wrong function call to show compare view
Marcin Kuzminski <marcin@python-works.com>
parents: 999
diff changeset
387 '</div>' % (_('Show all combined changesets %s->%s' \
eafe5ae429ea Added compare view into journal, fixed wrong function call to show compare view
Marcin Kuzminski <marcin@python-works.com>
parents: 999
diff changeset
388 % (revs[0], revs[-1])),
eafe5ae429ea Added compare view into journal, fixed wrong function call to show compare view
Marcin Kuzminski <marcin@python-works.com>
parents: 999
diff changeset
389 url('changeset_home', repo_name=repo_name,
eafe5ae429ea Added compare view into journal, fixed wrong function call to show compare view
Marcin Kuzminski <marcin@python-works.com>
parents: 999
diff changeset
390 revision='%s...%s' % (revs[0], revs[-1])
eafe5ae429ea Added compare view into journal, fixed wrong function call to show compare view
Marcin Kuzminski <marcin@python-works.com>
parents: 999
diff changeset
391 ),
eafe5ae429ea Added compare view into journal, fixed wrong function call to show compare view
Marcin Kuzminski <marcin@python-works.com>
parents: 999
diff changeset
392 _('compare view'))
eafe5ae429ea Added compare view into journal, fixed wrong function call to show compare view
Marcin Kuzminski <marcin@python-works.com>
parents: 999
diff changeset
393 )
eafe5ae429ea Added compare view into journal, fixed wrong function call to show compare view
Marcin Kuzminski <marcin@python-works.com>
parents: 999
diff changeset
394
953
def3578dac8c fixed vcs import.
Marcin Kuzminski <marcin@python-works.com>
parents: 947
diff changeset
395 if len(revs) > revs_limit:
def3578dac8c fixed vcs import.
Marcin Kuzminski <marcin@python-works.com>
parents: 947
diff changeset
396 uniq_id = revs[0]
def3578dac8c fixed vcs import.
Marcin Kuzminski <marcin@python-works.com>
parents: 947
diff changeset
397 html_tmpl = ('<span> %s '
995
d14723711d17 fixes for journal, added paging now it's possible to view whole journal
Marcin Kuzminski <marcin@python-works.com>
parents: 990
diff changeset
398 '<a class="show_more" id="_%s" href="#more">%s</a> '
953
def3578dac8c fixed vcs import.
Marcin Kuzminski <marcin@python-works.com>
parents: 947
diff changeset
399 '%s</span>')
1087
51076a2a2b64 fixed unicode problems with file paths.
Marcin Kuzminski <marcin@python-works.com>
parents: 1055
diff changeset
400 if not feed:
1359
54fc83f2192c Removed all string concat for exchange of ''.join()
Marcin Kuzminski <marcin@python-works.com>
parents: 1356
diff changeset
401 cs_links.append(html_tmpl % (_('and'), uniq_id, _('%s more') \
953
def3578dac8c fixed vcs import.
Marcin Kuzminski <marcin@python-works.com>
parents: 947
diff changeset
402 % (len(revs) - revs_limit),
1359
54fc83f2192c Removed all string concat for exchange of ''.join()
Marcin Kuzminski <marcin@python-works.com>
parents: 1356
diff changeset
403 _('revisions')))
808
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
404
1087
51076a2a2b64 fixed unicode problems with file paths.
Marcin Kuzminski <marcin@python-works.com>
parents: 1055
diff changeset
405 if not feed:
51076a2a2b64 fixed unicode problems with file paths.
Marcin Kuzminski <marcin@python-works.com>
parents: 1055
diff changeset
406 html_tmpl = '<span id="%s" style="display:none"> %s </span>'
51076a2a2b64 fixed unicode problems with file paths.
Marcin Kuzminski <marcin@python-works.com>
parents: 1055
diff changeset
407 else:
51076a2a2b64 fixed unicode problems with file paths.
Marcin Kuzminski <marcin@python-works.com>
parents: 1055
diff changeset
408 html_tmpl = '<span id="%s"> %s </span>'
51076a2a2b64 fixed unicode problems with file paths.
Marcin Kuzminski <marcin@python-works.com>
parents: 1055
diff changeset
409
1359
54fc83f2192c Removed all string concat for exchange of ''.join()
Marcin Kuzminski <marcin@python-works.com>
parents: 1356
diff changeset
410 cs_links.append(html_tmpl % (uniq_id, ', '.join([link_to(rev,
953
def3578dac8c fixed vcs import.
Marcin Kuzminski <marcin@python-works.com>
parents: 947
diff changeset
411 url('changeset_home',
def3578dac8c fixed vcs import.
Marcin Kuzminski <marcin@python-works.com>
parents: 947
diff changeset
412 repo_name=repo_name, revision=rev),
def3578dac8c fixed vcs import.
Marcin Kuzminski <marcin@python-works.com>
parents: 947
diff changeset
413 title=message(rev), class_='tooltip')
1359
54fc83f2192c Removed all string concat for exchange of ''.join()
Marcin Kuzminski <marcin@python-works.com>
parents: 1356
diff changeset
414 for rev in revs[revs_limit:revs_top_limit]])))
1024
22c147726ea6 hidden compare view link for single revision push
Marcin Kuzminski <marcin@python-works.com>
parents: 1022
diff changeset
415 if len(revs) > 1:
1359
54fc83f2192c Removed all string concat for exchange of ''.join()
Marcin Kuzminski <marcin@python-works.com>
parents: 1356
diff changeset
416 cs_links.append(compare_view)
54fc83f2192c Removed all string concat for exchange of ''.join()
Marcin Kuzminski <marcin@python-works.com>
parents: 1356
diff changeset
417 return ''.join(cs_links)
734
49eb69d78988 implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents: 718
diff changeset
418
718
7df3855bf6c7 Added fork name to journal
Marcin Kuzminski <marcin@python-works.com>
parents: 714
diff changeset
419 def get_fork_name():
953
def3578dac8c fixed vcs import.
Marcin Kuzminski <marcin@python-works.com>
parents: 947
diff changeset
420 repo_name = action_params
1055
903aadbf9047 updated changelog, small fix for journal
Marcin Kuzminski <marcin@python-works.com>
parents: 1053
diff changeset
421 return _('fork name ') + str(link_to(action_params, url('summary_home',
1045
3fc9183e05dd another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents: 1041
diff changeset
422 repo_name=repo_name,)))
953
def3578dac8c fixed vcs import.
Marcin Kuzminski <marcin@python-works.com>
parents: 947
diff changeset
423
1087
51076a2a2b64 fixed unicode problems with file paths.
Marcin Kuzminski <marcin@python-works.com>
parents: 1055
diff changeset
424 action_map = {'user_deleted_repo':(_('[deleted] repository'), None),
1041
98be43b888c4 Updated new Journal with users and dates aggregates
Marcin Kuzminski <marcin@python-works.com>
parents: 1040
diff changeset
425 'user_created_repo':(_('[created] repository'), None),
1055
903aadbf9047 updated changelog, small fix for journal
Marcin Kuzminski <marcin@python-works.com>
parents: 1053
diff changeset
426 'user_forked_repo':(_('[forked] repository'), get_fork_name),
1041
98be43b888c4 Updated new Journal with users and dates aggregates
Marcin Kuzminski <marcin@python-works.com>
parents: 1040
diff changeset
427 'user_updated_repo':(_('[updated] repository'), None),
98be43b888c4 Updated new Journal with users and dates aggregates
Marcin Kuzminski <marcin@python-works.com>
parents: 1040
diff changeset
428 'admin_deleted_repo':(_('[delete] repository'), None),
98be43b888c4 Updated new Journal with users and dates aggregates
Marcin Kuzminski <marcin@python-works.com>
parents: 1040
diff changeset
429 'admin_created_repo':(_('[created] repository'), None),
98be43b888c4 Updated new Journal with users and dates aggregates
Marcin Kuzminski <marcin@python-works.com>
parents: 1040
diff changeset
430 'admin_forked_repo':(_('[forked] repository'), None),
98be43b888c4 Updated new Journal with users and dates aggregates
Marcin Kuzminski <marcin@python-works.com>
parents: 1040
diff changeset
431 'admin_updated_repo':(_('[updated] repository'), None),
1052
c96651aebd8a fixed journal look & feel
Marcin Kuzminski <marcin@python-works.com>
parents: 1050
diff changeset
432 'push':(_('[pushed] into'), get_cs_links),
1312
70a5a9a57864 logged local commit with special action via action_logger,
Marcin Kuzminski <marcin@python-works.com>
parents: 1259
diff changeset
433 'push_local':(_('[committed via RhodeCode] into'), get_cs_links),
1114
4de3fa6290a7 #109, added manual pull of changes for repositories that have remote location filled in.
Marcin Kuzminski <marcin@python-works.com>
parents: 1105
diff changeset
434 'push_remote':(_('[pulled from remote] into'), get_cs_links),
1053
aa01004399a5 typo fix for journal action
Marcin Kuzminski <marcin@python-works.com>
parents: 1052
diff changeset
435 'pull':(_('[pulled] from'), None),
1041
98be43b888c4 Updated new Journal with users and dates aggregates
Marcin Kuzminski <marcin@python-works.com>
parents: 1040
diff changeset
436 'started_following_repo':(_('[started following] repository'), None),
98be43b888c4 Updated new Journal with users and dates aggregates
Marcin Kuzminski <marcin@python-works.com>
parents: 1040
diff changeset
437 'stopped_following_repo':(_('[stopped following] repository'), None),
735
dbec976d9975 added action loggers to following repositories,
Marcin Kuzminski <marcin@python-works.com>
parents: 734
diff changeset
438 }
660
df61378032f3 #48 rewrote action logger, translated action logger messages, added some extra messages. Linked and showed pushed revisions in logs
Marcin Kuzminski <marcin@python-works.com>
parents: 653
diff changeset
439
1087
51076a2a2b64 fixed unicode problems with file paths.
Marcin Kuzminski <marcin@python-works.com>
parents: 1055
diff changeset
440 action_str = action_map.get(action, action)
51076a2a2b64 fixed unicode problems with file paths.
Marcin Kuzminski <marcin@python-works.com>
parents: 1055
diff changeset
441 if feed:
51076a2a2b64 fixed unicode problems with file paths.
Marcin Kuzminski <marcin@python-works.com>
parents: 1055
diff changeset
442 action = action_str[0].replace('[', '').replace(']', '')
51076a2a2b64 fixed unicode problems with file paths.
Marcin Kuzminski <marcin@python-works.com>
parents: 1055
diff changeset
443 else:
51076a2a2b64 fixed unicode problems with file paths.
Marcin Kuzminski <marcin@python-works.com>
parents: 1055
diff changeset
444 action = action_str[0].replace('[', '<span class="journal_highlight">')\
953
def3578dac8c fixed vcs import.
Marcin Kuzminski <marcin@python-works.com>
parents: 947
diff changeset
445 .replace(']', '</span>')
1114
4de3fa6290a7 #109, added manual pull of changes for repositories that have remote location filled in.
Marcin Kuzminski <marcin@python-works.com>
parents: 1105
diff changeset
446
1052
c96651aebd8a fixed journal look & feel
Marcin Kuzminski <marcin@python-works.com>
parents: 1050
diff changeset
447 action_params_func = lambda :""
c96651aebd8a fixed journal look & feel
Marcin Kuzminski <marcin@python-works.com>
parents: 1050
diff changeset
448
1114
4de3fa6290a7 #109, added manual pull of changes for repositories that have remote location filled in.
Marcin Kuzminski <marcin@python-works.com>
parents: 1105
diff changeset
449 if callable(action_str[1]):
1052
c96651aebd8a fixed journal look & feel
Marcin Kuzminski <marcin@python-works.com>
parents: 1050
diff changeset
450 action_params_func = action_str[1]
953
def3578dac8c fixed vcs import.
Marcin Kuzminski <marcin@python-works.com>
parents: 947
diff changeset
451
1052
c96651aebd8a fixed journal look & feel
Marcin Kuzminski <marcin@python-works.com>
parents: 1050
diff changeset
452 return [literal(action), action_params_func]
808
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
453
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
454 def action_parser_icon(user_log):
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
455 action = user_log.action
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
456 action_params = None
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
457 x = action.split(':')
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
458
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
459 if len(x) > 1:
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
460 action, action_params = x
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
461
1114
4de3fa6290a7 #109, added manual pull of changes for repositories that have remote location filled in.
Marcin Kuzminski <marcin@python-works.com>
parents: 1105
diff changeset
462 tmpl = """<img src="%s%s" alt="%s"/>"""
808
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
463 map = {'user_deleted_repo':'database_delete.png',
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
464 'user_created_repo':'database_add.png',
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
465 'user_forked_repo':'arrow_divide.png',
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
466 'user_updated_repo':'database_edit.png',
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
467 'admin_deleted_repo':'database_delete.png',
899
d65843e07d3c Added message tooltip into journal revisions in push.
Marcin Kuzminski <marcin@python-works.com>
parents: 864
diff changeset
468 'admin_created_repo':'database_add.png',
808
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
469 'admin_forked_repo':'arrow_divide.png',
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
470 'admin_updated_repo':'database_edit.png',
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
471 'push':'script_add.png',
1312
70a5a9a57864 logged local commit with special action via action_logger,
Marcin Kuzminski <marcin@python-works.com>
parents: 1259
diff changeset
472 'push_local':'script_edit.png',
1114
4de3fa6290a7 #109, added manual pull of changes for repositories that have remote location filled in.
Marcin Kuzminski <marcin@python-works.com>
parents: 1105
diff changeset
473 'push_remote':'connect.png',
808
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
474 'pull':'down_16.png',
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
475 'started_following_repo':'heart_add.png',
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
476 'stopped_following_repo':'heart_delete.png',
1af15d66838f added icons to journal, extend show more to actually show more pushed revisions,
Marcin Kuzminski <marcin@python-works.com>
parents: 790
diff changeset
477 }
1050
cabe887a9829 removed obsolete _static flag from url, and fixed urls in webhelpers
Marcin Kuzminski <marcin@python-works.com>
parents: 1045
diff changeset
478 return literal(tmpl % ((url('/images/icons/')),
cabe887a9829 removed obsolete _static flag from url, and fixed urls in webhelpers
Marcin Kuzminski <marcin@python-works.com>
parents: 1045
diff changeset
479 map.get(action, action), action))
660
df61378032f3 #48 rewrote action logger, translated action logger messages, added some extra messages. Linked and showed pushed revisions in logs
Marcin Kuzminski <marcin@python-works.com>
parents: 653
diff changeset
480
df61378032f3 #48 rewrote action logger, translated action logger messages, added some extra messages. Linked and showed pushed revisions in logs
Marcin Kuzminski <marcin@python-works.com>
parents: 653
diff changeset
481
635
fd63782c4426 Fixed age, for new vcs implementation. Removed all obsolete date formatters
Marcin Kuzminski <marcin@python-works.com>
parents: 631
diff changeset
482 #==============================================================================
307
504feff57b49 added permission functions to webhelpers, updated dbmanage permissions
Marcin Kuzminski <marcin@python-works.com>
parents: 293
diff changeset
483 # PERMS
635
fd63782c4426 Fixed age, for new vcs implementation. Removed all obsolete date formatters
Marcin Kuzminski <marcin@python-works.com>
parents: 631
diff changeset
484 #==============================================================================
547
1e757ac98988 renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents: 512
diff changeset
485 from rhodecode.lib.auth import HasPermissionAny, HasPermissionAll, \
307
504feff57b49 added permission functions to webhelpers, updated dbmanage permissions
Marcin Kuzminski <marcin@python-works.com>
parents: 293
diff changeset
486 HasRepoPermissionAny, HasRepoPermissionAll
282
237470e64bb8 switched filters into webhelpers for easy of usage.
Marcin Kuzminski <marcin@python-works.com>
parents: 281
diff changeset
487
635
fd63782c4426 Fixed age, for new vcs implementation. Removed all obsolete date formatters
Marcin Kuzminski <marcin@python-works.com>
parents: 631
diff changeset
488 #==============================================================================
398
8c50b164fb58 Implemented basic gravatar support on admin pages only for now
Marcin Kuzminski <marcin@python-works.com>
parents: 307
diff changeset
489 # GRAVATAR URL
635
fd63782c4426 Fixed age, for new vcs implementation. Removed all obsolete date formatters
Marcin Kuzminski <marcin@python-works.com>
parents: 631
diff changeset
490 #==============================================================================
282
237470e64bb8 switched filters into webhelpers for easy of usage.
Marcin Kuzminski <marcin@python-works.com>
parents: 281
diff changeset
491
401
b1debb6c5a09 implemented gravatars to changesets, updated styling for changesets
Marcin Kuzminski <marcin@python-works.com>
parents: 400
diff changeset
492 def gravatar_url(email_address, size=30):
1330
c33842b1bd38 Anonymous user shouldn't use gravatar, changed gravatar into regular hosted image.
Marcin Kuzminski <marcin@python-works.com>
parents: 1320
diff changeset
493 if not str2bool(config['app_conf'].get('use_gravatar')) or \
c33842b1bd38 Anonymous user shouldn't use gravatar, changed gravatar into regular hosted image.
Marcin Kuzminski <marcin@python-works.com>
parents: 1320
diff changeset
494 email_address == 'anonymous@rhodecode.org':
1110
5351a3a32381 #21 added optional flag to disable gravatar, and use local icon
Marcin Kuzminski <marcin@python-works.com>
parents: 1105
diff changeset
495 return "/images/user%s.png" % size
5351a3a32381 #21 added optional flag to disable gravatar, and use local icon
Marcin Kuzminski <marcin@python-works.com>
parents: 1105
diff changeset
496
946
f12cd4707301 patched gravatar url generation to properly support new https force flag from settings.
Marcin Kuzminski <marcin@python-works.com>
parents: 911
diff changeset
497 ssl_enabled = 'https' == request.environ.get('wsgi.url_scheme')
398
8c50b164fb58 Implemented basic gravatar support on admin pages only for now
Marcin Kuzminski <marcin@python-works.com>
parents: 307
diff changeset
498 default = 'identicon'
8c50b164fb58 Implemented basic gravatar support on admin pages only for now
Marcin Kuzminski <marcin@python-works.com>
parents: 307
diff changeset
499 baseurl_nossl = "http://www.gravatar.com/avatar/"
8c50b164fb58 Implemented basic gravatar support on admin pages only for now
Marcin Kuzminski <marcin@python-works.com>
parents: 307
diff changeset
500 baseurl_ssl = "https://secure.gravatar.com/avatar/"
8c50b164fb58 Implemented basic gravatar support on admin pages only for now
Marcin Kuzminski <marcin@python-works.com>
parents: 307
diff changeset
501 baseurl = baseurl_ssl if ssl_enabled else baseurl_nossl
631
05528ad948c4 Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents: 604
diff changeset
502
1101
c1080b42a7cb fixed problem with int. chars in gravatars
Marcin Kuzminski <marcin@python-works.com>
parents: 1100
diff changeset
503 if isinstance(email_address, unicode):
c1080b42a7cb fixed problem with int. chars in gravatars
Marcin Kuzminski <marcin@python-works.com>
parents: 1100
diff changeset
504 #hashlib crashes on unicode items
c1080b42a7cb fixed problem with int. chars in gravatars
Marcin Kuzminski <marcin@python-works.com>
parents: 1100
diff changeset
505 email_address = email_address.encode('utf8', 'replace')
398
8c50b164fb58 Implemented basic gravatar support on admin pages only for now
Marcin Kuzminski <marcin@python-works.com>
parents: 307
diff changeset
506 # construct the url
401
b1debb6c5a09 implemented gravatars to changesets, updated styling for changesets
Marcin Kuzminski <marcin@python-works.com>
parents: 400
diff changeset
507 gravatar_url = baseurl + hashlib.md5(email_address.lower()).hexdigest() + "?"
398
8c50b164fb58 Implemented basic gravatar support on admin pages only for now
Marcin Kuzminski <marcin@python-works.com>
parents: 307
diff changeset
508 gravatar_url += urllib.urlencode({'d':default, 's':str(size)})
8c50b164fb58 Implemented basic gravatar support on admin pages only for now
Marcin Kuzminski <marcin@python-works.com>
parents: 307
diff changeset
509
8c50b164fb58 Implemented basic gravatar support on admin pages only for now
Marcin Kuzminski <marcin@python-works.com>
parents: 307
diff changeset
510 return gravatar_url
443
e5157e2a530e added safe unicode funtion, and implemented it in whoosh indexer
Marcin Kuzminski <marcin@python-works.com>
parents: 438
diff changeset
511
1098
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
512
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
513 #==============================================================================
1342
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
514 # REPO PAGER, PAGER FOR REPOSITORY
1098
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
515 #==============================================================================
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
516 class RepoPage(Page):
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
517
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
518 def __init__(self, collection, page=1, items_per_page=20,
1105
61c5f0ab24b9 Added branch filter to repo pager
Marcin Kuzminski <marcin@python-works.com>
parents: 1101
diff changeset
519 item_count=None, url=None, branch_name=None, **kwargs):
1098
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
520
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
521 """Create a "RepoPage" instance. special pager for paging
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
522 repository
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
523 """
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
524 self._url_generator = url
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
525
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
526 # Safe the kwargs class-wide so they can be used in the pager() method
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
527 self.kwargs = kwargs
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
528
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
529 # Save a reference to the collection
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
530 self.original_collection = collection
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
531
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
532 self.collection = collection
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
533
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
534 # The self.page is the number of the current page.
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
535 # The first page has the number 1!
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
536 try:
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
537 self.page = int(page) # make it int() if we get it as a string
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
538 except (ValueError, TypeError):
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
539 self.page = 1
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
540
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
541 self.items_per_page = items_per_page
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
542
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
543 # Unless the user tells us how many items the collections has
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
544 # we calculate that ourselves.
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
545 if item_count is not None:
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
546 self.item_count = item_count
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
547 else:
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
548 self.item_count = len(self.collection)
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
549
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
550 # Compute the number of the first and last available page
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
551 if self.item_count > 0:
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
552 self.first_page = 1
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
553 self.page_count = ((self.item_count - 1) / self.items_per_page) + 1
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
554 self.last_page = self.first_page + self.page_count - 1
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
555
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
556 # Make sure that the requested page number is the range of valid pages
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
557 if self.page > self.last_page:
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
558 self.page = self.last_page
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
559 elif self.page < self.first_page:
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
560 self.page = self.first_page
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
561
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
562 # Note: the number of items on this page can be less than
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
563 # items_per_page if the last page is not full
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
564 self.first_item = max(0, (self.item_count) - (self.page * items_per_page))
1105
61c5f0ab24b9 Added branch filter to repo pager
Marcin Kuzminski <marcin@python-works.com>
parents: 1101
diff changeset
565 self.last_item = ((self.item_count - 1) - items_per_page * (self.page - 1))
1098
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
566
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
567 iterator = self.collection.get_changesets(start=self.first_item,
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
568 end=self.last_item,
1105
61c5f0ab24b9 Added branch filter to repo pager
Marcin Kuzminski <marcin@python-works.com>
parents: 1101
diff changeset
569 reverse=True,
61c5f0ab24b9 Added branch filter to repo pager
Marcin Kuzminski <marcin@python-works.com>
parents: 1101
diff changeset
570 branch_name=branch_name)
1098
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
571 self.items = list(iterator)
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
572
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
573 # Links to previous and next page
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
574 if self.page > self.first_page:
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
575 self.previous_page = self.page - 1
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
576 else:
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
577 self.previous_page = None
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
578
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
579 if self.page < self.last_page:
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
580 self.next_page = self.page + 1
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
581 else:
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
582 self.next_page = None
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
583
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
584 # No items available
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
585 else:
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
586 self.first_page = None
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
587 self.page_count = 0
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
588 self.last_page = None
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
589 self.first_item = None
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
590 self.last_item = None
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
591 self.previous_page = None
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
592 self.next_page = None
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
593 self.items = []
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
594
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
595 # This is a subclass of the 'list' type. Initialise the list now.
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
596 list.__init__(self, self.items)
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
597
91ddd4db4614 Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
Marcin Kuzminski <marcin@python-works.com>
parents: 1087
diff changeset
598
990
7a1df0130533 moved tooltip function from the for loop and from templates to helpers
Marcin Kuzminski <marcin@python-works.com>
parents: 966
diff changeset
599 def changed_tooltip(nodes):
1342
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
600 """
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
601 Generates a html string for changed nodes in changeset page.
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
602 It limits the output to 30 entries
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
603
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
604 :param nodes: LazyNodesGenerator
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
605 """
990
7a1df0130533 moved tooltip function from the for loop and from templates to helpers
Marcin Kuzminski <marcin@python-works.com>
parents: 966
diff changeset
606 if nodes:
7a1df0130533 moved tooltip function from the for loop and from templates to helpers
Marcin Kuzminski <marcin@python-works.com>
parents: 966
diff changeset
607 pref = ': <br/> '
7a1df0130533 moved tooltip function from the for loop and from templates to helpers
Marcin Kuzminski <marcin@python-works.com>
parents: 966
diff changeset
608 suf = ''
7a1df0130533 moved tooltip function from the for loop and from templates to helpers
Marcin Kuzminski <marcin@python-works.com>
parents: 966
diff changeset
609 if len(nodes) > 30:
7a1df0130533 moved tooltip function from the for loop and from templates to helpers
Marcin Kuzminski <marcin@python-works.com>
parents: 966
diff changeset
610 suf = '<br/>' + _(' and %s more') % (len(nodes) - 30)
1257
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
611 return literal(pref + '<br/> '.join([safe_unicode(x.path)
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
612 for x in nodes[:30]]) + suf)
990
7a1df0130533 moved tooltip function from the for loop and from templates to helpers
Marcin Kuzminski <marcin@python-works.com>
parents: 966
diff changeset
613 else:
7a1df0130533 moved tooltip function from the for loop and from templates to helpers
Marcin Kuzminski <marcin@python-works.com>
parents: 966
diff changeset
614 return ': ' + _('No Files')
1159
187a924ed653 Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents: 1154
diff changeset
615
187a924ed653 Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents: 1154
diff changeset
616
187a924ed653 Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents: 1154
diff changeset
617
187a924ed653 Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents: 1154
diff changeset
618 def repo_link(groups_and_repos):
1342
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
619 """
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
620 Makes a breadcrumbs link to repo within a group
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
621 joins &raquo; on each group to create a fancy link
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
622
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
623 ex::
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
624 group >> subgroup >> repo
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
625
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
626 :param groups_and_repos:
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
627 """
1159
187a924ed653 Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents: 1154
diff changeset
628 groups, repo_name = groups_and_repos
187a924ed653 Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents: 1154
diff changeset
629
187a924ed653 Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents: 1154
diff changeset
630 if not groups:
187a924ed653 Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents: 1154
diff changeset
631 return repo_name
187a924ed653 Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents: 1154
diff changeset
632 else:
187a924ed653 Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents: 1154
diff changeset
633 def make_link(group):
1257
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
634 return link_to(group.group_name, url('repos_group',
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
635 id=group.group_id))
1159
187a924ed653 Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents: 1154
diff changeset
636 return literal(' &raquo; '.join(map(make_link, groups)) + \
187a924ed653 Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents: 1154
diff changeset
637 " &raquo; " + repo_name)
1257
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
638
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
639
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
640 def fancy_file_stats(stats):
1342
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
641 """
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
642 Displays a fancy two colored bar for number of added/deleted
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
643 lines of code on file
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
644
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
645 :param stats: two element list of added/deleted lines of code
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
646 """
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
647
1257
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
648 a, d, t = stats[0], stats[1], stats[0] + stats[1]
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
649 width = 100
1258
3954bdaf6243 fixed possible float division, and changeset ranges bug introduced in stat changeset.
Marcin Kuzminski <marcin@python-works.com>
parents: 1257
diff changeset
650 unit = float(width) / (t or 1)
1257
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
651
1342
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
652 # needs > 9% of width to be visible or 0 to be hidden
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
653 a_p = max(9, unit * a) if a > 0 else 0
9dacacc5b7c2 When creating a remote repository, with credentials filled, it's good to hide username and password from the clone url. Only administrators can see this in repository settings page
Marcin Kuzminski <marcin@python-works.com>
parents: 1330
diff changeset
654 d_p = max(9, unit * d) if d > 0 else 0
1257
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
655 p_sum = a_p + d_p
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
656
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
657 if p_sum > width:
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
658 #adjust the percentage to be == 100% since we adjusted to 9
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
659 if a_p > d_p:
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
660 a_p = a_p - (p_sum - width)
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
661 else:
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
662 d_p = d_p - (p_sum - width)
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
663
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
664 a_v = a if a > 0 else ''
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
665 d_v = d if d > 0 else ''
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
666
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
667
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
668 def cgen(l_type):
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
669 mapping = {'tr':'top-right-rounded-corner',
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
670 'tl':'top-left-rounded-corner',
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
671 'br':'bottom-right-rounded-corner',
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
672 'bl':'bottom-left-rounded-corner'}
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
673 map_getter = lambda x:mapping[x]
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
674
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
675 if l_type == 'a' and d_v:
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
676 #case when added and deleted are present
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
677 return ' '.join(map(map_getter, ['tl', 'bl']))
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
678
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
679 if l_type == 'a' and not d_v:
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
680 return ' '.join(map(map_getter, ['tr', 'br', 'tl', 'bl']))
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
681
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
682 if l_type == 'd' and a_v:
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
683 return ' '.join(map(map_getter, ['tr', 'br']))
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
684
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
685 if l_type == 'd' and not a_v:
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
686 return ' '.join(map(map_getter, ['tr', 'br', 'tl', 'bl']))
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
687
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
688
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
689
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
690 d_a = '<div class="added %s" style="width:%s%%">%s</div>' % (cgen('a'),
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
691 a_p, a_v)
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
692 d_d = '<div class="deleted %s" style="width:%s%%">%s</div>' % (cgen('d'),
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
693 d_p, d_v)
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
694 return literal('<div style="width:%spx">%s%s</div>' % (width, d_a, d_d))