changeset 398:8c50b164fb58

Implemented basic gravatar support on admin pages only for now
author Marcin Kuzminski <marcin@python-works.com>
date Sun, 08 Aug 2010 01:26:23 +0200
parents 4cf4b82aa2a0
children f5c1eec9f376
files pylons_app/lib/helpers.py pylons_app/public/css/style.css pylons_app/templates/admin/users/user_edit.html pylons_app/templates/admin/users/users.html
diffstat 4 files changed, 42 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/pylons_app/lib/helpers.py	Sat Aug 07 22:08:31 2010 +0200
+++ b/pylons_app/lib/helpers.py	Sun Aug 08 01:26:23 2010 +0200
@@ -277,8 +277,6 @@
 #===============================================================================
 # MERCURIAL FILTERS available via h.
 #===============================================================================
-
-
 from mercurial import util
 from mercurial.templatefilters import age as _age, person as _person
 
@@ -302,4 +300,24 @@
 from pylons_app.lib.auth import HasPermissionAny, HasPermissionAll, \
 HasRepoPermissionAny, HasRepoPermissionAll
 
+#===============================================================================
+# GRAVATAR URL
+#===============================================================================
+import hashlib
+import urllib
 
+def gravatar_url(email):
+    ssl_enabled = 'https' == request.environ.get('HTTP_X_URL_SCHEME')
+    default = 'identicon'
+    size = 32
+    baseurl_nossl = "http://www.gravatar.com/avatar/"
+    baseurl_ssl = "https://secure.gravatar.com/avatar/"
+    
+    baseurl = baseurl_ssl if ssl_enabled else baseurl_nossl
+        
+    
+    # construct the url
+    gravatar_url = baseurl + hashlib.md5(email.lower()).hexdigest() + "?"
+    gravatar_url += urllib.urlencode({'d':default, 's':str(size)})
+
+    return gravatar_url
--- a/pylons_app/public/css/style.css	Sat Aug 07 22:08:31 2010 +0200
+++ b/pylons_app/public/css/style.css	Sun Aug 08 01:26:23 2010 +0200
@@ -1899,6 +1899,7 @@
     padding: 5px;
 	background: #ffffff;
     border-bottom: 1px solid #cdcdcd;
+    vertical-align:middle;
 }
 
 #content div.box table tr.selected td
@@ -3442,6 +3443,15 @@
 
 }
 
+/* -----------------------------------------------------------
+    GRAVATARS
+----------------------------------------------------------- */
+.gravatar_box img{
+ 	float:left;
+ 	padding-right: 5px;
+ 	padding-top:3px;
+}
+
 
 /* -----------------------------------------------------------
 	jquery ui
--- a/pylons_app/templates/admin/users/user_edit.html	Sat Aug 07 22:08:31 2010 +0200
+++ b/pylons_app/templates/admin/users/user_edit.html	Sun Aug 08 01:26:23 2010 +0200
@@ -29,6 +29,16 @@
         <!-- fields -->
         <div class="fields">
              <div class="field">
+                <div class="gravatar_box">
+              		<img alt="gravatar" src="${h.gravatar_url(c.user.email)}"/>
+              		<p>
+              		<strong>Change your avatar at <a href="http://gravatar.com">gravatar.com</a></strong><br/> 
+              		${_('Using')} ${c.user.email}
+              		</p>
+            	</div>
+             </div>        
+        
+             <div class="field">
                 <div class="label">
                     <label for="username">${_('Username')}:</label>
                 </div>
@@ -90,7 +100,6 @@
                     ${h.checkbox('admin',value=True)}
                 </div>
              </div>             
-            
             <div class="buttons">
               ${h.submit('save','save',class_="ui-button ui-widget ui-state-default ui-corner-all")}
             </div>             
--- a/pylons_app/templates/admin/users/users.html	Sat Aug 07 22:08:31 2010 +0200
+++ b/pylons_app/templates/admin/users/users.html	Sun Aug 08 01:26:23 2010 +0200
@@ -29,6 +29,7 @@
     <div class="table">
         <table class="table_disp">
         <tr class="header">
+        	<th></th>
             <th class="left">${_('username')}</th>
             <th class="left">${_('name')}</th>
             <th class="left">${_('lastname')}</th>
@@ -39,6 +40,7 @@
             %for cnt,user in enumerate(c.users_list):
              %if user.name !='default':
                 <tr class="parity${cnt%2}">
+                	<td> <img alt="gravatar" src="${h.gravatar_url(user.email)}"> </td>
                     <td>${h.link_to(user.username,h.url('edit_user', id=user.user_id))}</td>
                     <td>${user.name}</td>
                     <td>${user.lastname}</td>