snapshot: modularize workflow model layer by responsibility
This commit is contained in:
49
backend/workflows/model_ops.py
Normal file
49
backend/workflows/model_ops.py
Normal file
@@ -0,0 +1,49 @@
|
||||
from django.conf import settings
|
||||
from django.db import models
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class AsyncTaskLog(models.Model):
|
||||
STATUS_CHOICES = [
|
||||
('started', _('Gestartet')),
|
||||
('succeeded', _('Erfolgreich')),
|
||||
('failed', _('Fehlgeschlagen')),
|
||||
]
|
||||
|
||||
task_name = models.CharField(max_length=255)
|
||||
task_id = models.CharField(max_length=255, blank=True)
|
||||
target_type = models.CharField(max_length=80, blank=True)
|
||||
target_id = models.PositiveIntegerField(null=True, blank=True)
|
||||
target_label = models.CharField(max_length=255, blank=True)
|
||||
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='started')
|
||||
error_message = models.TextField(blank=True)
|
||||
started_at = models.DateTimeField(auto_now_add=True)
|
||||
finished_at = models.DateTimeField(null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
ordering = ['-started_at', '-id']
|
||||
verbose_name = 'Async Task Log'
|
||||
verbose_name_plural = 'Async Task Logs'
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f'{self.task_name} | {self.status} | {self.target_label or self.target_type}'
|
||||
|
||||
|
||||
class AdminAuditLog(models.Model):
|
||||
actor = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True, on_delete=models.SET_NULL, related_name='admin_audit_logs')
|
||||
actor_display = models.CharField(max_length=255, blank=True)
|
||||
action = models.CharField(max_length=120)
|
||||
target_type = models.CharField(max_length=80, blank=True)
|
||||
target_id = models.PositiveIntegerField(null=True, blank=True)
|
||||
target_label = models.CharField(max_length=255, blank=True)
|
||||
details = models.JSONField(default=dict, blank=True)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
class Meta:
|
||||
ordering = ['-created_at', '-id']
|
||||
verbose_name = 'Admin Audit Log'
|
||||
verbose_name_plural = 'Admin Audit Logs'
|
||||
|
||||
def __str__(self) -> str:
|
||||
actor = self.actor_display or 'Unbekannt'
|
||||
return f'{self.created_at:%Y-%m-%d %H:%M} | {actor} | {self.action}'
|
||||
Reference in New Issue
Block a user