2011-07-31 10:46:29 +02:00
|
|
|
#!/usr/bin/env python
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
|
|
openslides.participant.forms
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
Forms for the participant 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-04-15 12:39:28 +02:00
|
|
|
from django.forms import Form, ModelForm, CharField, EmailField, FileField, FileInput, TextInput, Textarea, MultipleChoiceField, ModelMultipleChoiceField, ChoiceField, BooleanField
|
2011-11-14 20:45:04 +01:00
|
|
|
from django.contrib.auth.models import User, Group, Permission
|
2011-09-03 17:17:29 +02:00
|
|
|
from django.contrib.auth.forms import AdminPasswordChangeForm
|
2011-11-14 20:45:04 +01: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 LocalizedModelMultipleChoiceField, ugettext as _
|
2012-02-20 18:44:02 +01:00
|
|
|
|
2011-11-14 20:45:04 +01:00
|
|
|
# required for USER_VISIBLE_PERMISSIONS
|
2011-07-31 10:46:29 +02:00
|
|
|
from participant.models import Profile
|
2011-11-14 20:45:04 +01:00
|
|
|
|
2011-07-31 10:46:29 +02:00
|
|
|
|
2011-09-04 09:57:23 +02:00
|
|
|
|
2012-04-12 19:11:07 +02:00
|
|
|
USER_APPLICATION_IMPORT_OPTIONS = [
|
|
|
|
('REASSIGN', _('Keep applications, try to reassign submitter')),
|
|
|
|
('INREVIEW', _('Keep applications, set status to "needs review"')),
|
|
|
|
('DISCARD' , _('Discard applications'))
|
|
|
|
]
|
|
|
|
|
2012-02-20 18:44:02 +01:00
|
|
|
class UserNewForm(ModelForm, CssClassMixin):
|
2011-09-04 09:57:23 +02:00
|
|
|
first_name = CharField(label=_("First name"))
|
|
|
|
last_name = CharField(label=_("Last name"))
|
2012-05-14 23:04:00 +02:00
|
|
|
groups = ModelMultipleChoiceField(queryset=Group.objects.all(), label=_("User groups"), required=False)
|
2012-05-14 23:07:24 +02:00
|
|
|
is_active = BooleanField(label=_("Active"), required=False)
|
2011-09-04 09:57:23 +02:00
|
|
|
|
|
|
|
class Meta:
|
|
|
|
model = User
|
2012-04-15 09:35:51 +02:00
|
|
|
exclude = ('username', 'password', 'is_staff', 'is_superuser', 'last_login', 'date_joined', 'user_permissions')
|
2011-09-04 09:57:23 +02:00
|
|
|
|
2011-09-03 17:17:29 +02:00
|
|
|
|
2012-02-20 18:44:02 +01:00
|
|
|
class UserEditForm(ModelForm, CssClassMixin):
|
2011-07-31 10:46:29 +02:00
|
|
|
first_name = CharField(label=_("First name"))
|
|
|
|
last_name = CharField(label=_("Last name"))
|
2012-05-14 23:04:00 +02:00
|
|
|
groups = ModelMultipleChoiceField(queryset=Group.objects.all(), label=_("User groups"), required=False)
|
2012-05-14 23:07:24 +02:00
|
|
|
is_active = BooleanField(label=_("Active"), required=False)
|
2011-09-03 17:17:29 +02:00
|
|
|
|
2011-07-31 10:46:29 +02:00
|
|
|
class Meta:
|
|
|
|
model = User
|
2012-04-15 09:35:51 +02:00
|
|
|
exclude = ('password', 'is_staff', 'is_superuser', 'last_login', 'date_joined', 'user_permissions')
|
2011-07-31 10:46:29 +02:00
|
|
|
|
2011-09-03 17:17:29 +02:00
|
|
|
|
2012-02-20 18:44:02 +01:00
|
|
|
class UsernameForm(ModelForm, CssClassMixin):
|
2011-07-31 10:46:29 +02:00
|
|
|
class Meta:
|
|
|
|
model = User
|
2012-04-15 09:35:51 +02:00
|
|
|
exclude = ('first_name', 'last_name', 'email', 'is_active', 'is_superuser', 'groups', 'password', 'is_staff', 'last_login', 'date_joined', 'user_permissions')
|
2011-07-31 10:46:29 +02:00
|
|
|
|
2012-04-14 14:31:09 +02:00
|
|
|
|
2012-02-20 18:44:02 +01:00
|
|
|
class ProfileForm(ModelForm, CssClassMixin):
|
2011-07-31 10:46:29 +02:00
|
|
|
class Meta:
|
|
|
|
model = Profile
|
|
|
|
|
2011-11-14 20:45:04 +01:00
|
|
|
|
2012-04-14 14:31:09 +02:00
|
|
|
class GroupForm(ModelForm, CssClassMixin):
|
2012-05-14 23:04:00 +02:00
|
|
|
permissions = LocalizedModelMultipleChoiceField(queryset=Permission.objects.all(), label=_("Persmissions"))
|
2011-07-31 10:46:29 +02:00
|
|
|
|
2012-04-14 18:53:18 +02:00
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
|
super(GroupForm, self).__init__(*args, **kwargs)
|
|
|
|
if kwargs.get('instance', None) is not None:
|
|
|
|
self.fields['permissions'].initial = [p.pk for p in kwargs['instance'].permissions.all()]
|
|
|
|
|
2011-07-31 10:46:29 +02:00
|
|
|
class Meta:
|
|
|
|
model = Group
|
2011-11-14 20:45:04 +01:00
|
|
|
exclude = ('permissions',)
|
2011-07-31 10:46:29 +02:00
|
|
|
|
2012-04-14 14:31:09 +02:00
|
|
|
|
2012-02-20 18:44:02 +01:00
|
|
|
class UsersettingsForm(UserEditForm, CssClassMixin):
|
2011-07-31 10:46:29 +02:00
|
|
|
class Meta:
|
|
|
|
model = User
|
|
|
|
fields = ('username', 'first_name', 'last_name', 'email')
|
|
|
|
|
2012-04-14 14:31:09 +02:00
|
|
|
|
2012-02-20 18:44:02 +01:00
|
|
|
class UserImportForm(Form, CssClassMixin):
|
2011-09-03 17:17:29 +02:00
|
|
|
csvfile = FileField(widget=FileInput(attrs={'size':'50'}), label=_("CSV File"))
|
2012-04-12 19:11:07 +02:00
|
|
|
application_handling = ChoiceField(required=True, choices=USER_APPLICATION_IMPORT_OPTIONS, label=_("For existing applications"))
|
2012-04-15 12:39:28 +02:00
|
|
|
|
|
|
|
|
|
|
|
class ConfigForm(Form, CssClassMixin):
|
|
|
|
participant_pdf_system_url = CharField(
|
|
|
|
widget=TextInput(),
|
|
|
|
required=False,
|
|
|
|
label=_("System URL"),
|
2012-04-22 16:51:22 +02:00
|
|
|
help_text=_("Printed in PDF of first time passwords only."),
|
2012-04-15 12:39:28 +02:00
|
|
|
)
|
|
|
|
participant_pdf_welcometext = CharField(
|
|
|
|
widget=Textarea(),
|
|
|
|
required=False,
|
|
|
|
label=_("Welcome text"),
|
2012-04-22 16:51:22 +02:00
|
|
|
help_text=_("Printed in PDF of first time passwords only."),
|
2012-04-15 12:39:28 +02:00
|
|
|
)
|