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

"""
from django.db import models
from django.db.models import Q

from codelist.models import KonovaCode
from codelist.settings import CODELIST_BIOTOPES_ID, CODELIST_BIOTOPES_EXTRA_CODES_ID
from compensation.managers import CompensationStateManager
from konova.models import UuidModel
from konova.utils.message_templates import COMPENSATION_STATE_REMOVED


class CompensationState(UuidModel):
    """
    Compensations must define the state of an area before and after the compensation.
    """
    biotope_type = models.ForeignKey(
        KonovaCode,
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
        limit_choices_to={
            "code_lists__in": [CODELIST_BIOTOPES_ID],
            "is_selectable": True,
            "is_archived": False,
        },
        related_name='+',
    )
    biotope_type_details = models.ManyToManyField(
        KonovaCode,
        blank=True,
        limit_choices_to={
            "code_lists__in": [CODELIST_BIOTOPES_EXTRA_CODES_ID],
            "is_selectable": True,
            "is_archived": False,
        },
        related_name='+',
    )
    surface = models.FloatField()

    objects = CompensationStateManager()

    def __str__(self):
        return f"{self.biotope_type} | {self.surface} m²"