From 969a05eb71b0a783139533f889c5a51a0f30a340 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 30 Oct 2019 11:18:46 +0000 Subject: [PATCH] people: Add hash to avatar This allows us to see the change immediately Signed-off-by: Michael Tremer --- src/backend/accounts.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/backend/accounts.py b/src/backend/accounts.py index 9e2049fd..63c99a6d 100644 --- a/src/backend/accounts.py +++ b/src/backend/accounts.py @@ -3,6 +3,7 @@ import base64 import datetime +import hashlib import hmac import json import ldap @@ -963,10 +964,10 @@ class Account(Object): return has_avatar def avatar_url(self, size=None): - url = "https://people.ipfire.org/users/%s.jpg" % self.uid + url = "https://people.ipfire.org/users/%s.jpg?h=%s" % (self.uid, self.avatar_hash) if size: - url += "?size=%s" % size + url += "&size=%s" % size return url @@ -994,12 +995,27 @@ class Account(Object): return avatar + @property + def avatar_hash(self): + hash = self.memcache.get("accounts:%s:avatar-hash" % self.dn) + if not hash: + h = hashlib.new("md5") + h.update(self.get_avatar() or b"") + hash = h.hexdigest()[:7] + + self.memcache.set("accounts:%s:avatar-hash" % self.dn, hash, 86400) + + return hash + def upload_avatar(self, avatar): self._set("jpegPhoto", avatar) # Delete cached avatar status self.memcache.delete("accounts:%s:has-avatar" % self.uid) + # Delete avatar hash + self.memcache.delete("accounts:%s:avatar-hash" % self.uid) + class StopForumSpam(Object): def init(self, uid, email, address): -- 2.47.3