2025-12-07 15:23:22 +00:00
|
|
|
from django.db.models import (
|
|
|
|
|
CASCADE,
|
|
|
|
|
CharField,
|
|
|
|
|
FileField,
|
|
|
|
|
ForeignKey,
|
|
|
|
|
UUIDField,
|
|
|
|
|
Model,
|
|
|
|
|
TextField,
|
|
|
|
|
)
|
|
|
|
|
from uuid import uuid4
|
2025-11-18 18:30:10 +00:00
|
|
|
|
2025-12-07 15:23:22 +00:00
|
|
|
from apps.users.models import TimeStampMixin, User
|
2025-11-19 21:44:18 +00:00
|
|
|
|
|
|
|
|
|
2025-12-07 15:23:22 +00:00
|
|
|
class Domain(Model):
|
2025-11-19 21:44:18 +00:00
|
|
|
|
2025-12-07 15:23:22 +00:00
|
|
|
name = CharField(max_length = 255, unique = True)
|
|
|
|
|
uuid = UUIDField(default = uuid4, editable = False, unique = True)
|
|
|
|
|
description = TextField(blank = True, default = "")
|
|
|
|
|
|
|
|
|
|
def __str__(self) -> str:
|
2025-11-19 21:44:18 +00:00
|
|
|
return self.name
|
|
|
|
|
|
2025-12-07 15:23:22 +00:00
|
|
|
class Organisation(TimeStampMixin, Model):
|
|
|
|
|
|
|
|
|
|
name = CharField(max_length = 255, unique = True)
|
|
|
|
|
uuid = UUIDField(default = uuid4, editable = False, unique = True)
|
|
|
|
|
managers = ForeignKey(User, on_delete = CASCADE, related_name = "managed_organisations")
|
|
|
|
|
employees = ForeignKey(User, on_delete = CASCADE, related_name = "organisations")
|
|
|
|
|
domains = ForeignKey(Domain, on_delete = CASCADE, related_name = "organisations")
|
|
|
|
|
|
|
|
|
|
def __str__(self) -> str:
|
|
|
|
|
return self.name
|
2025-11-19 21:44:18 +00:00
|
|
|
|
2025-12-07 15:23:22 +00:00
|
|
|
class Dataset(TimeStampMixin, Model):
|
2025-11-19 21:44:18 +00:00
|
|
|
|
2025-12-07 15:23:22 +00:00
|
|
|
domain = ForeignKey(Domain, on_delete = CASCADE, related_name = "datasets")
|
|
|
|
|
name = CharField(max_length = 255)
|
|
|
|
|
uuid = UUIDField(default = uuid4, editable = False, unique = True)
|
|
|
|
|
description = TextField(blank = True, default = "")
|
|
|
|
|
created_by = ForeignKey(User, on_delete = CASCADE, related_name = "created_datasets")
|
|
|
|
|
datafile = FileField(upload_to = "datasets/")
|
2025-11-19 21:44:18 +00:00
|
|
|
|
2025-12-07 15:23:22 +00:00
|
|
|
def __str__(self) -> str:
|
2025-11-19 21:44:18 +00:00
|
|
|
return f"{self.name} ({self.domain.name})"
|