some pep8 corections for the participant app
This commit is contained in:
parent
f22362df9d
commit
d1ab2f2e85
@ -15,7 +15,8 @@ from django.contrib.auth.forms import AdminPasswordChangeForm
|
|||||||
from django.contrib.auth.models import User, Group, Permission
|
from django.contrib.auth.models import User, Group, Permission
|
||||||
from django.utils.translation import ugettext_lazy as _, ugettext_noop
|
from django.utils.translation import ugettext_lazy as _, ugettext_noop
|
||||||
|
|
||||||
from openslides.utils.forms import CssClassMixin, LocalizedModelMultipleChoiceField
|
from openslides.utils.forms import (
|
||||||
|
CssClassMixin, LocalizedModelMultipleChoiceField)
|
||||||
|
|
||||||
from openslides.participant.models import OpenSlidesUser
|
from openslides.participant.models import OpenSlidesUser
|
||||||
|
|
||||||
@ -30,10 +31,10 @@ USER_APPLICATION_IMPORT_OPTIONS = [
|
|||||||
class UserNewForm(forms.ModelForm, CssClassMixin):
|
class UserNewForm(forms.ModelForm, CssClassMixin):
|
||||||
first_name = forms.CharField(label=_("First name"))
|
first_name = forms.CharField(label=_("First name"))
|
||||||
last_name = forms.CharField(label=_("Last name"))
|
last_name = forms.CharField(label=_("Last name"))
|
||||||
groups = forms.ModelMultipleChoiceField(queryset=Group.objects.all(),
|
groups = forms.ModelMultipleChoiceField(
|
||||||
label=_("User groups"), required=False)
|
queryset=Group.objects.all(), label=_("User groups"), required=False)
|
||||||
is_active = forms.BooleanField(label=_("Active"), required=False,
|
is_active = forms.BooleanField(
|
||||||
initial=True)
|
label=_("Active"), required=False, initial=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
@ -44,8 +45,8 @@ class UserNewForm(forms.ModelForm, CssClassMixin):
|
|||||||
class UserEditForm(forms.ModelForm, CssClassMixin):
|
class UserEditForm(forms.ModelForm, CssClassMixin):
|
||||||
first_name = forms.CharField(label=_("First name"))
|
first_name = forms.CharField(label=_("First name"))
|
||||||
last_name = forms.CharField(label=_("Last name"))
|
last_name = forms.CharField(label=_("Last name"))
|
||||||
groups = forms.ModelMultipleChoiceField(queryset=Group.objects.all(),
|
groups = forms.ModelMultipleChoiceField(
|
||||||
label=_("User groups"), required=False)
|
queryset=Group.objects.all(), label=_("User groups"), required=False)
|
||||||
is_active = forms.BooleanField(label=_("Active"), required=False)
|
is_active = forms.BooleanField(label=_("Active"), required=False)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -58,8 +59,8 @@ class UsernameForm(forms.ModelForm, CssClassMixin):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
exclude = ('first_name', 'last_name', 'email', 'is_active',
|
exclude = ('first_name', 'last_name', 'email', 'is_active',
|
||||||
'is_superuser', 'groups', 'password', 'is_staff', 'last_login',
|
'is_superuser', 'groups', 'password', 'is_staff',
|
||||||
'date_joined', 'user_permissions')
|
'last_login', 'date_joined', 'user_permissions')
|
||||||
|
|
||||||
|
|
||||||
class OpenSlidesUserForm(forms.ModelForm, CssClassMixin):
|
class OpenSlidesUserForm(forms.ModelForm, CssClassMixin):
|
||||||
@ -68,8 +69,8 @@ class OpenSlidesUserForm(forms.ModelForm, CssClassMixin):
|
|||||||
|
|
||||||
|
|
||||||
class GroupForm(forms.ModelForm, CssClassMixin):
|
class GroupForm(forms.ModelForm, CssClassMixin):
|
||||||
as_user = forms.BooleanField(initial=False, required=False,
|
as_user = forms.BooleanField(
|
||||||
label=_("Treat Group as User"),
|
initial=False, required=False, label=_("Treat Group as User"),
|
||||||
help_text=_("The Group will appear on any place, other user does."))
|
help_text=_("The Group will appear on any place, other user does."))
|
||||||
permissions = LocalizedModelMultipleChoiceField(
|
permissions = LocalizedModelMultipleChoiceField(
|
||||||
queryset=Permission.objects.all(), label=_("Persmissions"))
|
queryset=Permission.objects.all(), label=_("Persmissions"))
|
||||||
@ -77,8 +78,8 @@ class GroupForm(forms.ModelForm, CssClassMixin):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(GroupForm, self).__init__(*args, **kwargs)
|
super(GroupForm, self).__init__(*args, **kwargs)
|
||||||
if kwargs.get('instance', None) is not None:
|
if kwargs.get('instance', None) is not None:
|
||||||
self.fields['permissions'].initial = \
|
self.fields['permissions'].initial = (
|
||||||
[p.pk for p in kwargs['instance'].permissions.all()]
|
[p.pk for p in kwargs['instance'].permissions.all()])
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Group
|
model = Group
|
||||||
@ -95,10 +96,8 @@ class UserImportForm(forms.Form, CssClassMixin):
|
|||||||
csvfile = forms.FileField(widget=forms.FileInput(attrs={'size': '50'}),
|
csvfile = forms.FileField(widget=forms.FileInput(attrs={'size': '50'}),
|
||||||
label=_("CSV File"))
|
label=_("CSV File"))
|
||||||
application_handling = forms.ChoiceField(
|
application_handling = forms.ChoiceField(
|
||||||
required=True,
|
required=True, choices=USER_APPLICATION_IMPORT_OPTIONS,
|
||||||
choices=USER_APPLICATION_IMPORT_OPTIONS,
|
label=_("For existing applications"))
|
||||||
label=_("For existing applications"),
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class ConfigForm(forms.Form, CssClassMixin):
|
class ConfigForm(forms.Form, CssClassMixin):
|
||||||
@ -106,11 +105,9 @@ class ConfigForm(forms.Form, CssClassMixin):
|
|||||||
widget=forms.TextInput(),
|
widget=forms.TextInput(),
|
||||||
required=False,
|
required=False,
|
||||||
label=_("System URL"),
|
label=_("System URL"),
|
||||||
help_text=_("Printed in PDF of first time passwords only."),
|
help_text=_("Printed in PDF of first time passwords only."))
|
||||||
)
|
|
||||||
participant_pdf_welcometext = forms.CharField(
|
participant_pdf_welcometext = forms.CharField(
|
||||||
widget=forms.Textarea(),
|
widget=forms.Textarea(),
|
||||||
required=False,
|
required=False,
|
||||||
label=_("Welcome text"),
|
label=_("Welcome text"),
|
||||||
help_text=_("Printed in PDF of first time passwords only."),
|
help_text=_("Printed in PDF of first time passwords only."))
|
||||||
)
|
|
||||||
|
@ -36,19 +36,23 @@ class OpenSlidesUser(models.Model, PersonMixin):
|
|||||||
)
|
)
|
||||||
|
|
||||||
user = models.OneToOneField(User, unique=True, editable=False)
|
user = models.OneToOneField(User, unique=True, editable=False)
|
||||||
name_surfix = models.CharField(max_length=100, null=True, blank=True,
|
name_surfix = models.CharField(
|
||||||
verbose_name = _("Name Surfix"), help_text=_('Shown behind the name.'))
|
max_length=100, null=True, blank=True, verbose_name=_("Name Surfix"),
|
||||||
gender = models.CharField(max_length=50, choices=GENDER_CHOICES, blank=True,
|
help_text=_('Shown behind the name.'))
|
||||||
verbose_name = _("Gender"),
|
gender = models.CharField(
|
||||||
help_text=_('Only for filter the userlist.'))
|
max_length=50, choices=GENDER_CHOICES, blank=True,
|
||||||
type = models.CharField(max_length=100, choices=TYPE_CHOICE, blank=True,
|
verbose_name=_("Gender"), help_text=_('Only for filter the userlist.'))
|
||||||
|
type = models.CharField(
|
||||||
|
max_length=100, choices=TYPE_CHOICE, blank=True,
|
||||||
verbose_name=_("Typ"), help_text=_('Only for filter the userlist.'))
|
verbose_name=_("Typ"), help_text=_('Only for filter the userlist.'))
|
||||||
committee = models.CharField(max_length=100, null=True, blank=True,
|
committee = models.CharField(
|
||||||
verbose_name = _("Committee"),
|
max_length=100, null=True, blank=True, verbose_name=_("Committee"),
|
||||||
help_text=_('Only for filter the userlist.'))
|
help_text=_('Only for filter the userlist.'))
|
||||||
comment = models.TextField(null=True, blank=True,
|
comment = models.TextField(
|
||||||
verbose_name = _('Comment'), help_text=_('Only for notes.'))
|
null=True, blank=True, verbose_name=_('Comment'),
|
||||||
firstpassword = models.CharField(max_length=100, null=True, blank=True,
|
help_text=_('Only for notes.'))
|
||||||
|
firstpassword = models.CharField(
|
||||||
|
max_length=100, null=True, blank=True,
|
||||||
verbose_name=_("First Password"))
|
verbose_name=_("First Password"))
|
||||||
|
|
||||||
def reset_password(self, password=None):
|
def reset_password(self, password=None):
|
||||||
@ -82,12 +86,12 @@ class OpenSlidesUser(models.Model, PersonMixin):
|
|||||||
return "%s (%s)" % (self.user.get_full_name(), self.name_surfix)
|
return "%s (%s)" % (self.user.get_full_name(), self.name_surfix)
|
||||||
return "%s" % self.user.get_full_name()
|
return "%s" % self.user.get_full_name()
|
||||||
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
# Rename permissions
|
# Rename permissions
|
||||||
permissions = (
|
permissions = (
|
||||||
('can_see_participant', ugettext_noop("Can see participant")),
|
('can_see_participant', ugettext_noop("Can see participant")),
|
||||||
('can_manage_participant', ugettext_noop("Can manage participant")),
|
('can_manage_participant',
|
||||||
|
ugettext_noop("Can manage participant")),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -107,14 +111,16 @@ class OpenSlidesUsersConnecter(object):
|
|||||||
self.id = id
|
self.id = id
|
||||||
|
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
if not self.person_prefix or self.person_prefix == OpenSlidesUser.person_prefix:
|
if (not self.person_prefix or
|
||||||
|
self.person_prefix == OpenSlidesUser.person_prefix):
|
||||||
if self.id:
|
if self.id:
|
||||||
yield OpenSlidesUser.objects.get(pk=self.id)
|
yield OpenSlidesUser.objects.get(pk=self.id)
|
||||||
else:
|
else:
|
||||||
for user in OpenSlidesUser.objects.all():
|
for user in OpenSlidesUser.objects.all():
|
||||||
yield user
|
yield user
|
||||||
|
|
||||||
if not self.person_prefix or self.person_prefix == OpenSlidesGroup.person_prefix:
|
if (not self.person_prefix or
|
||||||
|
self.person_prefix == OpenSlidesGroup.person_prefix):
|
||||||
if self.id:
|
if self.id:
|
||||||
yield OpenSlidesGroup.objects.get(pk=self.id)
|
yield OpenSlidesGroup.objects.get(pk=self.id)
|
||||||
else:
|
else:
|
||||||
@ -127,7 +133,8 @@ class OpenSlidesUsersConnecter(object):
|
|||||||
|
|
||||||
@receiver(receiv_persons, dispatch_uid="participant")
|
@receiver(receiv_persons, dispatch_uid="participant")
|
||||||
def receiv_persons(sender, **kwargs):
|
def receiv_persons(sender, **kwargs):
|
||||||
return OpenSlidesUsersConnecter(person_prefix=kwargs['person_prefix'], id=kwargs['id'])
|
return OpenSlidesUsersConnecter(person_prefix=kwargs['person_prefix'],
|
||||||
|
id=kwargs['id'])
|
||||||
|
|
||||||
|
|
||||||
@receiver(default_config_value, dispatch_uid="participant_default_config")
|
@receiver(default_config_value, dispatch_uid="participant_default_config")
|
||||||
|
@ -23,8 +23,9 @@ except ImportError: # python <= 2.5 grab it from cgi
|
|||||||
|
|
||||||
from reportlab.lib import colors
|
from reportlab.lib import colors
|
||||||
from reportlab.lib.units import cm
|
from reportlab.lib.units import cm
|
||||||
from reportlab.platypus import (SimpleDocTemplate, PageBreak, Paragraph,
|
from reportlab.platypus import (
|
||||||
LongTable, Spacer, Table, TableStyle)
|
SimpleDocTemplate, PageBreak, Paragraph, LongTable, Spacer, Table,
|
||||||
|
TableStyle)
|
||||||
|
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
@ -39,18 +40,18 @@ from django.utils.translation import ugettext as _, ungettext, ugettext_lazy
|
|||||||
from openslides.utils import csv_ext
|
from openslides.utils import csv_ext
|
||||||
from openslides.utils.pdf import stylesheet
|
from openslides.utils.pdf import stylesheet
|
||||||
from openslides.utils.template import Tab
|
from openslides.utils.template import Tab
|
||||||
from openslides.utils.utils import (template, permission_required,
|
from openslides.utils.utils import (
|
||||||
gen_confirm_form, ajax_request, decodedict, encodedict,
|
template, permission_required, gen_confirm_form, ajax_request, decodedict,
|
||||||
delete_default_permissions, html_strong)
|
encodedict, delete_default_permissions, html_strong)
|
||||||
from openslides.utils.views import FormView, PDFView
|
from openslides.utils.views import FormView, PDFView
|
||||||
|
|
||||||
from openslides.config.models import config
|
from openslides.config.models import config
|
||||||
|
|
||||||
from openslides.participant.models import OpenSlidesUser, OpenSlidesGroup
|
from openslides.participant.models import OpenSlidesUser, OpenSlidesGroup
|
||||||
from openslides.participant.api import gen_username, gen_password
|
from openslides.participant.api import gen_username, gen_password
|
||||||
from openslides.participant.forms import (UserNewForm, UserEditForm,
|
from openslides.participant.forms import (
|
||||||
OpenSlidesUserForm, UsersettingsForm, UserImportForm, GroupForm,
|
UserNewForm, UserEditForm, OpenSlidesUserForm, UsersettingsForm,
|
||||||
AdminPasswordChangeForm, ConfigForm)
|
UserImportForm, GroupForm, AdminPasswordChangeForm, ConfigForm)
|
||||||
|
|
||||||
|
|
||||||
@permission_required('participant.can_see_participant')
|
@permission_required('participant.can_see_participant')
|
||||||
@ -78,21 +79,26 @@ def get_overview(request):
|
|||||||
|
|
||||||
query = User.objects
|
query = User.objects
|
||||||
if 'gender' in sortfilter:
|
if 'gender' in sortfilter:
|
||||||
query = query.filter(openslidesuser__gender__iexact=sortfilter['gender'][0])
|
query = query.filter(
|
||||||
|
openslidesuser__gender__iexact=sortfilter['gender'][0])
|
||||||
if 'group' in sortfilter:
|
if 'group' in sortfilter:
|
||||||
query = query.filter(openslidesuser__group__iexact=sortfilter['name_surfix'][0])
|
query = query.filter(
|
||||||
|
openslidesuser__group__iexact=sortfilter['name_surfix'][0])
|
||||||
if 'type' in sortfilter:
|
if 'type' in sortfilter:
|
||||||
query = query.filter(openslidesuser__type__iexact=sortfilter['type'][0])
|
query = query.filter(
|
||||||
|
openslidesuser__type__iexact=sortfilter['type'][0])
|
||||||
if 'committee' in sortfilter:
|
if 'committee' in sortfilter:
|
||||||
query = query. \
|
query = query.filter(
|
||||||
filter(openslidesuser__committee__iexact=sortfilter['committee'][0])
|
openslidesuser__committee__iexact=sortfilter['committee'][0])
|
||||||
if 'status' in sortfilter:
|
if 'status' in sortfilter:
|
||||||
query = query.filter(is_active=sortfilter['status'][0])
|
query = query.filter(is_active=sortfilter['status'][0])
|
||||||
if 'sort' in sortfilter:
|
if 'sort' in sortfilter:
|
||||||
if sortfilter['sort'][0] in ['first_name', 'last_name', 'last_login']:
|
if sortfilter['sort'][0] in ['first_name', 'last_name', 'last_login']:
|
||||||
query = query.order_by(sortfilter['sort'][0])
|
query = query.order_by(sortfilter['sort'][0])
|
||||||
elif sortfilter['sort'][0] in ['name_surfix', 'type', 'committee', 'comment']:
|
elif (sortfilter['sort'][0] in
|
||||||
query = query.order_by('openslidesuser__%s' % sortfilter['sort'][0])
|
['name_surfix', 'type', 'committee', 'comment']):
|
||||||
|
query = query.order_by(
|
||||||
|
'openslidesuser__%s' % sortfilter['sort'][0])
|
||||||
else:
|
else:
|
||||||
query = query.order_by('last_name')
|
query = query.order_by('last_name')
|
||||||
if 'reverse' in sortfilter:
|
if 'reverse' in sortfilter:
|
||||||
@ -123,10 +129,10 @@ def get_overview(request):
|
|||||||
else:
|
else:
|
||||||
percent = 0
|
percent = 0
|
||||||
# list of all existing groups
|
# list of all existing groups
|
||||||
groups = [p['name_surfix'] for p in OpenSlidesUser.objects.values('name_surfix') \
|
groups = [p['name_surfix'] for p in OpenSlidesUser.objects.values('name_surfix')
|
||||||
.exclude(name_surfix='').distinct()]
|
.exclude(name_surfix='').distinct()]
|
||||||
# list of all existing committees
|
# list of all existing committees
|
||||||
committees = [p['committee'] for p in OpenSlidesUser.objects.values('committee') \
|
committees = [p['committee'] for p in OpenSlidesUser.objects.values('committee')
|
||||||
.exclude(committee='').distinct()]
|
.exclude(committee='').distinct()]
|
||||||
return {
|
return {
|
||||||
'users': users,
|
'users': users,
|
||||||
@ -317,7 +323,6 @@ def group_edit(request, group_id=None):
|
|||||||
elif not form.cleaned_data['as_user'] and django_group:
|
elif not form.cleaned_data['as_user'] and django_group:
|
||||||
django_group.delete()
|
django_group.delete()
|
||||||
|
|
||||||
|
|
||||||
if anonymous_group is not None and \
|
if anonymous_group is not None and \
|
||||||
anonymous_group.id == group.id:
|
anonymous_group.id == group.id:
|
||||||
# prevent name changes -
|
# prevent name changes -
|
||||||
@ -641,13 +646,14 @@ class ParticipantsListPDF(PDFView):
|
|||||||
try:
|
try:
|
||||||
counter += 1
|
counter += 1
|
||||||
user.get_profile()
|
user.get_profile()
|
||||||
data.append([counter,
|
data.append([
|
||||||
|
counter,
|
||||||
Paragraph(user.last_name, stylesheet['Tablecell']),
|
Paragraph(user.last_name, stylesheet['Tablecell']),
|
||||||
Paragraph(user.first_name, stylesheet['Tablecell']),
|
Paragraph(user.first_name, stylesheet['Tablecell']),
|
||||||
Paragraph(user.profile.group, stylesheet['Tablecell']),
|
Paragraph(user.profile.group, stylesheet['Tablecell']),
|
||||||
Paragraph(user.profile.get_type_display(),
|
Paragraph(user.profile.get_type_display(),
|
||||||
stylesheet['Tablecell']),
|
stylesheet['Tablecell']),
|
||||||
Paragraph(user.profile.committee, stylesheet['Tablecell']),
|
Paragraph(user.profile.committee, stylesheet['Tablecell'])
|
||||||
])
|
])
|
||||||
except Profile.DoesNotExist:
|
except Profile.DoesNotExist:
|
||||||
counter -= 1
|
counter -= 1
|
||||||
@ -659,8 +665,7 @@ class ParticipantsListPDF(PDFView):
|
|||||||
('LINEABOVE', (0, 1), (-1, 1), 1, colors.black),
|
('LINEABOVE', (0, 1), (-1, 1), 1, colors.black),
|
||||||
('LINEBELOW', (0, -1), (-1, -1), 2, colors.black),
|
('LINEBELOW', (0, -1), (-1, -1), 2, colors.black),
|
||||||
('ROWBACKGROUNDS', (0, 1), (-1, -1),
|
('ROWBACKGROUNDS', (0, 1), (-1, -1),
|
||||||
(colors.white, (.9, .9, .9))),
|
(colors.white, (.9, .9, .9)))])
|
||||||
])
|
|
||||||
t._argW[0] = 0.75 * cm
|
t._argW[0] = 0.75 * cm
|
||||||
story.append(t)
|
story.append(t)
|
||||||
|
|
||||||
@ -711,7 +716,7 @@ class ParticipantsPasswordsPDF(PDFView):
|
|||||||
stylesheet['Ballot_subtitle']))
|
stylesheet['Ballot_subtitle']))
|
||||||
|
|
||||||
data.append([cell, cell2])
|
data.append([cell, cell2])
|
||||||
except Profile.DoesNotExist:
|
except OpenSlidesUser.DoesNotExist:
|
||||||
pass
|
pass
|
||||||
# add empty table line if no participants available
|
# add empty table line if no participants available
|
||||||
if data == []:
|
if data == []:
|
||||||
|
Loading…
Reference in New Issue
Block a user