Gentoo Archives: gentoo-commits

From: Slava Bacherikov <slava@××××××××××××××.ua>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/apps/packages/templatetags/, ...
Date: Tue, 31 Jul 2012 14:23:13
Message-Id: 1343742965.61701beabd3f081ab54d04c4e61aa538fcc76441.bacher09@gentoo
1 commit: 61701beabd3f081ab54d04c4e61aa538fcc76441
2 Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
3 AuthorDate: Tue Jul 31 13:56:05 2012 +0000
4 Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
5 CommitDate: Tue Jul 31 13:56:05 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=61701bea
7
8 Add urlize license text
9
10 ---
11 gpackages/apps/packages/templatetags/packages.py | 2 +
12 gpackages/apps/packages/utils.py | 40 ++++++++++++++++++++++
13 gpackages/templates/package.html | 2 +-
14 3 files changed, 43 insertions(+), 1 deletions(-)
15
16 diff --git a/gpackages/apps/packages/templatetags/packages.py b/gpackages/apps/packages/templatetags/packages.py
17 index 820daaf..4839dfa 100644
18 --- a/gpackages/apps/packages/templatetags/packages.py
19 +++ b/gpackages/apps/packages/templatetags/packages.py
20 @@ -8,6 +8,7 @@ register = template.Library()
21 from ..models import RepositoryModel, EbuildModel, UseFlagDescriptionModel
22 from ..views import arches
23 from ..forms import ArchChoiceForm, FilteringForm
24 +from ..utils import license_urlize
25 from generic.utils import inclusion_cached_tag
26
27 def last_updated_key():
28 @@ -45,6 +46,7 @@ def changelog_highlight_filter(text):
29 return mark_safe(changelog_highlight(text))
30
31 register.filter('obfuscate', text_sincode)
32 +register.filter('license_urlize', license_urlize)
33
34 def recent_ebuilds_cache_key(num = 10):
35 return 'recent_ebuilds_th_' + str(num)
36
37 diff --git a/gpackages/apps/packages/utils.py b/gpackages/apps/packages/utils.py
38 index 25150c2..c0ffbee 100644
39 --- a/gpackages/apps/packages/utils.py
40 +++ b/gpackages/apps/packages/utils.py
41 @@ -1,4 +1,13 @@
42 from package_info.generic import ToStrMixin
43 +from django.utils.html import escape
44 +from django.utils.safestring import mark_safe
45 +from django.core.urlresolvers import reverse
46 +from django.core.urlresolvers import NoReverseMatch
47 +import re
48 +LICENSE_STR_RE = r'[a-zA-Z0-9_\-\+\.]+'
49 +USE_FLAG_RE = r'[a-zA-Z0-9]+\?'
50 +license_re = re.compile(LICENSE_STR_RE)
51 +use_re = re.compile(USE_FLAG_RE)
52
53 def gen_args(args):
54 t = '%s=%s'
55 @@ -10,3 +19,34 @@ def get_link(host, script, args):
56 'script': script,
57 'args': get_args(args)}
58
59 +def license_tokenize(license_str):
60 + s, l = 0, len(license_str)
61 + while s<l:
62 + m = use_re.match(license_str, s)
63 + if m is not None:
64 + yield ('use', m.group())
65 + s = m.end()
66 + continue
67 + m = license_re.match(license_str, s)
68 + if m is not None:
69 + yield ('license', m.group())
70 + s = m.end()
71 + continue
72 +
73 + yield (None, license_str[s])
74 + s += 1
75 +
76 +def license_urlize(license_str):
77 + res_str = u''
78 + for token, value in license_tokenize(license_str):
79 + value = escape(value)
80 + if token == 'license':
81 + try:
82 + link = reverse('license', kwargs = {'slug': value})
83 + except NoReverseMatch:
84 + pass
85 + else:
86 + value = mark_safe('<a href="{1}">{0}</a>'.format(value, link))
87 +
88 + res_str += value
89 + return mark_safe(res_str)
90
91 diff --git a/gpackages/templates/package.html b/gpackages/templates/package.html
92 index 00f1191..d1d4640 100644
93 --- a/gpackages/templates/package.html
94 +++ b/gpackages/templates/package.html
95 @@ -17,7 +17,7 @@
96 {% use_flag_table package %}
97 </div>
98 <div class="tab-pane" id="tab3">
99 - {{ package.latest_ebuild.license }}
100 + {{ package.latest_ebuild.license|license_urlize }}
101 </div>
102 </div>
103 </div>