diff --git a/galerie/admin.py b/galerie/admin.py
index 4f95c951..1441ce09 100644
--- a/galerie/admin.py
+++ b/galerie/admin.py
@@ -3,6 +3,9 @@
from galerie.models import Obrazek, Galerie
from django.contrib import admin
from django.http import HttpResponseRedirect
+from django import forms
+from django.db import models
+import autocomplete_light
# akction
@@ -27,17 +30,25 @@ def prepnout_fotogalerii_do_org_rezimu(modeladmin, request, queryset):
'Přepnout do režimu úprav (zneveřejní galerii)'
class GalerieInline(admin.TabularInline):
- model = Obrazek
+ model = Obrazek
+ fields = ['obrazek_velky', 'nazev', 'popis', 'obrazek_maly_tag']
+ readonly_fields = ['nazev', 'obrazek_maly_tag']
+ formfield_overrides = {
+ models.TextField: {'widget': forms.TextInput},
+ }
class ObrazekAdmin(admin.ModelAdmin):
- list_display = ('obrazek_velky', 'nazev', 'popis')
+ list_display = ('obrazek_velky', 'nazev', 'popis', 'obrazek_maly_tag')
-class GalerieAdmin(admin.ModelAdmin):
- model = Galerie
- fields = ('zobrazit', 'nazev', 'titulni_obrazek', 'popis', 'galerie_up', 'soustredeni', 'poradi')
- list_display = ('nazev', 'pk', 'datum_zmeny', 'zobrazit', 'soustredeni')
- inlines = [GalerieInline]
- actions = [zverejnit_fotogalerii, prepnout_fotogalerii_do_org_rezimu]
+class GalerieAdmin(admin.ModelAdmin):
+ form = autocomplete_light.modelform_factory(Galerie, autocomplete_fields=['titulni_obrazek'], fields=['titulni_obrazek'])
+ model = Galerie
+ fields = ('zobrazit', 'nazev', 'titulni_obrazek', 'popis', 'galerie_up', 'soustredeni', 'poradi')
+ list_display = ('nazev', 'pk', 'poradi', 'datum_zmeny', 'zobrazit', 'soustredeni')
+ inlines = [GalerieInline]
+ actions = [zverejnit_fotogalerii, prepnout_fotogalerii_do_org_rezimu]
+ save_on_top = True
+ ordering = ['galerie_up__nazev', 'poradi']
admin.site.register(Obrazek, ObrazekAdmin)
admin.site.register(Galerie, GalerieAdmin)
diff --git a/galerie/autocomplete_light_registry.py b/galerie/autocomplete_light_registry.py
new file mode 100644
index 00000000..7b624d20
--- /dev/null
+++ b/galerie/autocomplete_light_registry.py
@@ -0,0 +1,49 @@
+# -*- coding: utf-8 -*-
+
+from __future__ import unicode_literals
+
+import 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 = '''
+
+
+ {}
+ {}
+
+
+ '''
+
+ def choice_label(self, obrazek):
+ cesta = "/".join(g.nazev for g in cesta_od_korene(obrazek.galerie))
+ popis = "{}
".format(obrazek.popis) if obrazek.popis else ""
+ return '{}
{}{}'.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)
diff --git a/galerie/models.py b/galerie/models.py
index 9f3b1478..4c08c4f2 100644
--- a/galerie/models.py
+++ b/galerie/models.py
@@ -56,6 +56,12 @@ class Obrazek(models.Model):
verbose_name = 'Obrázek'
verbose_name_plural = 'Obrázky'
ordering = ['nazev']
+
+ def obrazek_maly_tag(self):
+ return u''.format(self.obrazek_maly.url)
+ obrazek_maly_tag.short_description = "Náhled"
+ obrazek_maly_tag.allow_tags = True
+
class Galerie(models.Model):
diff --git a/seminar/templates/seminar/titulnistrana.html b/seminar/templates/seminar/titulnistrana.html
index c6c1a522..ae949d7e 100644
--- a/seminar/templates/seminar/titulnistrana.html
+++ b/seminar/templates/seminar/titulnistrana.html
@@ -22,23 +22,9 @@ M&M je korespondeční seminář. Několikrát do roka zdarma vydáváme ča
Do konce odeslání řešení zbývá:
{{ted|timesince:dead}}