max/max/routes/favicon.py
Finn Stutzenstein add153d8a6 More work
2022-01-22 18:37:56 +01:00

30 lines
882 B
Python

import os
import random
from flask import current_app, send_from_directory
from max.permissions import AllowAnyAccess
from max.views import BaseView
FAVICON_FOLDER = "private_static/favicons"
STATE_FAVICON_ATTR = "available_favicons"
class Favicon(AllowAnyAccess, BaseView):
_state = {}
def get(self):
random_favicon = self.get_random_favicon_filename()
return send_from_directory(FAVICON_FOLDER, random_favicon, add_etags=False)
def ensure_favicons(self):
if STATE_FAVICON_ATTR not in self._state:
directory = os.fspath(FAVICON_FOLDER)
directory = os.path.join(current_app.root_path, directory)
self._state[STATE_FAVICON_ATTR] = [a for a in os.listdir(directory)]
def get_random_favicon_filename(self):
self.ensure_favicons()
return random.choice(self._state[STATE_FAVICON_ATTR])