feat(v1): add basic backend and frontend
This commit is contained in:
53
backend/processing/models.py
Normal file
53
backend/processing/models.py
Normal file
@@ -0,0 +1,53 @@
|
||||
import uuid
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import models
|
||||
from django.utils import timezone
|
||||
|
||||
|
||||
class ImageSession(models.Model):
|
||||
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
||||
original_image = models.CharField(max_length=255)
|
||||
processed_image = models.CharField(max_length=255, blank=True)
|
||||
width = models.PositiveIntegerField()
|
||||
height = models.PositiveIntegerField()
|
||||
channels = models.PositiveSmallIntegerField()
|
||||
color_mode = models.CharField(max_length=16)
|
||||
original_histogram = models.JSONField(default=list)
|
||||
processed_histogram = models.JSONField(default=list, blank=True)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
expires_at = models.DateTimeField()
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if not self.expires_at:
|
||||
self.expires_at = timezone.now() + timezone.timedelta(hours=settings.IMAGE_SESSION_TTL_HOURS)
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
@property
|
||||
def expired(self):
|
||||
return timezone.now() >= self.expires_at
|
||||
|
||||
|
||||
class ProcessingJob(models.Model):
|
||||
STATUS_PENDING = "pending"
|
||||
STATUS_RUNNING = "running"
|
||||
STATUS_COMPLETE = "complete"
|
||||
STATUS_FAILED = "failed"
|
||||
|
||||
STATUS_CHOICES = [
|
||||
(STATUS_PENDING, "Pending"),
|
||||
(STATUS_RUNNING, "Running"),
|
||||
(STATUS_COMPLETE, "Complete"),
|
||||
(STATUS_FAILED, "Failed"),
|
||||
]
|
||||
|
||||
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
||||
operation = models.CharField(max_length=64)
|
||||
params = models.JSONField(default=dict, blank=True)
|
||||
status = models.CharField(max_length=16, choices=STATUS_CHOICES, default=STATUS_PENDING)
|
||||
progress = models.PositiveSmallIntegerField(default=0)
|
||||
result_image = models.CharField(max_length=255, blank=True)
|
||||
result_histogram = models.JSONField(default=list, blank=True)
|
||||
error = models.TextField(blank=True)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
updated_at = models.DateTimeField(auto_now=True)
|
||||
Reference in New Issue
Block a user