"""
Author: Michel Peltriaux
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
Contact: michel.peltriaux@sgdnord.rlp.de
Created on: 15.11.21

"""
from django.db import models
from django.utils.translation import gettext_lazy as _

from konova.models import BaseResource


class DeadlineType(models.TextChoices):
    """
    Django 3.x way of handling enums for models
    """
    FINISHED = "finished", _("Finished")
    MAINTAIN = "maintain", _("Maintain")
    CONTROL = "control", _("Control")
    OTHER = "other", _("Other")


class Deadline(BaseResource):
    """
    Defines a deadline, which can be used to define dates with a semantic meaning
    """

    type = models.CharField(max_length=255, null=True, blank=True, choices=DeadlineType.choices)
    date = models.DateField(null=True, blank=True)
    comment = models.TextField(null=True, blank=True)

    def __str__(self):
        return self.type

    @property
    def type_humanized(self):
        """ Returns humanized version of enum

        Used for template rendering

        Returns:

        """
        choices = DeadlineType.choices
        for choice in choices:
            if choice[0] == self.type:
                return choice[1]
        return None
