Skip to content

models

main.models ¤

Init in models.

Classes¤

Competency ¤

Bases: SluggedModel

Model for competencies.

Classes¤
Meta ¤

Meta options for Competency model.

CompetencyDomain ¤

Bases: SluggedModel

Model for competency domains.

Classes¤
Meta ¤

Meta options for CompetencyDomain model.

LearningResource ¤

Bases: SluggedModel

Model for learning resources.

NamedModel ¤

Bases: Model

Abstract base model with name and description fields.

Classes¤
Meta ¤

Meta options to define NamedModel as abstract.

Methods:¤
__str__() ¤

Return the name of the model instance.

Source code in main/models/framework_models.py
25
26
27
def __str__(self) -> str:
    """Return the name of the model instance."""
    return self.name
save(**kwargs) ¤

Override save method to run a full validation before saving.

Source code in main/models/framework_models.py
29
30
31
32
def save(self, **kwargs: Any) -> None:
    """Override save method to run a full validation before saving."""
    self.full_clean()
    super().save(**kwargs)

Provider ¤

Bases: SluggedModel

Model for providers.

Skill ¤

Bases: SluggedModel

Model for skills.

Classes¤
Meta ¤

Meta options for Skill model.

Methods:¤
__str__() ¤

Return the name of the skill and the competency.

Source code in main/models/framework_models.py
155
156
157
def __str__(self) -> str:
    """Return the name of the skill and the competency."""
    return self.name + " (" + self.competency.name + ")"

SkillLevel ¤

Bases: NamedModel

Model for skill levels.

SluggedModel ¤

Bases: NamedModel

Abstract base model with slug field.

Classes¤
Meta ¤

Meta options to define SluggedModel as abstract.

Methods:¤
save(**kwargs) ¤

Override save method to auto-generate slug from name if not provided.

Source code in main/models/framework_models.py
61
62
63
64
65
66
67
68
def save(self, **kwargs: Any) -> None:
    """Override save method to auto-generate slug from name if not provided."""
    if not self.slug:
        all_fields = [f.name for f in self._meta.get_fields()]
        all_fields.remove("slug")
        self.validate_unique(exclude=all_fields)

    super().save(**kwargs)
validate_unique(exclude=None) ¤

Validate the auto-generated slug field.

Source code in main/models/framework_models.py
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
def validate_unique(self, exclude: Collection[str] | None = None) -> None:
    """Validate the auto-generated slug field."""
    if not self.slug:
        self.slug = slugify(self.name)
    try:
        super().validate_unique(exclude=exclude)
    except ValidationError as e:
        message_dict = {k: "".join(v) for k, v in e.message_dict.items()}
        if "slug" in message_dict:
            message_dict["slug"] = (
                _(message_dict["slug"])
                + f" Auto-generated slug '{self.slug}' already exists"
            )

        raise ValidationError(message_dict) from e

ToolLanguageMethodology ¤

Bases: SluggedModel

Model for tools, languages and methodologies.

Classes¤
Kind ¤

Bases: TextChoices

Enumeration of Kind choices.

Meta ¤

Meta options for Tool model.

User ¤

Bases: AbstractUser

Custom user model for this project.

UserSkill ¤

Bases: Model

Model for mapping users to skills and skill levels.

Classes¤
Meta ¤

Meta options for UserSkill model.