Browse Source

Fungujici verze spravy prednasek a hlasovani.

remotes/origin/posli-mail-autorovi-korektury
parent
commit
0c67eccd92
  1. 59
      prednasky/admin.py
  2. 20
      prednasky/migrations/0006_hlasovani_seznam.py
  3. 19
      prednasky/migrations/0007_prednaska_seznamy.py
  4. 25
      prednasky/migrations/0008_auto_20160929_0225.py
  5. 49
      prednasky/migrations/0009_auto_20160929_0354.py
  6. 53
      prednasky/models.py
  7. 15
      prednasky/views.py

59
prednasky/admin.py

@ -1,16 +1,59 @@
# -*- coding: utf-8 -*-
from django.contrib import admin from django.contrib import admin
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, 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): class PrednaskaAdmin(VersionAdmin):
# fieldsets = [ list_display = ['nazev', 'org', 'obor']
# (None, {'fields': ['pdf', 'cas', 'stran', 'nazev', 'komentar']}), list_filter = ['org','obor']
# ] search_fields = []
list_display = ['nazev', 'org', 'obor']
list_filter = ['org','obor'] actions = ['move_to_soustredeni']
search_fields = []
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) admin.site.register(Prednaska,PrednaskaAdmin)

20
prednasky/migrations/0006_hlasovani_seznam.py

@ -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

@ -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

@ -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

@ -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')]),
),
]

53
prednasky/models.py

@ -1,16 +1,22 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.db import models 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 from seminar.models import Organizator,Soustredeni
CHOICES_STAV = ( STAV_NAVRH = 1
(1, 'Návrh'), STAV_BUDE = 2
(2, 'Bude')
STAV_CHOICES = (
(STAV_NAVRH, 'Návrh'),
(STAV_BUDE, 'Bude')
) )
#class Seznam_old(models.Model):
# pass
@python_2_unicode_compatible
class Seznam(models.Model): class Seznam(models.Model):
class Meta: class Meta:
db_table = 'prednasky_seznam' db_table = 'prednasky_seznam'
@ -20,7 +26,10 @@ class Seznam(models.Model):
id = models.AutoField(primary_key = True) id = models.AutoField(primary_key = True)
soustredeni = models.ForeignKey(Soustredeni,null = True, default = None) 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 = ( CHOICES_OBTIZNOST = (
@ -35,6 +44,7 @@ CHOICES_BODY = (
(1, '1'), (1, '1'),
) )
@python_2_unicode_compatible
class Prednaska(models.Model): class Prednaska(models.Model):
class Meta: class Meta:
db_table = 'prednasky_prednaska' db_table = 'prednasky_prednaska'
@ -43,25 +53,20 @@ class Prednaska(models.Model):
ordering = ['org', 'nazev'] ordering = ['org', 'nazev']
id = models.AutoField(primary_key = True) 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) org = models.ForeignKey(Organizator)
popis = models.TextField('Popis pro orgy',null = True,help_text = 'Neveřejný popis pro ostatní orgy') 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 = 'Veřejná anotace v hlasování') anotace = models.TextField('Anotace',null = True, help_text = u'Veřejná anotace v hlasování')
obtiznost = models.IntegerField('Obtížnost', choices=CHOICES_OBTIZNOST) obtiznost = models.IntegerField(u'Obtížnost', choices=CHOICES_OBTIZNOST)
obor = models.CharField('Obor', max_length = 5, help_text = 'Podmnožina MFIOB') obor = models.CharField(u'Obor', max_length = 5, help_text = u'Podmnožina MFIOB')
klicova = models.CharField('Klíčová slova', max_length = 200, null = True, blank = True) klicova = models.CharField(u'Klíčová slova', max_length = 200, null = True, blank = True)
# seznam = models.ForeignKey(Seznam_old) seznamy = models.ManyToManyField(Seznam)
class Prednaska_Seznam(models.Model): def __str__(self):
class Meta: return force_unicode(u"{} ({})".format(self.nazev,self.org))
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)
@python_2_unicode_compatible
class Hlasovani(models.Model): class Hlasovani(models.Model):
class Meta: class Meta:
db_table = 'prednasky_hlasovani' db_table = 'prednasky_hlasovani'
@ -72,4 +77,8 @@ class Hlasovani(models.Model):
prednaska = models.ForeignKey(Prednaska) prednaska = models.ForeignKey(Prednaska)
body = models.IntegerField('Body', default = 0, choices = CHOICES_BODY) body = models.IntegerField('Body', default = 0, choices = CHOICES_BODY)
ucastnik = models.CharField('Účastník', max_length = 100) 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))

15
prednasky/views.py

@ -3,10 +3,16 @@ from prednasky.forms import NewPrednaskyForm
from prednasky.models import Seznam, Hlasovani, Prednaska from prednasky.models import Seznam, Hlasovani, Prednaska
from django.shortcuts import HttpResponseRedirect from django.shortcuts import HttpResponseRedirect
from models import Prednaska, Seznam, STAV_NAVRH
from seminar.models import Soustredeni
def newPrednaska(request): def newPrednaska(request):
# zjistime k jakemu soustredeni se vaze nove vytvarena galerie # hlasovani se vztahuje k nejnovejsimu soustredeni
prednasky = Seznam.objects.first() sous = Soustredeni.objects.first()
# obsluha formulare umoznujiciho multiple nahravani fotek seznam = Seznam.objects.filter(soustredeni = sous, stav = STAV_NAVRH).first()
print seznam
# obsluha formulare
if request.method == 'POST': if request.method == 'POST':
form = NewPrednaskyForm(request.POST, request.FILES) form = NewPrednaskyForm(request.POST, request.FILES)
if form.is_valid(): if form.is_valid():
@ -18,6 +24,7 @@ def newPrednaska(request):
hlasovani.prednaska = Prednaska.objects.filter(pk = int(i[1:]))[0] hlasovani.prednaska = Prednaska.objects.filter(pk = int(i[1:]))[0]
hlasovani.body = int(request.POST[i]) hlasovani.body = int(request.POST[i])
hlasovani.ucastnik = jmeno hlasovani.ucastnik = jmeno
hlasovani.seznam = seznam
hlasovani.save() hlasovani.save()
# presmerovani na prave vzniklou galerii # presmerovani na prave vzniklou galerii
@ -28,7 +35,7 @@ def newPrednaska(request):
return render(request, 'prednasky/Base.html', return render(request, 'prednasky/Base.html',
{ 'form' : form, { 'form' : form,
'prednasky' : prednasky, 'prednasky' : seznam,
}) })
def Prednaska_hotovo(request): def Prednaska_hotovo(request):

Loading…
Cancel
Save