* dev: remove len for empty comparison * dev: using in instead of multiple ors * dev: assign expression to empty variables * dev: use f-string * dev: remove list comprehension and use generators * dev: remove assert from paginator * dev: use is for identity comparison with singleton * dev: remove unnecessary else statements * dev: fix does not exists error for both project and workspace * dev: remove reimports * dev: iterate a dictionary * dev: remove unused commented code * dev: remove redefinition * dev: remove unused imports * dev: remove unused imports * dev: remove unnecessary f strings * dev: remove unused variables * dev: use literal structure to create the data structure * dev: add empty lines at the end of the file * dev: remove user middleware * dev: remove unnecessary default None
56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
import uuid
|
|
|
|
# Python imports
|
|
from uuid import uuid4
|
|
|
|
# Django imports
|
|
from django.db import models
|
|
from django.conf import settings
|
|
from django.contrib.postgres.fields import ArrayField
|
|
|
|
# Module imports
|
|
from . import BaseModel
|
|
|
|
def generate_token():
|
|
return uuid4().hex
|
|
|
|
class ExporterHistory(BaseModel):
|
|
workspace = models.ForeignKey(
|
|
"db.WorkSpace", on_delete=models.CASCADE, related_name="workspace_exporters"
|
|
)
|
|
project = ArrayField(models.UUIDField(default=uuid.uuid4), blank=True, null=True)
|
|
provider = models.CharField(
|
|
max_length=50,
|
|
choices=(
|
|
("json", "json"),
|
|
("csv", "csv"),
|
|
("xlsx", "xlsx"),
|
|
),
|
|
)
|
|
status = models.CharField(
|
|
max_length=50,
|
|
choices=(
|
|
("queued", "Queued"),
|
|
("processing", "Processing"),
|
|
("completed", "Completed"),
|
|
("failed", "Failed"),
|
|
),
|
|
default="queued",
|
|
)
|
|
reason = models.TextField(blank=True)
|
|
key = models.TextField(blank=True)
|
|
url = models.URLField(max_length=800, blank=True, null=True)
|
|
token = models.CharField(max_length=255, default=generate_token, unique=True)
|
|
initiated_by = models.ForeignKey(
|
|
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="workspace_exporters"
|
|
)
|
|
|
|
class Meta:
|
|
verbose_name = "Exporter"
|
|
verbose_name_plural = "Exporters"
|
|
db_table = "exporters"
|
|
ordering = ("-created_at",)
|
|
|
|
def __str__(self):
|
|
"""Return name of the service"""
|
|
return f"{self.provider} <{self.workspace.name}>"
|