Extract get_avatar_url().

This function doesn't require the whole UserProfile object to
create the avatar url, and we call it from Message.to_dict_uncached().

(imported from commit e814caab101c4fedd1ba66df041a3408014e4085)
This commit is contained in:
Steve Howell
2013-09-21 10:32:29 -04:00
parent e4fb66fdf8
commit 95254398f2
2 changed files with 14 additions and 5 deletions

View File

@@ -22,11 +22,17 @@ def user_avatar_hash(email):
return make_safe_digest(user_key, hashlib.sha1) return make_safe_digest(user_key, hashlib.sha1)
def avatar_url(user_profile): def avatar_url(user_profile):
if user_profile.avatar_source == 'U': return get_avatar_url(
user_profile.avatar_source,
user_profile.email
)
def get_avatar_url(avatar_source, email):
if avatar_source == 'U':
bucket = settings.S3_AVATAR_BUCKET bucket = settings.S3_AVATAR_BUCKET
hash_key = user_avatar_hash(user_profile.email) hash_key = user_avatar_hash(email)
# ?x=x allows templates to append additional parameters with &s # ?x=x allows templates to append additional parameters with &s
return "https://%s.s3.amazonaws.com/%s?x=x" % (bucket, hash_key) return "https://%s.s3.amazonaws.com/%s?x=x" % (bucket, hash_key)
else: else:
hash_key = gravatar_hash(user_profile.email) hash_key = gravatar_hash(email)
return "https://secure.gravatar.com/avatar/%s?d=identicon" % (hash_key,) return "https://secure.gravatar.com/avatar/%s?d=identicon" % (hash_key,)

View File

@@ -11,7 +11,7 @@ from zerver.lib.cache import cache_with_key, update_user_profile_cache, \
from zerver.lib.utils import make_safe_digest, generate_random_token from zerver.lib.utils import make_safe_digest, generate_random_token
from django.db import transaction, IntegrityError from django.db import transaction, IntegrityError
from zerver.lib import bugdown from zerver.lib import bugdown
from zerver.lib.avatar import gravatar_hash, avatar_url from zerver.lib.avatar import gravatar_hash, get_avatar_url
from django.utils import timezone from django.utils import timezone
from django.contrib.sessions.models import Session from django.contrib.sessions.models import Session
from zerver.lib.timestamp import datetime_to_timestamp from zerver.lib.timestamp import datetime_to_timestamp
@@ -528,6 +528,7 @@ class Message(models.Model):
sender_realm_domain = self.sender.realm.domain sender_realm_domain = self.sender.realm.domain
sender_full_name = self.sender.full_name sender_full_name = self.sender.full_name
sender_short_name = self.sender.short_name sender_short_name = self.sender.short_name
sender_avatar_source = self.sender.avatar_source
sending_client_name = self.sending_client.name sending_client_name = self.sending_client.name
sender_id = self.sender.id sender_id = self.sender.id
recipient = self.recipient recipient = self.recipient
@@ -535,6 +536,8 @@ class Message(models.Model):
recipient_type = recipient.type recipient_type = recipient.type
recipient_type_id = recipient.type_id recipient_type_id = recipient.type_id
avatar_url = get_avatar_url(sender_avatar_source, sender_email)
display_recipient = get_display_recipient_by_id( display_recipient = get_display_recipient_by_id(
recipient_id, recipient_id,
recipient_type, recipient_type,
@@ -571,7 +574,7 @@ class Message(models.Model):
subject = subject, subject = subject,
timestamp = datetime_to_timestamp(pub_date), timestamp = datetime_to_timestamp(pub_date),
gravatar_hash = gravatar_hash(sender_email), # Deprecated June 2013 gravatar_hash = gravatar_hash(sender_email), # Deprecated June 2013
avatar_url = avatar_url(self.sender), avatar_url = avatar_url,
client = sending_client_name) client = sending_client_name)
obj['subject_links'] = bugdown.subject_links(sender_realm_domain.lower(), subject) obj['subject_links'] = bugdown.subject_links(sender_realm_domain.lower(), subject)