6
0

project.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import uuid
  2. from django.conf import settings
  3. from django.contrib.auth.models import User
  4. from django.db import models
  5. from pycs_api.models import base
  6. from pycs_api.models.label_provider import LabelProvider
  7. from pycs_api.models.model import Model
  8. def new_root_folder():
  9. return f"{settings.PROJECTS_DIR}/{uuid.uuid4()}"
  10. class Project(base.BaseModel):
  11. user = models.ForeignKey(
  12. User,
  13. on_delete=models.CASCADE,
  14. related_name="projects",
  15. related_query_name="project",
  16. )
  17. description = models.TextField()
  18. created = models.DateTimeField(auto_now_add=True)
  19. model = models.ForeignKey(
  20. Model,
  21. null=True,
  22. blank=True,
  23. on_delete=models.SET_NULL
  24. )
  25. label_provider = models.ForeignKey(
  26. LabelProvider,
  27. null=True,
  28. blank=True,
  29. on_delete=models.SET_NULL
  30. )
  31. root_folder = models.CharField(max_length=255,
  32. default=new_root_folder,
  33. unique=True)
  34. data_folder = models.CharField(max_length=255)
  35. external_data = models.BooleanField(default=False)
  36. serializer_fields = base.BaseModel.serializer_fields + [
  37. "description",
  38. "created",
  39. "model_id",
  40. "label_provider_id",
  41. "data_folder",
  42. "root_folder",
  43. ]