Seznam přednášek: lepší inline přednášky
This commit is contained in:
parent
f498c0303a
commit
4a52ab2d73
1 changed files with 70 additions and 34 deletions
|
@ -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"<a href='/admin/prednasky/prednaska/{}'>{}</a>".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)))
|
||||
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()
|
||||
|
||||
move_to_soustredeni.short_description=u"Přidat přednášky do návrhu na nejbližší soustředění"
|
||||
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)
|
||||
|
|
Loading…
Reference in a new issue