Fungujici verze spravy prednasek a hlasovani.
This commit is contained in:
		
							parent
							
								
									c803014e77
								
							
						
					
					
						commit
						0c67eccd92
					
				
					 7 changed files with 205 additions and 33 deletions
				
			
		|  | @ -1,16 +1,59 @@ | |||
| # -*- 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, Hlasovani | ||||
| from models import Prednaska, Seznam, STAV_NAVRH | ||||
| 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): | ||||
| #        qs = super(Seznam_PrednaskaInline, self).get_queryset(request) | ||||
| #        return qs.select_related('seznam', 'prednaska') | ||||
| 
 | ||||
| class SeznamAdmin(VersionAdmin): | ||||
|     list_display = ['soustredeni','stav'] | ||||
|     inlines = [Seznam_PrednaskaInline]    | ||||
| 
 | ||||
| admin.site.register(Seznam,SeznamAdmin) | ||||
| 
 | ||||
| admin.site.register(Hlasovani) | ||||
| 
 | ||||
| class PrednaskaAdmin(VersionAdmin): | ||||
| #     fieldsets = [ | ||||
| #        (None,              {'fields': ['pdf', 'cas', 'stran', 'nazev', 'komentar']}), | ||||
| #         ] | ||||
|      list_display = ['nazev', 'org', 'obor'] | ||||
|      list_filter = ['org','obor'] | ||||
|      search_fields = [] | ||||
|     list_display = ['nazev', 'org', 'obor'] | ||||
|     list_filter = ['org','obor'] | ||||
|     search_fields = [] | ||||
|      | ||||
|     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í, 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))) | ||||
| 
 | ||||
|     move_to_soustredeni.short_description=u"Přidat přednášky do návrhu na nejbližší soustředění" | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|      	  | ||||
| 
 | ||||
| 
 | ||||
| admin.site.register(Prednaska,PrednaskaAdmin) | ||||
|  |  | |||
							
								
								
									
										20
									
								
								prednasky/migrations/0006_hlasovani_seznam.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								prednasky/migrations/0006_hlasovani_seznam.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | |||
| # -*- coding: utf-8 -*- | ||||
| from __future__ import unicode_literals | ||||
| 
 | ||||
| from django.db import migrations, models | ||||
| 
 | ||||
| 
 | ||||
| class Migration(migrations.Migration): | ||||
| 
 | ||||
|     dependencies = [ | ||||
|         ('prednasky', '0005_auto_20160929_0153'), | ||||
|     ] | ||||
| 
 | ||||
|     operations = [ | ||||
|         migrations.AddField( | ||||
|             model_name='hlasovani', | ||||
|             name='seznam', | ||||
|             field=models.ForeignKey(default=1, to='prednasky.Seznam'), | ||||
|             preserve_default=False, | ||||
|         ), | ||||
|     ] | ||||
							
								
								
									
										19
									
								
								prednasky/migrations/0007_prednaska_seznamy.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								prednasky/migrations/0007_prednaska_seznamy.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| # -*- coding: utf-8 -*- | ||||
| from __future__ import unicode_literals | ||||
| 
 | ||||
| from django.db import migrations, models | ||||
| 
 | ||||
| 
 | ||||
| class Migration(migrations.Migration): | ||||
| 
 | ||||
|     dependencies = [ | ||||
|         ('prednasky', '0006_hlasovani_seznam'), | ||||
|     ] | ||||
| 
 | ||||
|     operations = [ | ||||
|         migrations.AddField( | ||||
|             model_name='prednaska', | ||||
|             name='seznamy', | ||||
|             field=models.ManyToManyField(to='prednasky.Seznam'), | ||||
|         ), | ||||
|     ] | ||||
							
								
								
									
										25
									
								
								prednasky/migrations/0008_auto_20160929_0225.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								prednasky/migrations/0008_auto_20160929_0225.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,25 @@ | |||
| # -*- coding: utf-8 -*- | ||||
| from __future__ import unicode_literals | ||||
| 
 | ||||
| from django.db import migrations, models | ||||
| 
 | ||||
| 
 | ||||
| class Migration(migrations.Migration): | ||||
| 
 | ||||
|     dependencies = [ | ||||
|         ('prednasky', '0007_prednaska_seznamy'), | ||||
|     ] | ||||
| 
 | ||||
|     operations = [ | ||||
|         migrations.RemoveField( | ||||
|             model_name='prednaska_seznam', | ||||
|             name='prednaska', | ||||
|         ), | ||||
|         migrations.RemoveField( | ||||
|             model_name='prednaska_seznam', | ||||
|             name='seznam', | ||||
|         ), | ||||
|         migrations.DeleteModel( | ||||
|             name='Prednaska_Seznam', | ||||
|         ), | ||||
|     ] | ||||
							
								
								
									
										49
									
								
								prednasky/migrations/0009_auto_20160929_0354.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								prednasky/migrations/0009_auto_20160929_0354.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,49 @@ | |||
| # -*- coding: utf-8 -*- | ||||
| from __future__ import unicode_literals | ||||
| 
 | ||||
| from django.db import migrations, models | ||||
| 
 | ||||
| 
 | ||||
| class Migration(migrations.Migration): | ||||
| 
 | ||||
|     dependencies = [ | ||||
|         ('prednasky', '0008_auto_20160929_0225'), | ||||
|     ] | ||||
| 
 | ||||
|     operations = [ | ||||
|         migrations.AlterField( | ||||
|             model_name='prednaska', | ||||
|             name='anotace', | ||||
|             field=models.TextField(help_text='Ve\u0159ejn\xe1 anotace v hlasov\xe1n\xed', null=True, verbose_name=b'Anotace'), | ||||
|         ), | ||||
|         migrations.AlterField( | ||||
|             model_name='prednaska', | ||||
|             name='klicova', | ||||
|             field=models.CharField(max_length=200, null=True, verbose_name='Kl\xed\u010dov\xe1 slova', blank=True), | ||||
|         ), | ||||
|         migrations.AlterField( | ||||
|             model_name='prednaska', | ||||
|             name='nazev', | ||||
|             field=models.CharField(max_length=300, verbose_name='N\xe1zev'), | ||||
|         ), | ||||
|         migrations.AlterField( | ||||
|             model_name='prednaska', | ||||
|             name='obor', | ||||
|             field=models.CharField(help_text='Podmno\u017eina MFIOB', max_length=5, verbose_name='Obor'), | ||||
|         ), | ||||
|         migrations.AlterField( | ||||
|             model_name='prednaska', | ||||
|             name='obtiznost', | ||||
|             field=models.IntegerField(verbose_name='Obt\xed\u017enost', choices=[(1, b'Lehk\xc3\xa1'), (2, b'St\xc5\x99edn\xc3\xad'), (3, b'T\xc4\x9b\xc5\xbek\xc3\xa1')]), | ||||
|         ), | ||||
|         migrations.AlterField( | ||||
|             model_name='prednaska', | ||||
|             name='popis', | ||||
|             field=models.TextField(help_text='Neve\u0159ejn\xfd popis pro ostatn\xed orgy', null=True, verbose_name='Popis pro orgy'), | ||||
|         ), | ||||
|         migrations.AlterField( | ||||
|             model_name='seznam', | ||||
|             name='stav', | ||||
|             field=models.IntegerField(default=1, verbose_name=b'Stav', choices=[(1, b'N\xc3\xa1vrh'), (2, b'Bude')]), | ||||
|         ), | ||||
|     ] | ||||
|  | @ -1,16 +1,22 @@ | |||
| # -*- coding: utf-8 -*- | ||||
| 
 | ||||
| from django.db import models | ||||
| from django.utils.encoding import python_2_unicode_compatible | ||||
| from django.utils.encoding import force_unicode | ||||
| 
 | ||||
| from seminar.models import Organizator,Soustredeni | ||||
| 
 | ||||
| CHOICES_STAV = ( | ||||
| (1, 'Návrh'), | ||||
| (2, 'Bude') | ||||
| STAV_NAVRH = 1 | ||||
| STAV_BUDE = 2 | ||||
| 
 | ||||
| 
 | ||||
| STAV_CHOICES = ( | ||||
| (STAV_NAVRH, 'Návrh'), | ||||
| (STAV_BUDE, 'Bude') | ||||
| ) | ||||
| 
 | ||||
| #class Seznam_old(models.Model): | ||||
| #	pass | ||||
| 
 | ||||
| @python_2_unicode_compatible | ||||
| class Seznam(models.Model): | ||||
|     class Meta: | ||||
|         db_table = 'prednasky_seznam' | ||||
|  | @ -20,7 +26,10 @@ class Seznam(models.Model): | |||
| 
 | ||||
|     id = models.AutoField(primary_key = True)  | ||||
|     soustredeni = models.ForeignKey(Soustredeni,null = True, default = None) | ||||
|     stav = models.IntegerField('Stav',choices=CHOICES_STAV,default = 2) | ||||
|     stav = models.IntegerField('Stav',choices=STAV_CHOICES,default = STAV_NAVRH) | ||||
| 
 | ||||
|     def __str__(self): | ||||
| 	return force_unicode(u"Seznam {}přednášek na {}".format(u"návrhů " if self.stav == STAV_NAVRH else "",self.soustredeni)) | ||||
| 
 | ||||
| 
 | ||||
| CHOICES_OBTIZNOST = ( | ||||
|  | @ -35,6 +44,7 @@ CHOICES_BODY = ( | |||
|         (1, '1'), | ||||
|         ) | ||||
| 
 | ||||
| @python_2_unicode_compatible | ||||
| class Prednaska(models.Model): | ||||
|     class Meta: | ||||
|         db_table = 'prednasky_prednaska' | ||||
|  | @ -43,25 +53,20 @@ class Prednaska(models.Model): | |||
|         ordering = ['org', 'nazev'] | ||||
| 
 | ||||
|     id = models.AutoField(primary_key = True)  | ||||
|     nazev = models.CharField('Název', max_length = 300) | ||||
|     nazev = models.CharField(u'Název', max_length = 300) | ||||
|     org = models.ForeignKey(Organizator)  | ||||
|     popis = models.TextField('Popis pro orgy',null = True,help_text = 'Neveřejný popis pro ostatní orgy') | ||||
|     anotace = models.TextField('Anotace',null = True, help_text = 'Veřejná anotace v hlasování') | ||||
|     obtiznost = models.IntegerField('Obtížnost', choices=CHOICES_OBTIZNOST) | ||||
|     obor = models.CharField('Obor', max_length = 5, help_text = 'Podmnožina MFIOB') | ||||
|     klicova = models.CharField('Klíčová slova', max_length = 200, null = True, blank = True) | ||||
| #    seznam = models.ForeignKey(Seznam_old) | ||||
|     popis = models.TextField(u'Popis pro orgy',null = True,help_text = u'Neveřejný popis pro ostatní orgy') | ||||
|     anotace = models.TextField('Anotace',null = True, help_text = u'Veřejná anotace v hlasování') | ||||
|     obtiznost = models.IntegerField(u'Obtížnost', choices=CHOICES_OBTIZNOST) | ||||
|     obor = models.CharField(u'Obor', max_length = 5, help_text = u'Podmnožina MFIOB') | ||||
|     klicova = models.CharField(u'Klíčová slova', max_length = 200, null = True, blank = True) | ||||
|     seznamy = models.ManyToManyField(Seznam) | ||||
| 
 | ||||
| class Prednaska_Seznam(models.Model): | ||||
|     class Meta: | ||||
|         db_table = 'prednasky_prednaska_seznam' | ||||
|         verbose_name = u'Přednáška v seznamu' | ||||
|         verbose_name_plural = u'Přednášky v seznamech' | ||||
|     id = models.AutoField(primary_key = True) | ||||
|     prednaska = models.ForeignKey(Prednaska) | ||||
|     seznam = models.ForeignKey(Seznam) | ||||
|     def __str__(self): | ||||
|     	return force_unicode(u"{} ({})".format(self.nazev,self.org)) | ||||
| 
 | ||||
| 
 | ||||
| @python_2_unicode_compatible | ||||
| class Hlasovani(models.Model): | ||||
|     class Meta: | ||||
|         db_table = 'prednasky_hlasovani' | ||||
|  | @ -72,4 +77,8 @@ class Hlasovani(models.Model): | |||
|     prednaska = models.ForeignKey(Prednaska) | ||||
|     body = models.IntegerField('Body', default = 0, choices = CHOICES_BODY) | ||||
|     ucastnik = models.CharField('Účastník', max_length = 100) | ||||
|     seznam = models.ForeignKey(Seznam) | ||||
| 
 | ||||
|     def __str__(self): | ||||
|     	return force_unicode(u"{} dal {} bodů {} v seznamu {}".format(self.ucastnik, self.body, self.prednaska,self.seznam)) | ||||
| 
 | ||||
|  |  | |||
|  | @ -3,10 +3,16 @@ from prednasky.forms import NewPrednaskyForm | |||
| from prednasky.models import Seznam, Hlasovani, Prednaska | ||||
| from django.shortcuts import HttpResponseRedirect | ||||
| 
 | ||||
| 
 | ||||
| from models import Prednaska, Seznam, STAV_NAVRH | ||||
| from seminar.models import Soustredeni | ||||
| 
 | ||||
| def newPrednaska(request): | ||||
|     # zjistime k jakemu soustredeni se vaze nove vytvarena galerie | ||||
|     prednasky = Seznam.objects.first() | ||||
|     # obsluha formulare umoznujiciho multiple nahravani fotek | ||||
|     # hlasovani se vztahuje k nejnovejsimu soustredeni | ||||
|     sous = Soustredeni.objects.first() | ||||
|     seznam = Seznam.objects.filter(soustredeni = sous, stav = STAV_NAVRH).first() | ||||
|     print seznam | ||||
|     # obsluha formulare | ||||
|     if request.method == 'POST': | ||||
|         form = NewPrednaskyForm(request.POST, request.FILES) | ||||
|         if form.is_valid(): | ||||
|  | @ -18,6 +24,7 @@ def newPrednaska(request): | |||
|                 hlasovani.prednaska = Prednaska.objects.filter(pk = int(i[1:]))[0] | ||||
|                 hlasovani.body = int(request.POST[i]) | ||||
|                 hlasovani.ucastnik = jmeno | ||||
| 		hlasovani.seznam = seznam | ||||
|                 hlasovani.save() | ||||
| 
 | ||||
|             # presmerovani na prave vzniklou galerii | ||||
|  | @ -28,7 +35,7 @@ def newPrednaska(request): | |||
|      | ||||
|     return render(request, 'prednasky/Base.html', | ||||
|           { 'form' : form, | ||||
|             'prednasky' : prednasky, | ||||
|             'prednasky' : seznam, | ||||
|           }) | ||||
| 
 | ||||
| def Prednaska_hotovo(request): | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue