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.
100 lines
2.8 KiB
100 lines
2.8 KiB
# -*- coding: utf-8 -*-
|
|
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
|
|
|
|
|
|
class Seznam_PrednaskaInline(admin.TabularInline):
|
|
model = Prednaska.seznamy.through
|
|
extra = 0
|
|
|
|
def prednaska__nazev(self, obj):
|
|
return mark_safe(
|
|
u"<a href='/admin/prednasky/prednaska/{}'>{}</a>".format(
|
|
obj.prednaska.id,
|
|
escape(obj.prednaska.nazev)
|
|
)
|
|
)
|
|
|
|
def prednaska__popis(self, obj):
|
|
return mark_safe(
|
|
u"<div style='width: 200px'>{}</div>".format(
|
|
escape(obj.prednaska.popis)
|
|
)
|
|
)
|
|
|
|
def prednaska__anotace(self, obj):
|
|
return obj.prednaska.anotace
|
|
|
|
def prednaska__org(self, obj):
|
|
return obj.prednaska.org
|
|
|
|
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'
|
|
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
|
|
|
|
|
|
class SeznamAdmin(VersionAdmin):
|
|
list_display = ['soustredeni', 'stav']
|
|
inlines = [Seznam_PrednaskaInline]
|
|
|
|
admin.site.register(Seznam, SeznamAdmin)
|
|
|
|
|
|
class PrednaskaAdmin(VersionAdmin):
|
|
list_display = ['nazev', 'org', 'obor']
|
|
list_filter = ['org', 'obor']
|
|
search_fields = []
|
|
filter_horizontal = ('seznamy', )
|
|
|
|
actions = ['move_to_soustredeni']
|
|
|
|
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í, "
|
|
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)
|
|
|