Show More
@@ -69,6 +69,8 b' use_gravatar = true' | |||
|
69 | 69 | ## {email} user email |
|
70 | 70 | ## {md5email} md5 hash of the user email (like at gravatar.com) |
|
71 | 71 | ## {size} size of the image that is expected from the server application |
|
72 | ## {scheme} http/https from RhodeCode server | |
|
73 | ## {netloc} network location from RhodeCode server | |
|
72 | 74 | #alternative_gravatar_url = http://myavatarserver.com/getbyemail/{email}/{size} |
|
73 | 75 | #alternative_gravatar_url = http://myavatarserver.com/getbymd5/{md5email}?s={size} |
|
74 | 76 |
@@ -69,6 +69,8 b' use_gravatar = true' | |||
|
69 | 69 | ## {email} user email |
|
70 | 70 | ## {md5email} md5 hash of the user email (like at gravatar.com) |
|
71 | 71 | ## {size} size of the image that is expected from the server application |
|
72 | ## {scheme} http/https from RhodeCode server | |
|
73 | ## {netloc} network location from RhodeCode server | |
|
72 | 74 | #alternative_gravatar_url = http://myavatarserver.com/getbyemail/{email}/{size} |
|
73 | 75 | #alternative_gravatar_url = http://myavatarserver.com/getbymd5/{md5email}?s={size} |
|
74 | 76 |
@@ -69,6 +69,8 b' use_gravatar = true' | |||
|
69 | 69 | ## {email} user email |
|
70 | 70 | ## {md5email} md5 hash of the user email (like at gravatar.com) |
|
71 | 71 | ## {size} size of the image that is expected from the server application |
|
72 | ## {scheme} http/https from RhodeCode server | |
|
73 | ## {netloc} network location from RhodeCode server | |
|
72 | 74 | #alternative_gravatar_url = http://myavatarserver.com/getbyemail/{email}/{size} |
|
73 | 75 | #alternative_gravatar_url = http://myavatarserver.com/getbymd5/{md5email}?s={size} |
|
74 | 76 |
@@ -10,6 +10,7 b' import urllib' | |||
|
10 | 10 | import math |
|
11 | 11 | import logging |
|
12 | 12 | import re |
|
13 | import urlparse | |
|
13 | 14 | |
|
14 | 15 | from datetime import datetime |
|
15 | 16 | from pygments.formatters.html import HtmlFormatter |
@@ -711,11 +712,15 b' HasRepoPermissionAny, HasRepoPermissionA' | |||
|
711 | 712 | #============================================================================== |
|
712 | 713 | |
|
713 | 714 | def gravatar_url(email_address, size=30): |
|
715 | from pylons import url ## doh, we need to re-import url to mock it later | |
|
714 | 716 | if(str2bool(config['app_conf'].get('use_gravatar')) and |
|
715 | 717 | config['app_conf'].get('alternative_gravatar_url')): |
|
716 | 718 | tmpl = config['app_conf'].get('alternative_gravatar_url', '') |
|
719 | parsed_url = urlparse.urlparse(url.current(qualified=True)) | |
|
717 | 720 | tmpl = tmpl.replace('{email}', email_address)\ |
|
718 | .replace('{md5email}', hashlib.md5(email_address.lower()).hexdigest())\ | |
|
721 | .replace('{md5email}', hashlib.md5(email_address.lower()).hexdigest()) \ | |
|
722 | .replace('{netloc}', parsed_url.netloc)\ | |
|
723 | .replace('{scheme}', parsed_url.scheme)\ | |
|
719 | 724 | .replace('{size}', str(size)) |
|
720 | 725 | return tmpl |
|
721 | 726 |
@@ -159,19 +159,40 b' class TestLibs(unittest.TestCase):' | |||
|
159 | 159 | config['app_conf']['use_gravatar'] = True |
|
160 | 160 | config['app_conf'].update(kwargs) |
|
161 | 161 | return config |
|
162 | fake = fake_conf(alternative_gravatar_url='http://test.com/{email}') | |
|
163 | with mock.patch('pylons.config', fake): | |
|
164 | grav = gravatar_url(email_address='test@foo.com', size=24) | |
|
165 | assert grav == 'http://test.com/test@foo.com' | |
|
162 | ||
|
163 | class fake_url(): | |
|
164 | @classmethod | |
|
165 | def current(cls, *args, **kwargs): | |
|
166 | return 'https://server.com' | |
|
167 | ||
|
168 | with mock.patch('pylons.url', fake_url): | |
|
169 | fake = fake_conf(alternative_gravatar_url='http://test.com/{email}') | |
|
170 | with mock.patch('pylons.config', fake): | |
|
171 | from pylons import url | |
|
172 | assert url.current() == 'http://server.com' | |
|
173 | grav = gravatar_url(email_address='test@foo.com', size=24) | |
|
174 | assert grav == 'http://test.com/test@foo.com' | |
|
175 | ||
|
176 | fake = fake_conf(alternative_gravatar_url='http://test.com/{email}') | |
|
177 | with mock.patch('pylons.config', fake): | |
|
178 | grav = gravatar_url(email_address='test@foo.com', size=24) | |
|
179 | assert grav == 'http://test.com/test@foo.com' | |
|
166 | 180 | |
|
167 | fake = fake_conf(alternative_gravatar_url='http://test.com/{md5email}') | |
|
168 | with mock.patch('pylons.config', fake): | |
|
169 | em = 'test@foo.com' | |
|
170 | grav = gravatar_url(email_address=em, size=24) | |
|
171 | assert grav == 'http://test.com/%s' % (_md5(em)) | |
|
181 | fake = fake_conf(alternative_gravatar_url='http://test.com/{md5email}') | |
|
182 | with mock.patch('pylons.config', fake): | |
|
183 | em = 'test@foo.com' | |
|
184 | grav = gravatar_url(email_address=em, size=24) | |
|
185 | assert grav == 'http://test.com/%s' % (_md5(em)) | |
|
172 | 186 | |
|
173 | fake = fake_conf(alternative_gravatar_url='http://test.com/{md5email}/{size}') | |
|
174 | with mock.patch('pylons.config', fake): | |
|
175 | em = 'test@foo.com' | |
|
176 | grav = gravatar_url(email_address=em, size=24) | |
|
177 | assert grav == 'http://test.com/%s/%s' % (_md5(em), 24) | |
|
187 | fake = fake_conf(alternative_gravatar_url='http://test.com/{md5email}/{size}') | |
|
188 | with mock.patch('pylons.config', fake): | |
|
189 | em = 'test@foo.com' | |
|
190 | grav = gravatar_url(email_address=em, size=24) | |
|
191 | assert grav == 'http://test.com/%s/%s' % (_md5(em), 24) | |
|
192 | ||
|
193 | fake = fake_conf(alternative_gravatar_url='{scheme}://{netloc}/{md5email}/{size}') | |
|
194 | with mock.patch('pylons.config', fake): | |
|
195 | em = 'test@foo.com' | |
|
196 | grav = gravatar_url(email_address=em, size=24) | |
|
197 | assert grav == 'https://server.com/%s/%s' % (_md5(em), 24) | |
|
198 |
General Comments 0
You need to be logged in to leave comments.
Login now