From 6ac3e46a81056294240c37ae3401f7cba1d5c8b6 Mon Sep 17 00:00:00 2001 From: toogy Date: Mon, 17 Mar 2014 19:58:38 +0530 Subject: [PATCH 1/3] Adding the AVATAR_GRAVATAR_FIELD setting to define the user field used to get the gravatar email. --- avatar/conf.py | 1 + avatar/templatetags/avatar_tags.py | 4 ++-- docs/index.txt | 29 +++++++++++++++++------------ 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/avatar/conf.py b/avatar/conf.py index 4d7f01f1..2a74e259 100644 --- a/avatar/conf.py +++ b/avatar/conf.py @@ -9,6 +9,7 @@ class AvatarConf(AppConf): RESIZE_METHOD = Image.ANTIALIAS STORAGE_DIR = 'avatars' GRAVATAR_BASE_URL = 'https://www.gravatar.com/avatar/' + GRAVATAR_FIELD = 'email' GRAVATAR_BACKUP = True GRAVATAR_DEFAULT = None DEFAULT_URL = 'avatar/img/default.jpg' diff --git a/avatar/templatetags/avatar_tags.py b/avatar/templatetags/avatar_tags.py index 75a1a4ff..6e2c6a54 100644 --- a/avatar/templatetags/avatar_tags.py +++ b/avatar/templatetags/avatar_tags.py @@ -31,8 +31,8 @@ def avatar_url(user, size=settings.AVATAR_DEFAULT_SIZE): params = {'s': str(size)} if settings.AVATAR_GRAVATAR_DEFAULT: params['d'] = settings.AVATAR_GRAVATAR_DEFAULT - path = "%s/?%s" % (hashlib.md5(force_bytes(user.email)).hexdigest(), - urlencode(params)) + path = "%s/?%s" % (hashlib.md5(force_bytes( + getattr(settings.GRAVATAR_FIELD))).hexdigest(), urlencode(params)) return urljoin(settings.AVATAR_GRAVATAR_BASE_URL, path) return get_default_avatar_url() diff --git a/docs/index.txt b/docs/index.txt index c16a9c47..43e2a4ad 100644 --- a/docs/index.txt +++ b/docs/index.txt @@ -32,19 +32,19 @@ that are required. A minimal integration can work like this: 1. List this application in the ``INSTALLED_APPS`` portion of your settings file. Your settings file will look something like:: - + INSTALLED_APPS = ( # ... 'avatar', ) 2. Update your database:: - + python manage.py syncdb 3. Add the avatar urls to the end of your root urlconf. Your urlconf will look something like:: - + urlpatterns = patterns('', # ... (r'^avatar/', include('avatar.urls')), @@ -52,20 +52,20 @@ that are required. A minimal integration can work like this: 4. Somewhere in your template navigation scheme, link to the change avatar page:: - + Change your avatar 5. Wherever you want to display an avatar for a user, first load the avatar template tags:: - + {% load avatar_tags %} - + Then, use the ``avatar`` tag to display an avatar of a default size:: - + {% avatar user %} - + Or specify a size (in pixels) explicitly:: - + {% avatar user 65 %} Template tags and filter @@ -118,15 +118,20 @@ AVATAR_GRAVATAR_BACKUP True. AVATAR_GRAVATAR_DEFAULT - A string determining the style of the default Gravatar. Available options - listed in the - (Gravatar documentation)[https://en.gravatar.com/site/implement/images/#default-image]. + A string determining the style of the default Gravatar. Available options + listed in the + (Gravatar documentation)[https://en.gravatar.com/site/implement/images/#default-image]. Ex. 'retro'. Defaults to None. AVATAR_DEFAULT_URL The default URL to default to if ``AVATAR_GRAVATAR_BACKUP`` is set to False and there is no ``Avatar`` instance found in the system for the given user. +AVATAR_GRAVATAR_FIELD + The name of the user's field containing the gravatar email. Defaults to + ``email``. If you put, for example, ``gravatar``, django-avatar will get the + user's gravatar in ``user.gravatar``. + AVATAR_MAX_SIZE File size limit for avatar upload. Default is ``1024 * 1024`` (1mb). From 10c9e8af0daf4e6209ad2932c89bb75e418535df Mon Sep 17 00:00:00 2001 From: toogy Date: Mon, 17 Mar 2014 20:42:58 +0530 Subject: [PATCH 2/3] Fix GRAVATAR_FIELD > AVATAR_GRAVATAR_FIELD --- avatar/templatetags/avatar_tags.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/avatar/templatetags/avatar_tags.py b/avatar/templatetags/avatar_tags.py index 6e2c6a54..9f3aac70 100644 --- a/avatar/templatetags/avatar_tags.py +++ b/avatar/templatetags/avatar_tags.py @@ -31,8 +31,9 @@ def avatar_url(user, size=settings.AVATAR_DEFAULT_SIZE): params = {'s': str(size)} if settings.AVATAR_GRAVATAR_DEFAULT: params['d'] = settings.AVATAR_GRAVATAR_DEFAULT - path = "%s/?%s" % (hashlib.md5(force_bytes( - getattr(settings.GRAVATAR_FIELD))).hexdigest(), urlencode(params)) + path = "%s/?%s" % (hashlib.md5( + force_bytes(getattr(settings.AVATAR_GRAVATAR_FIELD))).hexdigest(), + urlencode(params)) return urljoin(settings.AVATAR_GRAVATAR_BASE_URL, path) return get_default_avatar_url() From d182c83e0f1b023102fca1940d2025a7211e3103 Mon Sep 17 00:00:00 2001 From: toogy Date: Mon, 17 Mar 2014 22:33:26 +0530 Subject: [PATCH 3/3] Fixing getattr --- avatar/templatetags/avatar_tags.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/avatar/templatetags/avatar_tags.py b/avatar/templatetags/avatar_tags.py index 9f3aac70..e59c0689 100644 --- a/avatar/templatetags/avatar_tags.py +++ b/avatar/templatetags/avatar_tags.py @@ -31,9 +31,8 @@ def avatar_url(user, size=settings.AVATAR_DEFAULT_SIZE): params = {'s': str(size)} if settings.AVATAR_GRAVATAR_DEFAULT: params['d'] = settings.AVATAR_GRAVATAR_DEFAULT - path = "%s/?%s" % (hashlib.md5( - force_bytes(getattr(settings.AVATAR_GRAVATAR_FIELD))).hexdigest(), - urlencode(params)) + path = "%s/?%s" % (hashlib.md5(force_bytes(getattr(user, + settings.AVATAR_GRAVATAR_FIELD))).hexdigest(), urlencode(params)) return urljoin(settings.AVATAR_GRAVATAR_BASE_URL, path) return get_default_avatar_url()