import base64
import datetime
+import hashlib
import hmac
import json
import ldap
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
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):