Matěj Kocián
8 years ago
1 changed files with 74 additions and 33 deletions
@ -1,59 +1,100 @@ |
|||||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||||
from django.contrib import admin |
from django.contrib import admin |
||||
from django.contrib import messages |
from django.contrib import messages |
||||
from django import forms |
|
||||
from reversion.admin import VersionAdmin |
from reversion.admin import VersionAdmin |
||||
from autocomplete_light import shortcuts as autocomplete_light |
from django.utils.safestring import mark_safe |
||||
from django.db import models |
from django.utils.html import escape |
||||
|
|
||||
from models import Prednaska, Seznam, STAV_NAVRH |
from models import Prednaska, Seznam, STAV_NAVRH |
||||
from seminar.models import Soustredeni |
from seminar.models import Soustredeni |
||||
|
|
||||
|
|
||||
class Seznam_PrednaskaInline(admin.TabularInline): |
class Seznam_PrednaskaInline(admin.TabularInline): |
||||
# form = autocomplete_light.modelform_factory(Prednaska, autocomplete_fields=['nazev'], fields=['nazev']) |
|
||||
model = Prednaska.seznamy.through |
model = Prednaska.seznamy.through |
||||
# fields = ['nazev', 'org', 'obor' ] |
extra = 0 |
||||
# extra = 0 |
|
||||
# formfield_overrides = { |
def prednaska__nazev(self, obj): |
||||
# models.TextField: {'widget': forms.TextInput}, |
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 |
||||
|
|
||||
# def get_queryset(self, request): |
|
||||
# qs = super(Seznam_PrednaskaInline, self).get_queryset(request) |
|
||||
# return qs.select_related('seznam', 'prednaska') |
|
||||
|
|
||||
class SeznamAdmin(VersionAdmin): |
class SeznamAdmin(VersionAdmin): |
||||
list_display = ['soustredeni','stav'] |
list_display = ['soustredeni', 'stav'] |
||||
inlines = [Seznam_PrednaskaInline] |
inlines = [Seznam_PrednaskaInline] |
||||
|
|
||||
admin.site.register(Seznam,SeznamAdmin) |
admin.site.register(Seznam, SeznamAdmin) |
||||
|
|
||||
|
|
||||
class PrednaskaAdmin(VersionAdmin): |
class PrednaskaAdmin(VersionAdmin): |
||||
list_display = ['nazev', 'org', 'obor'] |
list_display = ['nazev', 'org', 'obor'] |
||||
list_filter = ['org','obor'] |
list_filter = ['org', 'obor'] |
||||
search_fields = [] |
search_fields = [] |
||||
|
filter_horizontal = ('seznamy', ) |
||||
|
|
||||
actions = ['move_to_soustredeni'] |
actions = ['move_to_soustredeni'] |
||||
|
|
||||
def move_to_soustredeni(self,request,queryset): |
def move_to_soustredeni(self, request, queryset): |
||||
sous = Soustredeni.objects.first() |
sous = Soustredeni.objects.first() |
||||
seznam = Seznam.objects.filter(soustredeni=sous,stav=STAV_NAVRH) |
seznam = Seznam.objects.filter(soustredeni=sous, stav=STAV_NAVRH) |
||||
if len(seznam) == 0: |
if len(seznam) == 0: |
||||
self.message_user(request,u"Není definován seznam pro aktuální soustředění, nic se neprovedlo",messages.ERROR) |
self.message_user( |
||||
return |
request, |
||||
seznam = seznam[0] |
u"Není definován seznam pro aktuální soustředění, " |
||||
for prednaska in queryset: |
u"nic se neprovedlo", |
||||
prednaska.seznamy.add(seznam) |
messages.ERROR |
||||
prednaska.save() |
) |
||||
|
return |
||||
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[0] |
||||
|
for prednaska in queryset: |
||||
move_to_soustredeni.short_description=u"Přidat přednášky do návrhu na nejbližší soustředění" |
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) |
||||
|
Loading…
Reference in new issue