# -*- coding: utf-8 -*-

from autocomplete_light import shortcuts as autocomplete_light

from .models import Obrazek, Galerie
from .views import cesta_od_korene


class ObrazekAutocomplete(autocomplete_light.AutocompleteModelBase):

    model = Obrazek
    search_fields = ['nazev', 'popis']
    split_words = True
    limit_choices = 15
    attrs = {
        # This will set the input placeholder attribute:
        'placeholder': u'Obrázek',
        # This will set the yourlabs.Autocomplete.minimumCharacters
        # options, the naming conversion is handled by jQuery
        'data-autocomplete-minimum-characters': 1,
    }

    choice_html_format = '''
        <span class="block" data-value="{}">
            <span class="block">
                {}
                <span class="block">{}</span>
            </span>
        </span>
    '''

    def choice_label(self, obrazek):
        cesta = "/".join(g.nazev for g in cesta_od_korene(obrazek.galerie))
        popis = "{}<br>".format(obrazek.popis) if obrazek.popis else ""
        return '{}<br>{}{}'.format(obrazek.nazev, popis, cesta)

    def choice_html(self, obrazek):
        """Vrátí kus html i s obrázkem, které se pak ukazuje v nabídce"""
        return self.choice_html_format.format(self.choice_value(obrazek),
            obrazek.obrazek_maly_tag(), self.choice_label(obrazek))

    widget_attrs={
        'data-widget-maximum-values': 15,
        'class': 'modern-style',
    }

autocomplete_light.register(ObrazekAutocomplete)