You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by ke...@apache.org on 2017/12/22 14:57:36 UTC
[1/2] allura git commit: Config option to customize the default user
avatar image
Repository: allura
Updated Branches:
refs/heads/master de310f2c2 -> fd8533e9d
Config option to customize the default user avatar image
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/cae3ce6b
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/cae3ce6b
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/cae3ce6b
Branch: refs/heads/master
Commit: cae3ce6b8dbc17443ba89b6af3f3b3ee6905f163
Parents: 4f62f62
Author: Dave Brondsema <da...@brondsema.net>
Authored: Thu Dec 21 11:49:03 2017 -0500
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Thu Dec 21 11:49:03 2017 -0500
----------------------------------------------------------------------
Allura/allura/controllers/project.py | 6 +++++-
Allura/allura/lib/gravatar.py | 7 +++++++
Allura/allura/model/auth.py | 3 +++
Allura/allura/templates/jinja_master/lib.html | 3 +++
Allura/allura/tests/functional/test_gravatar.py | 18 +++++++++++++++---
Allura/allura/tests/functional/test_home.py | 20 ++++++++++++++++++++
Allura/development.ini | 3 +++
7 files changed, 56 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/cae3ce6b/Allura/allura/controllers/project.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/project.py b/Allura/allura/controllers/project.py
index 6854c00..1717828 100644
--- a/Allura/allura/controllers/project.py
+++ b/Allura/allura/controllers/project.py
@@ -442,7 +442,11 @@ class ProjectController(FeedController):
try:
return self.icon(**kw)
except exc.HTTPNotFound:
- redirect(g.forge_static('images/user.png'))
+ if config.get('default_avatar_image'):
+ default_image_url = config['default_avatar_image']
+ else:
+ default_image_url = g.forge_static('images/user.png')
+ redirect(default_image_url)
@expose('json:')
def user_search(self, term='', **kw):
http://git-wip-us.apache.org/repos/asf/allura/blob/cae3ce6b/Allura/allura/lib/gravatar.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/gravatar.py b/Allura/allura/lib/gravatar.py
index 0e03be2..a0fb1de 100644
--- a/Allura/allura/lib/gravatar.py
+++ b/Allura/allura/lib/gravatar.py
@@ -19,6 +19,11 @@ import re
import urllib
import hashlib
+from tg import config
+
+from allura.lib import helpers as h
+
+
_wrapped_email = re.compile(r'.*<(.+)>')
@@ -79,6 +84,8 @@ def url(email=None, gravatar_id=None, **kw):
gravatar_id = id(email)
if 'r' not in kw and 'rating' not in kw:
kw['r'] = 'pg'
+ if 'd' not in kw and config.get('default_avatar_image'):
+ kw['d'] = h.absurl(config['default_avatar_image'])
return ('https://secure.gravatar.com/avatar/%s?%s' % (gravatar_id, urllib.urlencode(kw)))
http://git-wip-us.apache.org/repos/asf/allura/blob/cae3ce6b/Allura/allura/model/auth.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/auth.py b/Allura/allura/model/auth.py
index 780e8dd..4eb5a96 100644
--- a/Allura/allura/model/auth.py
+++ b/Allura/allura/model/auth.py
@@ -643,6 +643,9 @@ class User(MappedClass, ActivityNode, ActivityObject, SearchIndexable):
gravatar_args['d'] = gravatar_default_url
icon_url = g.gravatar(self.preferences.email_address, **gravatar_args)
icon_source = 'gravatar'
+ elif config.get('default_avatar_image'):
+ icon_url = config['default_avatar_image']
+ icon_source = 'default'
if return_more:
return icon_url, private_project, icon_source
http://git-wip-us.apache.org/repos/asf/allura/blob/cae3ce6b/Allura/allura/templates/jinja_master/lib.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/jinja_master/lib.html b/Allura/allura/templates/jinja_master/lib.html
index 44517a9..ab5acb8 100644
--- a/Allura/allura/templates/jinja_master/lib.html
+++ b/Allura/allura/templates/jinja_master/lib.html
@@ -62,6 +62,9 @@
src="{{ icon_url }}&s={{size}}"
srcset="{{icon_url}}&s={{ size*1.5 }} 1.5x,
{{icon_url}}&s={{ size*2 }} 2x"
+ width="{{size}}" height="{{size}}"
+ {% elif icon_source == 'default' %}
+ src="{{ icon_url }}"
{% endif %}
alt="{{display_name}}"
title="{{display_name}}"
http://git-wip-us.apache.org/repos/asf/allura/blob/cae3ce6b/Allura/allura/tests/functional/test_gravatar.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/functional/test_gravatar.py b/Allura/allura/tests/functional/test_gravatar.py
index bea43f3..72e0b99 100644
--- a/Allura/allura/tests/functional/test_gravatar.py
+++ b/Allura/allura/tests/functional/test_gravatar.py
@@ -17,6 +17,10 @@
from urlparse import urlparse, parse_qs
+import tg
+from nose.tools import assert_equal
+from mock import patch
+
from allura.tests import TestController
import allura.lib.gravatar as gravatar
@@ -43,9 +47,17 @@ class TestGravatar(TestController):
assert url.netloc == 'secure.gravatar.com'
assert url.path == '/avatar/' + expected_id
- def test_defaults(self):
+ def test_default_override(self):
email = 'Wolf@example.com'
url = urlparse(gravatar.url(email=email, rating='x'))
query = parse_qs(url.query)
- assert 'r' not in query
- assert query['rating'] == ['x']
+ assert_equal(query,
+ {'rating': ['x']})
+
+ @patch.dict(tg.config, {'default_avatar_image': 'https://example.com/img/icon.png'})
+ def test_default_image(self):
+ email = 'Wolf@example.com'
+ url = urlparse(gravatar.url(email=email))
+ query = parse_qs(url.query)
+ assert_equal(query,
+ {'r': ['pg'], 'd': ['https://example.com/img/icon.png']})
http://git-wip-us.apache.org/repos/asf/allura/blob/cae3ce6b/Allura/allura/tests/functional/test_home.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/functional/test_home.py b/Allura/allura/tests/functional/test_home.py
index 9798f8c..f3d2197 100644
--- a/Allura/allura/tests/functional/test_home.py
+++ b/Allura/allura/tests/functional/test_home.py
@@ -17,11 +17,13 @@
import json
import re
+import os
from pylons import tmpl_context as c
from nose.tools import assert_equal, assert_not_in, assert_in
from ming.orm import ThreadLocalORMSession
+import allura
from allura.tests import TestController
from allura.tests import decorators as td
from allura import model as M
@@ -144,6 +146,24 @@ class TestProjectHome(TestController):
assert r.location.endswith('admin/'), r.location
assert_not_in('Profile', r.follow().body)
+ def test_user_icon_missing(self):
+ r = self.app.get('/u/test-user/user_icon', status=302)
+ assert r.location.endswith('images/user.png')
+
+ def test_user_icon(self):
+ file_name = 'neo-icon-set-454545-256x350.png'
+ file_path = os.path.join(allura.__path__[0], 'nf', 'allura', 'images', file_name)
+ file_data = file(file_path).read()
+ upload = ('icon', file_name, file_data)
+ with td.audits('update project icon'):
+ self.app.post('/u/test-admin/admin/update', params=dict(
+ name='Test Project',
+ shortname='test',
+ short_description='A Test Project'),
+ upload_files=[upload])
+ r = self.app.get('/u/test-admin/user_icon')
+ assert_equal(r.content_type, 'image/png')
+
def test_user_search(self):
r = self.app.get('/p/test/user_search?term=test', status=200)
j = json.loads(r.body)
http://git-wip-us.apache.org/repos/asf/allura/blob/cae3ce6b/Allura/development.ini
----------------------------------------------------------------------
diff --git a/Allura/development.ini b/Allura/development.ini
index a644ae5..47fee90 100644
--- a/Allura/development.ini
+++ b/Allura/development.ini
@@ -140,6 +140,9 @@ theme = allura
; and then 1.5x and 2x versions of all
project_icon_sizes = 16 24 32 48 64 72 96
+; To use a custom image for default user profile avatars, specify a full URL here. Size 96x96 is best, 48x48 ok
+;default_avatar_image =
+
; For LDAP see https://forge-allura.apache.org/docs/getting_started/installation.html#using-ldap
;auth.method = ldap
auth.method = local
[2/2] allura git commit: Merge commit
'cae3ce6b8dbc17443ba89b6af3f3b3ee6905f163'
Posted by ke...@apache.org.
Merge commit 'cae3ce6b8dbc17443ba89b6af3f3b3ee6905f163'
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/fd8533e9
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/fd8533e9
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/fd8533e9
Branch: refs/heads/master
Commit: fd8533e9d5537491cfef4ea1914026526b7cebe9
Parents: de310f2 cae3ce6
Author: Kenton Taylor <kt...@slashdotmedia.com>
Authored: Fri Dec 22 14:56:43 2017 +0000
Committer: Kenton Taylor <kt...@slashdotmedia.com>
Committed: Fri Dec 22 14:56:43 2017 +0000
----------------------------------------------------------------------
Allura/allura/controllers/project.py | 6 +++++-
Allura/allura/lib/gravatar.py | 7 +++++++
Allura/allura/model/auth.py | 3 +++
Allura/allura/templates/jinja_master/lib.html | 3 +++
Allura/allura/tests/functional/test_gravatar.py | 18 +++++++++++++++---
Allura/allura/tests/functional/test_home.py | 20 ++++++++++++++++++++
Allura/development.ini | 3 +++
7 files changed, 56 insertions(+), 4 deletions(-)
----------------------------------------------------------------------