Merge branch 'matej-seznam-prednasek-inline' into stable
This commit is contained in:
		
						commit
						b01c137d48
					
				
					 1 changed files with 77 additions and 36 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): |  | ||||||
| #    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}, |  | ||||||
| #    } |  | ||||||
| 
 | 
 | ||||||
| #    def get_queryset(self, request): | class Seznam_PrednaskaInline(admin.TabularInline): | ||||||
| #        qs = super(Seznam_PrednaskaInline, self).get_queryset(request) |     model = Prednaska.seznamy.through | ||||||
| #        return qs.select_related('seznam', 'prednaska') |     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): | 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: | ||||||
|  |             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