Merge branch 'matej-seznam-prednasek-inline'
This commit is contained in:
		
						commit
						e06f1f5aaf
					
				
					 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
	
	 Matěj Kocián
						Matěj Kocián