Files
n3wt-school/Back-End/Common/models.py
2025-05-18 15:42:21 +02:00

59 lines
1.8 KiB
Python

from django.db import models
class Domain(models.Model):
name = models.CharField(max_length=255)
cycle = models.IntegerField(choices=[(1, 'Cycle 1'), (2, 'Cycle 2'), (3, 'Cycle 3'), (4, 'Cycle 4')])
def __str__(self):
return f"{self.name} (Cycle {self.cycle})"
class Category(models.Model):
name = models.CharField(max_length=255)
domain = models.ForeignKey(Domain, on_delete=models.CASCADE, related_name='categories')
def __str__(self):
return self.name
class Competency(models.Model):
name = models.TextField()
end_of_cycle = models.BooleanField(default=False, null=True, blank=True)
level = models.CharField(max_length=50, null=True, blank=True)
category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='competencies')
establishments = models.ManyToManyField(
'Establishment.Establishment',
through='School.EstablishmentCompetency',
related_name='competencies',
blank=True
)
def __str__(self):
return self.name
class PaymentPlanType(models.Model):
code = models.CharField(max_length=50, unique=True)
label = models.CharField(max_length=255)
def __str__(self):
return self.label
class PaymentModeType(models.Model):
code = models.CharField(max_length=50, unique=True)
label = models.CharField(max_length=255)
def __str__(self):
return self.label
class Cycle(models.Model):
number = models.IntegerField(unique=True)
label = models.CharField(max_length=50)
def __str__(self):
return f"Cycle {self.number} - {self.label}"
class Level(models.Model):
name = models.CharField(max_length=50)
cycle = models.ForeignKey(Cycle, on_delete=models.CASCADE, related_name='levels')
def __str__(self):
return self.name