summaryrefslogtreecommitdiffstats
path: root/stator/views.py
diff options
context:
space:
mode:
authorAndrew Godwin2022-11-26 11:54:14 -0700
committerAndrew Godwin2022-11-26 11:54:14 -0700
commitdb88c733b4ea910cd37d97453d49b7b24f767dda (patch)
treeef28379e7726ee644c6c512c0dcafa0b28baa8e4 /stator/views.py
parentf20296bc1bdf18d4ebc711ab5c2bb957d7fd6e93 (diff)
downloadtakahe-db88c733b4ea910cd37d97453d49b7b24f767dda.tar.gz
takahe-db88c733b4ea910cd37d97453d49b7b24f767dda.tar.bz2
takahe-db88c733b4ea910cd37d97453d49b7b24f767dda.zip
The glorious return of the in-view runner
Diffstat (limited to 'stator/views.py')
-rw-r--r--stator/views.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/stator/views.py b/stator/views.py
new file mode 100644
index 0000000..df51e3d
--- /dev/null
+++ b/stator/views.py
@@ -0,0 +1,24 @@
+from django.conf import settings
+from django.http import HttpResponse, HttpResponseForbidden
+from django.views import View
+
+from stator.models import StatorModel
+from stator.runner import StatorRunner
+
+
+class RequestRunner(View):
+ """
+ Runs a Stator runner within a HTTP request.
+ For when you're on something serverless.
+ """
+
+ async def get(self, request):
+ # Check the token, if supplied
+ if not settings.STATOR_TOKEN:
+ return HttpResponseForbidden("No token set")
+ if request.GET.get("token") != settings.STATOR_TOKEN:
+ return HttpResponseForbidden("Invalid token")
+ # Run on all models
+ runner = StatorRunner(StatorModel.subclasses, run_for=2)
+ handled = await runner.run()
+ return HttpResponse(f"Handled {handled}")