from django.db.models import ( CASCADE, CharField, FileField, ForeignKey, UUIDField, Model, TextField, ) from uuid import uuid4 from apps.users.models import TimeStampMixin, User class Domain(Model): name = CharField(max_length = 255, unique = True) uuid = UUIDField(default = uuid4, editable = False, unique = True) description = TextField(blank = True, default = "") def __str__(self) -> str: return self.name 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 class Dataset(TimeStampMixin, Model): 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/") def __str__(self) -> str: return f"{self.name} ({self.domain.name})"