50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
|
from django.db import models
|
||
|
from closuretree.models import ClosureModel
|
||
|
|
||
|
|
||
|
class Section(models.Model):
|
||
|
name = models.CharField(max_length=255)
|
||
|
|
||
|
def __str__(self):
|
||
|
return self.name
|
||
|
|
||
|
class Meta:
|
||
|
ordering = ('name',)
|
||
|
|
||
|
|
||
|
class Headline(models.Model):
|
||
|
name = models.CharField(max_length=255)
|
||
|
section = models.ForeignKey(Section, null=True, blank=True)
|
||
|
|
||
|
def __str__(self):
|
||
|
return self.name
|
||
|
|
||
|
|
||
|
class Goal(ClosureModel):
|
||
|
name = models.CharField(max_length=255, unique=True)
|
||
|
parent = models.ForeignKey('self', related_name='children', null=True, blank=True)
|
||
|
acronym = models.CharField(max_length=10, blank=True, null=True)
|
||
|
overview = models.TextField(max_length=2000, null=True, blank=True)
|
||
|
order = models.IntegerField(blank=True, null=True)
|
||
|
headline = models.ForeignKey(Headline, blank=True, null=True)
|
||
|
|
||
|
def __str__(self):
|
||
|
return self.name
|
||
|
|
||
|
|
||
|
class Standard(ClosureModel):
|
||
|
name = models.CharField(max_length=255)
|
||
|
parent = models.ForeignKey('self', related_name='children', null=True, blank=True)
|
||
|
goal = models.ForeignKey(Goal, related_name='standards')
|
||
|
|
||
|
@property
|
||
|
def goal_acronym(self):
|
||
|
return self.goal.get_root().name
|
||
|
|
||
|
@property
|
||
|
def structure(self):
|
||
|
return '.'.join([x.order if x.order else x.name for x in self.goal.get_ancestors()])
|
||
|
|
||
|
def __str__(self):
|
||
|
return self.name
|