67 lines
1.8 KiB
Python
67 lines
1.8 KiB
Python
from django.db import models
|
|
from wagtail.models import Page, Orderable
|
|
from modelcluster.fields import ParentalKey
|
|
from wagtail.admin.panels import FieldPanel, StreamFieldPanel, InlinePanel
|
|
|
|
|
|
class CompetencePage(Page):
|
|
"""This is the page where the competences and Fullfillment criterias are manged
|
|
For one Learning Path"""
|
|
|
|
|
|
content_panels = Page.content_panels + [
|
|
InlinePanel('competences', label="Competences"),
|
|
]
|
|
|
|
subpage_types = ['learnpath.Circle']
|
|
|
|
parent_page_types = ['learnpath.LearningPath']
|
|
|
|
|
|
class Meta:
|
|
verbose_name = "Learning Path"
|
|
|
|
def __str__(self):
|
|
return f"{self.title}"
|
|
|
|
|
|
class Competence(Orderable):
|
|
""" In VBV Terms this is a "Handlungskompetenz"""
|
|
category_short = models.CharField(max_length=3, default='')
|
|
name = models.CharField(max_length=2048)
|
|
|
|
|
|
competence_page = ParentalKey('learnpath.CompetencePage',
|
|
null=True,
|
|
blank=True,
|
|
on_delete=models.CASCADE,
|
|
related_name='competences',
|
|
)
|
|
|
|
|
|
|
|
def get_short_info(self):
|
|
return f"{self.category_short}{self.sort_order}"
|
|
|
|
def __str__(self):
|
|
return f"{self.get_short_info()}: {self.name}"
|
|
|
|
|
|
class Meta:
|
|
verbose_name = "Competence"
|
|
|
|
|
|
class FullfillmentCriteria(Orderable):
|
|
""" VBV Term Leistungskriterium"""
|
|
name = models.CharField(max_length=2048)
|
|
competence = models.ForeignKey(Competence, on_delete=models.CASCADE, null=True)
|
|
|
|
def get_short_info(self):
|
|
return f"{self.competence.get_short_info()}.{self.sort_order}"
|
|
|
|
def __str__(self):
|
|
return f"{self.get_short_info()}: {self.name}"
|
|
|
|
class Meta:
|
|
verbose_name = "Fullfillment Criteria"
|