[snowy] Add gravatar support
- From: Brad Taylor <btaylor src gnome org>
- To: svn-commits-list gnome org
- Subject: [snowy] Add gravatar support
- Date: Mon, 18 May 2009 14:28:23 -0400 (EDT)
commit 747178f6b5e15977e6b76b52f6a2bbf4f50e83db
Author: Brad Taylor <brad getcoded net>
Date: Mon May 18 14:26:48 2009 -0400
Add gravatar support
Patch from Ray Wang <rawang novell com>
---
lib/gravatar/models.py | 3 ++
lib/gravatar/templatetags/gravatar.py | 49 ++++++++++++++++++++++++++++
lib/gravatar/templatetags/gravatar_tags.py | 49 ++++++++++++++++++++++++++++
lib/gravatar/views.py | 1 +
settings.py | 1 +
templates/base.html | 3 +-
6 files changed, 105 insertions(+), 1 deletions(-)
diff --git a/lib/gravatar/__init__.py b/lib/gravatar/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/lib/gravatar/models.py b/lib/gravatar/models.py
new file mode 100644
index 0000000..71a8362
--- /dev/null
+++ b/lib/gravatar/models.py
@@ -0,0 +1,3 @@
+from django.db import models
+
+# Create your models here.
diff --git a/lib/gravatar/templatetags/__init__.py b/lib/gravatar/templatetags/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/lib/gravatar/templatetags/gravatar.py b/lib/gravatar/templatetags/gravatar.py
new file mode 100644
index 0000000..178b6ce
--- /dev/null
+++ b/lib/gravatar/templatetags/gravatar.py
@@ -0,0 +1,49 @@
+from django import template
+from django.utils.html import escape
+from django.contrib.auth.models import User
+from django.conf import settings
+from django.utils.hashcompat import md5_constructor
+
+import urllib
+
+GRAVATAR_URL_PREFIX = getattr(settings, "GRAVATAR_URL_PREFIX", "http://www.gravatar.com/")
+GRAVATAR_DEFAULT_IMAGE = getattr(settings, "GRAVATAR_DEFAULT_IMAGE", "")
+
+register = template.Library()
+
+def get_user(user):
+ if not isinstance(user, User):
+ try:
+ user = User.objects.get(username=user)
+ except User.DoesNotExist:
+ # TODO: make better? smarter? strong? maybe give it wheaties?
+ raise Exception, "Bad user for gravatar."
+ return user
+
+def gravatar_for_email(email, size=80):
+ url = "%savatar/%s/?" % (GRAVATAR_URL_PREFIX, md5_constructor(email).hexdigest())
+ url += urllib.urlencode({"s": str(size), "default": GRAVATAR_DEFAULT_IMAGE})
+ return escape(url)
+
+def gravatar_for_user(user, size=80):
+ user = get_user(user)
+ return gravatar_for_email(user.email, size)
+
+def gravatar_img_for_email(email, size=80):
+ url = gravatar_for_email(email, size)
+ return """<img src="%s" height="%s" width="%s"/>""" % (escape(url), size, size)
+
+def gravatar_img_for_user(user, size=80):
+ user = get_user(user)
+ url = gravatar_for_user(user)
+ return """<img src="%s" alt="Avatar for %s" height="%s" width="%s"/>""" % (escape(url), user.username, size, size)
+
+def gravatar(user, size=80):
+ # backward compatibility
+ return gravatar_img_for_user(user, size)
+
+register.simple_tag(gravatar)
+register.simple_tag(gravatar_for_user)
+register.simple_tag(gravatar_for_email)
+register.simple_tag(gravatar_img_for_user)
+register.simple_tag(gravatar_img_for_email)
diff --git a/lib/gravatar/templatetags/gravatar_tags.py b/lib/gravatar/templatetags/gravatar_tags.py
new file mode 100644
index 0000000..178b6ce
--- /dev/null
+++ b/lib/gravatar/templatetags/gravatar_tags.py
@@ -0,0 +1,49 @@
+from django import template
+from django.utils.html import escape
+from django.contrib.auth.models import User
+from django.conf import settings
+from django.utils.hashcompat import md5_constructor
+
+import urllib
+
+GRAVATAR_URL_PREFIX = getattr(settings, "GRAVATAR_URL_PREFIX", "http://www.gravatar.com/")
+GRAVATAR_DEFAULT_IMAGE = getattr(settings, "GRAVATAR_DEFAULT_IMAGE", "")
+
+register = template.Library()
+
+def get_user(user):
+ if not isinstance(user, User):
+ try:
+ user = User.objects.get(username=user)
+ except User.DoesNotExist:
+ # TODO: make better? smarter? strong? maybe give it wheaties?
+ raise Exception, "Bad user for gravatar."
+ return user
+
+def gravatar_for_email(email, size=80):
+ url = "%savatar/%s/?" % (GRAVATAR_URL_PREFIX, md5_constructor(email).hexdigest())
+ url += urllib.urlencode({"s": str(size), "default": GRAVATAR_DEFAULT_IMAGE})
+ return escape(url)
+
+def gravatar_for_user(user, size=80):
+ user = get_user(user)
+ return gravatar_for_email(user.email, size)
+
+def gravatar_img_for_email(email, size=80):
+ url = gravatar_for_email(email, size)
+ return """<img src="%s" height="%s" width="%s"/>""" % (escape(url), size, size)
+
+def gravatar_img_for_user(user, size=80):
+ user = get_user(user)
+ url = gravatar_for_user(user)
+ return """<img src="%s" alt="Avatar for %s" height="%s" width="%s"/>""" % (escape(url), user.username, size, size)
+
+def gravatar(user, size=80):
+ # backward compatibility
+ return gravatar_img_for_user(user, size)
+
+register.simple_tag(gravatar)
+register.simple_tag(gravatar_for_user)
+register.simple_tag(gravatar_for_email)
+register.simple_tag(gravatar_img_for_user)
+register.simple_tag(gravatar_img_for_email)
diff --git a/lib/gravatar/views.py b/lib/gravatar/views.py
new file mode 100644
index 0000000..60f00ef
--- /dev/null
+++ b/lib/gravatar/views.py
@@ -0,0 +1 @@
+# Create your views here.
diff --git a/settings.py b/settings.py
index bae6efe..5564603 100644
--- a/settings.py
+++ b/settings.py
@@ -97,6 +97,7 @@ INSTALLED_APPS = (
'registration',
'django_evolution',
'reversion',
+ 'gravatar',
# Local apps
'notes',
diff --git a/templates/base.html b/templates/base.html
index 8be65b5..b31aeb3 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -1,3 +1,4 @@
+{% load gravatar %}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
@@ -23,7 +24,7 @@
</div>
<div id="header-avatar">
{% if user.is_authenticated %}
- <img src="{{ MEDIA_URL }}img/blank-avatar.png" width="48" height="48" alt="Your Avatar"/>
+ {% gravatar_img_for_user user 64 %}
{% endif %}
</div>
<div id="header-auth">
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]