Web M&M
https://mam.matfyz.cz
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.5 KiB
49 lines
1.5 KiB
# -*- coding: utf-8 -*-
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
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)
|
|
|