Coverage for backend/django/core/auxiliary/models/UploadSession.py: 100%
38 statements
« prev ^ index » next coverage.py v7.10.7, created at 2026-05-13 02:47 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2026-05-13 02:47 +0000
1from django.conf import settings
2from django.db import models
4from core.managers import AccessControlManager
5from flowsheetInternals.unitops.models import SimulationObject
8class UploadSessionPurpose(models.TextChoices):
9 ML_TRAINING_CSV = "ml_training_csv"
10 SCENARIO_CSV = "scenario_csv"
11 PINCH_UTILITY_CSV = "pinch_utility_csv"
14class UploadSessionStatus(models.TextChoices):
15 INITIATED = "initiated"
16 UPLOADING = "uploading"
17 COMPLETED = "completed"
18 ABORTED = "aborted"
19 FAILED = "failed"
20 EXPIRED = "expired"
23class UploadSession(models.Model):
24 created_by = models.ForeignKey(
25 settings.AUTH_USER_MODEL,
26 on_delete=models.CASCADE,
27 related_name="upload_sessions",
28 )
29 flowsheet = models.ForeignKey(
30 "Flowsheet",
31 on_delete=models.CASCADE,
32 related_name="upload_sessions",
33 )
34 scenario = models.ForeignKey(
35 "Scenario",
36 on_delete=models.CASCADE,
37 related_name="upload_sessions",
38 null=True,
39 blank=True,
40 )
41 simulationObject = models.ForeignKey(
42 SimulationObject,
43 on_delete=models.CASCADE,
44 related_name="upload_sessions",
45 null=True,
46 blank=True,
47 )
48 purpose = models.CharField(max_length=32, choices=UploadSessionPurpose.choices)
49 bucket = models.CharField(max_length=255)
50 object_key = models.CharField(max_length=1024, unique=True)
51 s3_upload_id = models.CharField(max_length=512)
52 original_filename = models.CharField(max_length=255)
53 content_type = models.CharField(max_length=255, blank=True, default="")
54 size_bytes = models.BigIntegerField()
55 status = models.CharField(
56 max_length=16,
57 choices=UploadSessionStatus.choices,
58 default=UploadSessionStatus.INITIATED,
59 )
60 csv_headers = models.JSONField(default=list, blank=True)
61 csv_delimiter = models.CharField(max_length=1, blank=True, default="")
62 csv_warnings = models.JSONField(default=list, blank=True)
63 csv_inspected_at = models.DateTimeField(null=True, blank=True)
64 created_at = models.DateTimeField(auto_now_add=True)
65 completed_at = models.DateTimeField(null=True, blank=True)
66 expires_at = models.DateTimeField(null=True, blank=True)
68 objects = AccessControlManager()
70 class Meta:
71 indexes = [
72 models.Index(fields=["purpose", "status"]),
73 models.Index(fields=["expires_at"]),
74 ]