OpenSlides/openslides/motion/forms.py

105 lines
3.4 KiB
Python
Raw Normal View History

2011-07-31 10:46:29 +02:00
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
2012-10-24 11:04:23 +02:00
openslides.motion.forms
2011-07-31 10:46:29 +02:00
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2012-10-24 11:04:23 +02:00
Forms for the motion app.
2011-07-31 10:46:29 +02:00
2012-04-25 22:29:19 +02:00
:copyright: 2011, 2012 by OpenSlides team, see AUTHORS.
2011-07-31 10:46:29 +02:00
:license: GNU GPL, see LICENSE for more details.
"""
from django import forms
2013-01-06 12:07:37 +01:00
from django.utils.translation import ugettext as _
2011-07-31 10:46:29 +02:00
from openslides.utils.forms import CssClassMixin
from openslides.utils.person import PersonFormField, MultiplePersonFormField
2013-01-06 12:07:37 +01:00
from .models import Motion
2011-07-31 10:46:29 +02:00
2013-01-06 12:07:37 +01:00
class BaseMotionForm(forms.ModelForm, CssClassMixin):
2013-01-26 15:25:54 +01:00
"""
Form to automaticly save the version data for a motion.
"""
2013-01-06 12:07:37 +01:00
class Meta:
model = Motion
fields = ()
def __init__(self, *args, **kwargs):
motion = kwargs.get('instance', None)
if motion is not None:
initial = kwargs.setdefault('initial', {})
initial['title'] = motion.title
initial['text'] = motion.text
initial['reason'] = motion.reason
super(BaseMotionForm, self).__init__(*args, **kwargs)
title = forms.CharField(widget=forms.TextInput(), label=_("Title"))
text = forms.CharField(widget=forms.Textarea(), label=_("Text"))
reason = forms.CharField(
widget=forms.Textarea(), required=False, label=_("Reason"))
2013-01-26 15:25:54 +01:00
class MotionSubmitterMixin(forms.ModelForm):
submitter = MultiplePersonFormField(label=_("Submitter"))
2012-03-16 14:31:59 +01:00
2013-01-26 15:25:54 +01:00
class MotionSupporterMixin(forms.ModelForm):
supporter = MultiplePersonFormField(required=False, label=_("Supporters"))
class MotionTrivialChangesMixin(object):
trivial_change = forms.BooleanField(
required=False, label=_("Trivial change"),
help_text=_("Trivial changes don't create a new version."))
2012-03-16 14:31:59 +01:00
2012-04-17 17:35:50 +02:00
class ConfigForm(forms.Form, CssClassMixin):
2012-10-24 11:04:23 +02:00
motion_min_supporters = forms.IntegerField(
widget=forms.TextInput(attrs={'class': 'small-input'}),
label=_("Number of (minimum) required supporters for a motion"),
2012-03-16 14:31:59 +01:00
initial=4,
min_value=0,
max_value=8,
help_text=_("Choose 0 to disable the supporting system"),
2012-03-16 14:31:59 +01:00
)
2012-10-24 11:04:23 +02:00
motion_preamble = forms.CharField(
widget=forms.TextInput(),
2012-03-16 14:31:59 +01:00
required=False,
label=_("Motion preamble")
2012-03-16 14:31:59 +01:00
)
2012-10-24 11:04:23 +02:00
motion_pdf_ballot_papers_selection = forms.ChoiceField(
widget=forms.Select(),
2012-03-16 14:31:59 +01:00
required=False,
label=_("Number of ballot papers (selection)"),
choices=[
("NUMBER_OF_DELEGATES", _("Number of all delegates")),
("NUMBER_OF_ALL_PARTICIPANTS", _("Number of all participants")),
("CUSTOM_NUMBER", _("Use the following custom number")),
2012-03-16 14:31:59 +01:00
]
)
2012-10-24 11:04:23 +02:00
motion_pdf_ballot_papers_number = forms.IntegerField(
widget=forms.TextInput(attrs={'class': 'small-input'}),
2012-03-16 14:31:59 +01:00
required=False,
min_value=1,
label=_("Custom number of ballot papers")
)
2012-10-24 11:04:23 +02:00
motion_pdf_title = forms.CharField(
widget=forms.TextInput(),
2012-03-16 14:31:59 +01:00
required=False,
label=_("Title for PDF document (all motions)")
2012-03-16 14:31:59 +01:00
)
2012-10-24 11:04:23 +02:00
motion_pdf_preamble = forms.CharField(
widget=forms.Textarea(),
2012-03-16 14:31:59 +01:00
required=False,
label=_("Preamble text for PDF document (all motions)")
2012-03-16 14:31:59 +01:00
)
2012-10-24 11:04:23 +02:00
motion_allow_trivial_change = forms.BooleanField(
label=_("Allow trivial changes"),
help_text=_('Warning: Trivial changes undermine the motions '
'autorisation system.'),
required=False,
)