Skip to content

models

Task

Bases: TimeStampMixin

Source code in backend/tasks/models.py
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
class Task(TimeStampMixin):
    STATES = (
        (TaskState.PENDING, 'PENDING'),
        (TaskState.STARTED, 'STARTED'),
        (TaskState.RETRY, 'RETRY'),
        (TaskState.FAILURE, 'FAILURE'),
        (TaskState.SUCCESS, 'SUCCESS'),
    )

    task_id = models.UUIDField(primary_key=True)
    state = models.CharField(choices=STATES, default=TaskState.PENDING, max_length=255)
    object_id = models.UUIDField(null=True)
    content_object = GenericForeignKey()
    content_type = models.ForeignKey(ContentType, null=True, on_delete=models.SET_NULL)
    name = models.CharField(max_length=255)
    creator = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True)
    """The user who started the task."""

    objects = TaskManager()

    def __str__(self):
        return '%s: %s' % (self.task_id, dict(self.STATES)[self.state])

    @property
    def result(self):
        return ModelAsyncResult(self.task_id)

    @property
    def short_id(self):
        return str(self.task_id)[:6]

    def delete(self, using=None, keep_parents=False):
        return super().delete(using, keep_parents)

    def can_view(self, user: User):
        return user.is_superuser or self.creator == user or (
            self.content_object and self.content_object.can_view(user)
        )

creator = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True) class-attribute instance-attribute

The user who started the task.