2011-07-31 10:46:29 +02:00
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
openslides . application . forms
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
Forms for the application app .
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 .
"""
2012-03-16 14:31:59 +01:00
from django . forms import ModelForm , Form , CharField , Textarea , TextInput , ModelMultipleChoiceField , ModelChoiceField , BooleanField , FileField , FileInput , IntegerField , ChoiceField , Select
2011-11-01 06:47:10 +01:00
from django . contrib . auth . models import User
2011-07-31 10:46:29 +02:00
2012-02-20 18:44:02 +01:00
from utils . forms import CssClassMixin
2012-05-15 01:08:08 +02:00
from utils . translation_ext import ugettext as _
2012-02-20 18:44:02 +01:00
from application . models import Application
2011-07-31 10:46:29 +02:00
2011-11-01 06:47:10 +01:00
class UserModelChoiceField ( ModelChoiceField ) :
"""
Extend ModelChoiceField for users so that the choices are
listed as ' first_name last_name ' instead of just ' username ' .
"""
def label_from_instance ( self , obj ) :
return obj . get_full_name ( )
2012-03-16 14:31:59 +01:00
2011-11-01 06:47:10 +01:00
class UserModelMultipleChoiceField ( ModelMultipleChoiceField ) :
"""
Extend ModelMultipleChoiceField for users so that the choices are
listed as ' first_name last_name ' instead of just ' username ' .
"""
def label_from_instance ( self , obj ) :
return obj . get_full_name ( )
2012-02-20 18:44:02 +01:00
class ApplicationForm ( Form , CssClassMixin ) :
2011-07-31 10:46:29 +02:00
title = CharField ( widget = TextInput ( ) , label = _ ( " Title " ) )
text = CharField ( widget = Textarea ( ) , label = _ ( " Text " ) )
reason = CharField ( widget = Textarea ( ) , required = False , label = _ ( " Reason " ) )
2012-06-30 11:31:35 +02:00
class ApplicationFormTrivialChanges ( ApplicationForm ) :
trivial_change = BooleanField ( required = False , label = _ ( " Trivial change " ) ,
help_text = _ ( " Trivial changes don ' t create a new version. " ) )
2011-07-31 10:46:29 +02:00
2012-03-16 14:31:59 +01:00
2012-02-20 18:44:02 +01:00
class ApplicationManagerForm ( ModelForm , CssClassMixin ) :
2012-06-30 11:50:46 +02:00
submitter = UserModelChoiceField (
queryset = User . objects . all ( ) . exclude ( profile = None ) . order_by ( " first_name " ) ,
label = _ ( " Submitter " ) ,
)
2011-11-01 06:47:10 +01:00
2011-07-31 10:46:29 +02:00
class Meta :
model = Application
2012-06-30 11:50:46 +02:00
exclude = ( ' number ' , ' status ' , ' permitted ' , ' log ' , ' supporter ' )
class ApplicationManagerFormSupporter ( ApplicationManagerForm ) :
supporter = UserModelMultipleChoiceField (
queryset = User . objects . all ( ) . exclude ( profile = None ) . order_by ( " first_name " ) ,
required = False , label = _ ( " Supporters " ) ,
)
2011-11-09 22:53:10 +01:00
2012-03-16 14:31:59 +01:00
2012-02-20 18:44:02 +01:00
class ApplicationImportForm ( Form , CssClassMixin ) :
2011-11-09 22:53:10 +01:00
csvfile = FileField ( widget = FileInput ( attrs = { ' size ' : ' 50 ' } ) , label = _ ( " CSV File " ) )
2012-04-13 21:55:13 +02:00
import_permitted = BooleanField ( required = False , label = _ ( " Import applications with status \" permitted \" " ) , help_text = _ ( " Set the initial status for each application to \" permitted \" " ) )
2012-03-16 14:31:59 +01:00
2012-04-17 17:35:50 +02:00
2012-03-16 14:31:59 +01:00
class ConfigForm ( Form , CssClassMixin ) :
application_min_supporters = IntegerField (
widget = TextInput ( attrs = { ' class ' : ' small-input ' } ) ,
label = _ ( " Number of (minimum) required supporters for a application " ) ,
initial = 4 ,
min_value = 0 ,
max_value = 8 ,
2012-06-30 16:28:15 +02:00
help_text = _ ( " Choose 0 to disable the supporting system " ) ,
2012-03-16 14:31:59 +01:00
)
application_preamble = CharField (
widget = TextInput ( ) ,
required = False ,
label = _ ( " Application preamble " )
)
application_pdf_ballot_papers_selection = ChoiceField (
widget = Select ( ) ,
required = False ,
label = _ ( " Number of ballot papers (selection) " ) ,
choices = [
2012-06-29 00:19:06 +02:00
( " 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
]
)
application_pdf_ballot_papers_number = IntegerField (
widget = TextInput ( attrs = { ' class ' : ' small-input ' } ) ,
required = False ,
min_value = 1 ,
label = _ ( " Custom number of ballot papers " )
)
application_pdf_title = CharField (
widget = TextInput ( ) ,
required = False ,
label = _ ( " Title for PDF document (all applications) " )
)
application_pdf_preamble = CharField (
widget = Textarea ( ) ,
required = False ,
label = _ ( " Preamble text for PDF document (all applications) " )
)
2012-06-30 11:31:35 +02:00
application_allow_trivial_change = BooleanField (
label = _ ( " Allow trivial changes " ) ,
help_text = _ ( ' Warning: Trivial changes undermine the application permission system. ' ) ,
required = False ,
)