summaryrefslogtreecommitdiffstats
path: root/activities/middleware.py
diff options
context:
space:
mode:
authorMichael Manfre2022-12-15 02:50:54 -0500
committerGitHub2022-12-15 00:50:54 -0700
commitaf3142ac3adb0d1f31d160edcb6d076b293020b1 (patch)
tree73cfd5d447f6444602c2ff401399d567c673949b /activities/middleware.py
parent69f1b3168ac3f29fc4bafba0418769248b10062a (diff)
downloadtakahe-af3142ac3adb0d1f31d160edcb6d076b293020b1.tar.gz
takahe-af3142ac3adb0d1f31d160edcb6d076b293020b1.tar.bz2
takahe-af3142ac3adb0d1f31d160edcb6d076b293020b1.zip
Basic Emoji suppport (#157)
Diffstat (limited to 'activities/middleware.py')
-rw-r--r--activities/middleware.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/activities/middleware.py b/activities/middleware.py
new file mode 100644
index 0000000..1ed2219
--- /dev/null
+++ b/activities/middleware.py
@@ -0,0 +1,27 @@
+from time import time
+
+from activities.models import Emoji
+
+
+class EmojiDefaultsLoadingMiddleware:
+ """
+ Caches the default Emoji
+ """
+
+ refresh_interval: float = 30.0
+
+ def __init__(self, get_response):
+ self.get_response = get_response
+ self.loaded_ts: float = 0.0
+
+ def __call__(self, request):
+ # Allow test fixtures to force and lock the Emojis
+ if not getattr(Emoji, "__forced__", False):
+ if (
+ not getattr(Emoji, "locals", None)
+ or (time() - self.loaded_ts) >= self.refresh_interval
+ ):
+ Emoji.locals = Emoji.load_locals()
+ self.loaded_ts = time()
+ response = self.get_response(request)
+ return response