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(-)
----------------------------------------------------------------------