]> git.ipfire.org Git - ipfire.org.git/blame - src/web/handlers_accounts.py
Actually deliver a default avatar when none was uploaded
[ipfire.org.git] / src / web / handlers_accounts.py
CommitLineData
2cd9af74
MT
1#!/usr/bin/python
2
3import logging
4import tornado.web
5
f6ed3d4d 6from . import handlers_base as base
2cd9af74 7
f6ed3d4d 8class AccountsAvatarHandler(base.BaseHandler):
2cd9af74
MT
9 def get(self, who):
10 # Get the desired size of the avatar file
11 size = self.get_argument("size", 0)
12
13 try:
14 size = int(size)
15 except (TypeError, ValueError):
16 size = None
17
f6ed3d4d 18 logging.debug("Querying for avatar of %s" % who)
2cd9af74 19
f6ed3d4d
MT
20 # Fetch user account
21 account = self.backend.accounts.get_by_uid(who)
22 if not account:
23 raise tornado.web.HTTPError(404)
2cd9af74 24
f6ed3d4d
MT
25 # Allow downstream to cache this for 60 minutes
26 self.set_expires(3600)
2cd9af74 27
f6ed3d4d
MT
28 # Resize avatar
29 avatar = account.get_avatar(size)
2cd9af74 30
f6ed3d4d
MT
31 # If there is no avatar, we serve a default image
32 if not avatar:
c740fe40 33 return self.redirect("https://static.ipfire.org%s" % self.static_url("img/default-avatar.jpg"))
2cd9af74 34
f6ed3d4d 35 # Set headers about content
2cd9af74
MT
36 self.set_header("Content-Disposition", "inline; filename=\"%s.jpg\"" % who)
37 self.set_header("Content-Type", "image/jpeg")
38
f6ed3d4d 39 # Deliver payload
2cd9af74 40 self.finish(avatar)