From 4a52ab2d736a0b5e05779bd3e7024199da10162d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C4=9Bj=20Koci=C3=A1n?= Date: Sat, 18 Feb 2017 21:50:14 +0100 Subject: [PATCH 1/2] =?UTF-8?q?Seznam=20p=C5=99edn=C3=A1=C5=A1ek:=20lep?= =?UTF-8?q?=C5=A1=C3=AD=20inline=20p=C5=99edn=C3=A1=C5=A1ky?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- prednasky/admin.py | 102 ++++++++++++++++++++++++++++++--------------- 1 file changed, 69 insertions(+), 33 deletions(-) diff --git a/prednasky/admin.py b/prednasky/admin.py index a1d0e63c..1e5c5889 100644 --- a/prednasky/admin.py +++ b/prednasky/admin.py @@ -1,59 +1,95 @@ # -*- coding: utf-8 -*- from django.contrib import admin from django.contrib import messages -from django import forms from reversion.admin import VersionAdmin -from autocomplete_light import shortcuts as autocomplete_light -from django.db import models from models import Prednaska, Seznam, STAV_NAVRH from seminar.models import Soustredeni +from django.utils.safestring import mark_safe + class Seznam_PrednaskaInline(admin.TabularInline): -# form = autocomplete_light.modelform_factory(Prednaska, autocomplete_fields=['nazev'], fields=['nazev']) model = Prednaska.seznamy.through -# fields = ['nazev', 'org', 'obor' ] -# extra = 0 -# formfield_overrides = { -# models.TextField: {'widget': forms.TextInput}, -# } + extra = 0 + + def prednaska__nazev(self, instance): + return mark_safe( + u"{}".format( + instance.prednaska.id, + instance.prednaska.nazev + ) + ) + + def prednaska__popis(self, instance): + return instance.prednaska.popis + + def prednaska__anotace(self, instance): + return instance.prednaska.anotace + + def prednaska__org(self, instance): + return instance.prednaska.org + + def prednaska__obor(self, instance): + return instance.prednaska.obor + + prednaska__nazev.short_description = u'Přednáška' + prednaska__popis.short_description = u'Popis pro orgy' + prednaska__anotace.short_description = u'Anotace' + prednaska__org.short_description = u'Org' + prednaska__obor.short_description = u'Obor' + + readonly_fields = [ + 'prednaska__nazev', + 'prednaska__obor', + 'prednaska__org', + 'prednaska__popis', + 'prednaska__anotace', + ] + exclude = ['prednaska'] + + def has_add_permission(self, req): return False -# def get_queryset(self, request): -# qs = super(Seznam_PrednaskaInline, self).get_queryset(request) -# return qs.select_related('seznam', 'prednaska') class SeznamAdmin(VersionAdmin): - list_display = ['soustredeni','stav'] - inlines = [Seznam_PrednaskaInline] + list_display = ['soustredeni', 'stav'] + inlines = [Seznam_PrednaskaInline] -admin.site.register(Seznam,SeznamAdmin) +admin.site.register(Seznam, SeznamAdmin) class PrednaskaAdmin(VersionAdmin): list_display = ['nazev', 'org', 'obor'] - list_filter = ['org','obor'] + list_filter = ['org', 'obor'] search_fields = [] - + filter_horizontal = ('seznamy', ) + actions = ['move_to_soustredeni'] - def move_to_soustredeni(self,request,queryset): + def move_to_soustredeni(self, request, queryset): sous = Soustredeni.objects.first() - seznam = Seznam.objects.filter(soustredeni=sous,stav=STAV_NAVRH) - if len(seznam) == 0: - self.message_user(request,u"Není definován seznam pro aktuální soustředění, nic se neprovedlo",messages.ERROR) - return - seznam = seznam[0] - for prednaska in queryset: - prednaska.seznamy.add(seznam) - prednaska.save() - - self.message_user(request,u"Vybrané přednášky ({}) přidány jako návrhy na nejbližší soustředění".format(len(queryset))) - - move_to_soustredeni.short_description=u"Přidat přednášky do návrhu na nejbližší soustředění" - + seznam = Seznam.objects.filter(soustredeni=sous, stav=STAV_NAVRH) + if len(seznam) == 0: + self.message_user( + request, + u"Není definován seznam pro aktuální soustředění, " + u"nic se neprovedlo", + messages.ERROR + ) + return + seznam = seznam[0] + for prednaska in queryset: + prednaska.seznamy.add(seznam) + prednaska.save() + self.message_user( + request, + u"Vybrané přednášky ({}) přidány jako návrhy na nejbližší " + u"soustředění".format(len(queryset)) + ) - + move_to_soustredeni.short_description = ( + u"Přidat přednášky do návrhu na nejbližší soustředění" + ) -admin.site.register(Prednaska,PrednaskaAdmin) +admin.site.register(Prednaska, PrednaskaAdmin) From deb36ea7a170768d0305a6afec7aa2af993db304 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C4=9Bj=20Koci=C3=A1n?= Date: Sat, 18 Feb 2017 22:32:52 +0100 Subject: [PATCH 2/2] =?UTF-8?q?Seznam=20p=C5=99edn=C3=A1=C5=A1ek:=20u?= =?UTF-8?q?=C5=BE=C5=A1=C3=AD=20popis=20a=20escapov=C3=A1n=C3=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- prednasky/admin.py | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/prednasky/admin.py b/prednasky/admin.py index 1e5c5889..a9b94ee0 100644 --- a/prednasky/admin.py +++ b/prednasky/admin.py @@ -2,35 +2,40 @@ from django.contrib import admin from django.contrib import messages from reversion.admin import VersionAdmin +from django.utils.safestring import mark_safe +from django.utils.html import escape from models import Prednaska, Seznam, STAV_NAVRH from seminar.models import Soustredeni -from django.utils.safestring import mark_safe class Seznam_PrednaskaInline(admin.TabularInline): model = Prednaska.seznamy.through extra = 0 - def prednaska__nazev(self, instance): + def prednaska__nazev(self, obj): return mark_safe( u"{}".format( - instance.prednaska.id, - instance.prednaska.nazev + obj.prednaska.id, + escape(obj.prednaska.nazev) ) ) - def prednaska__popis(self, instance): - return instance.prednaska.popis + def prednaska__popis(self, obj): + return mark_safe( + u"
{}
".format( + escape(obj.prednaska.popis) + ) + ) - def prednaska__anotace(self, instance): - return instance.prednaska.anotace + def prednaska__anotace(self, obj): + return obj.prednaska.anotace - def prednaska__org(self, instance): - return instance.prednaska.org + def prednaska__org(self, obj): + return obj.prednaska.org - def prednaska__obor(self, instance): - return instance.prednaska.obor + def prednaska__obor(self, obj): + return obj.prednaska.obor prednaska__nazev.short_description = u'Přednáška' prednaska__popis.short_description = u'Popis pro orgy'