from django import forms

from .models import Hlasovani, HlasovaniOZnalostech

class HlasovaniPrednaskaForm(forms.Form):
	""" :py:class:`Formulář <django.forms.Form>` pro :py:class:`Hlasování <prednasky.models.Hlasovani>` o jedné :py:class:`Přednášce <prednasky.models.Prednaska>`
	(neobsahuje téměř nic, většina se musí doplnit jiným způsobem)
	"""

	#: ID :py:class:`Přednášky <prednasky.models.Prednaska>`, o které se hlasuje
	prednaska_id = forms.IntegerField(widget=forms.HiddenInput)
	#: :py:class:`Hodnocení (Body) <prednasky.models.Hlasovani.Body>` této přednášky
	body = forms.ChoiceField(label=False, widget=forms.RadioSelect, choices=Hlasovani.Body.choices, initial=Hlasovani.Body.JEDNO)

#: Množina formulářů (:py:class:`formset <django.forms.formsets.BaseFormSet>` :py:class:`HlasovaniPrednaskaFormů <prednasky.forms.HlasovaniPrednaskaForm>`)
#: pro :py:class:`Hlasování <prednasky.models.Hlasovani>` o množině :py:class:`Přednášek <prednasky.models.Prednaska>`
HlasovaniPrednaskaFormSet = forms.formset_factory(HlasovaniPrednaskaForm, extra=0)

class HlasovaniZnalostiForm(forms.Form):
	""" :py:class:`Formulář <django.forms.Form>` pro :py:class:`HlasováníOZnalostech <prednasky.models.HlasovaniOZnalostech>` o jedné :py:class:`Znalosti <prednasky.models.Znalost>`
	(neobsahuje téměř nic, většina se musí doplnit jiným způsobem)
	"""

	#: ID :py:class:`Znalosti <prednasky.models.Znalost>`, o které hlasujeme
	znalost_id = forms.IntegerField(widget=forms.HiddenInput)
	#: :py:class:`Odpověď <prednasky.models.HlasovaniOZnalostech.Odpoved>` na tuto znalost
	odpoved = forms.ChoiceField(label=False, widget=forms.RadioSelect, choices=HlasovaniOZnalostech.Odpoved.choices)

#: Množina formulářů (:py:class:`formset <django.forms.formsets.BaseFormSet>` :py:class:`HlasovaniZnalostiFormů <prednasky.forms.HlasovaniZnalostiForm>`)
#: pro :py:class:`HlasováníOZnalostech <prednasky.models.HlasovaniOZnalostech>` o množině :py:class:`Znalostí <prednasky.models.Znalost>`
HlasovaniZnalostiFormSet = forms.formset_factory(HlasovaniZnalostiForm, extra=0)