Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
This commit is contained in:
Marc 'risson' Schmitt
2025-03-12 18:07:55 +01:00
parent 677f04cab2
commit 9a536ee4b9
5 changed files with 56 additions and 6 deletions

View File

@ -1,3 +1,4 @@
from django.utils.translation import gettext_lazy as _
from enum import StrEnum, auto
from uuid import uuid4
import pgtrigger
@ -11,6 +12,35 @@ from authentik.tenants.models import Tenant
CHANNEL_PREFIX = "authentik.tasks"
# class Schedule(SerializerModel):
# id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
#
# name = models.TextField(editable=False)
# func = models.TextField(editable=False)
# args = models.TextField(editable=False)
# kwargs = models.TextField(editable=False)
#
# class Meta:
# verbose_name = _("Schedule")
# verbose_name_plural = _("Schedules")
# indexes = (
# models.Index(
# fields=(
# "name",
# "func",
# ),
# ),
# )
#
# def __str__(self):
# return self.name
#
# @property
# def serializer(self):
# # TODO: fixme
# pass
class ChannelIdentifier(StrEnum):
ENQUEUE = auto()
LOCK = auto()
@ -39,6 +69,8 @@ class Task(SerializerModel):
messages = models.JSONField(blank=True, null=True, editable=False)
class Meta:
verbose_name = _("Task")
verbose_name_plural = _("Tasks")
indexes = (models.Index(fields=("state", "mtime")),)
triggers = (
pgtrigger.Trigger(

18
authentik/tasks/tests.py Normal file
View File

@ -0,0 +1,18 @@
from dramatiq import Worker, get_broker
from django.test import TransactionTestCase
class TaskTestCase(TransactionTestCase):
def _pre_setup(self):
super()._pre_setup()
self.broker = get_broker()
self.broker.flush_all()
self.worker = Worker(self.broker, worker_timeout=100)
self.worker.start()
def _post_teardown(self):
self.worker.stop()
super()._post_teardown()