from django.template.defaultfilters import slugify
from wagtail import blocks

from ..children import CardLinkWithHeadlineBlockMixin, PersonCustomPositionBlockMixin


class PeopleGroupBlockMixin(blocks.StructBlock):
    title = blocks.CharBlock(label="Titulek")
    slug = blocks.CharBlock(
        label="Slug skupiny",
        required=False,
        help_text="Není třeba vyplňovat, bude automaticky vyplněno",
    )

    # NOTE: Must (or at least should) be changed in mixed-in blocks.
    person_list = blocks.ListBlock(
        blocks.PageChooserBlock(label="Detail osoby"),
        label="Osoby",
        default=[],
        help_text="S pozicemi z jejich podstránek",
    )

    # NOTE: Must (or at least should) be changed in mixed-in blocks.
    person_list_with_custom_positions = blocks.ListBlock(
        PersonCustomPositionBlockMixin(),
        label="Osoby",
        default=[],
        help_text="S nastavitelnými pozicemi",
    )

    class Meta:
        icon = "group"
        group = "3. Ostatní"
        label = "Skupina osob"

    def get_prep_value(self, value):
        value = super().get_prep_value(value)
        value["slug"] = slugify(value["title"])
        return value


class TeamBlockMixin(blocks.StructBlock):
    title = blocks.CharBlock(label="Název sekce týmů")
    slug = blocks.CharBlock(
        label="Slug sekce",
        required=False,
        help_text="Není třeba vyplňovat, bude automaticky vyplněno",
    )
    # NOTE: Must (or at least should) be overrided in mixed-in classes
    team_list = blocks.ListBlock(
        CardLinkWithHeadlineBlockMixin(label="Karta týmu"),
        label="Týmy",
    )

    class Meta:
        icon = "group"
        label = "Týmy"

    def get_prep_value(self, value):
        value = super().get_prep_value(value)
        value["slug"] = slugify(value["title"])
        return value