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 -*- | # -*- 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.db import models |  | ||||||
| 
 | 
 | ||||||
| from models import Prednaska, Seznam, STAV_NAVRH | from models import Prednaska, Seznam, STAV_NAVRH | ||||||
| from seminar.models import Soustredeni | from seminar.models import Soustredeni | ||||||
|  | from django.utils.safestring import mark_safe | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| 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, instance): | ||||||
| #        models.TextField: {'widget': forms.TextInput}, |         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): | 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 | ||||||
|  |         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))) |         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í" |     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