44 lines
1.2 KiB
Python
44 lines
1.2 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, related_name='headlines')
|
|
acronym = models.CharField(max_length=10)
|
|
overview = models.TextField(max_length=2000, null=True, blank=True)
|
|
|
|
def __str__(self):
|
|
return '{} - {}'.format(self.acronym, self.name)
|
|
|
|
class Meta:
|
|
ordering = ('name',)
|
|
|
|
|
|
class Standard(ClosureModel):
|
|
name = models.CharField(max_length=255)
|
|
parent = models.ForeignKey('self', related_name='children', null=True, blank=True)
|
|
headline = models.ForeignKey(Headline, related_name='standards')
|
|
order = models.IntegerField()
|
|
|
|
@property
|
|
def structure(self):
|
|
return '.'.join([str(x.order) for x in self.get_ancestors()] + [str(self.order)])
|
|
|
|
def __str__(self):
|
|
return '{}.{}'.format(self.headline.acronym, self.structure)
|
|
|
|
class Meta:
|
|
ordering = ('headline__acronym',)
|
|
|