diff options
Diffstat (limited to 'papillon/polls/forms.py')
-rw-r--r-- | papillon/polls/forms.py | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/papillon/polls/forms.py b/papillon/polls/forms.py index 2e9b75d..359410d 100644 --- a/papillon/polls/forms.py +++ b/papillon/polls/forms.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2009 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2009-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as @@ -30,42 +30,50 @@ from django.utils.translation import gettext_lazy as _ from papillon.polls.models import Poll, Category, Choice, Comment from django.conf import settings + class TextareaWidget(forms.Textarea): """ Manage the edition of a text using TinyMCE """ class Media: js = ["%stiny_mce.js" % settings.TINYMCE_URL, - "%stextareas.js" % settings.MEDIA_URL,] + "%stextareas.js" % settings.STATIC_URL] + class PollForm(forms.ModelForm): def __init__(self, *args, **kwargs): super(PollForm, self).__init__(*args, **kwargs) self.fields['description'].widget = TextareaWidget() + class CreatePollForm(PollForm): class Meta: model = Poll - exclude = ['base_url', 'admin_url', 'open', 'author', 'enddate', - 'public', 'opened_admin', 'hide_choices'] + exclude = ['base_url', 'admin_url', 'open', 'author', 'enddate', + 'public', 'opened_admin', 'hide_choices'] if not Category.objects.all(): exclude.append('category') + class CommentForm(forms.ModelForm): class Meta: model = Comment - exclude = ['date',] + exclude = ['date'] + def __init__(self, *args, **kwargs): super(CommentForm, self).__init__(*args, **kwargs) self.fields['text'].widget = TextareaWidget() # workaround for SplitDateTime with required=False + + class SplitDateTimeJSField(forms.SplitDateTimeField): def __init__(self, *args, **kwargs): super(SplitDateTimeJSField, self).__init__(*args, **kwargs) self.widget.widgets[0].attrs = {'class': 'vDateField'} self.widget.widgets[1].attrs = {'class': 'vTimeField'} + class AdminPollForm(PollForm): class Meta: model = Poll @@ -75,19 +83,23 @@ class AdminPollForm(PollForm): exclude.append('category') if not settings.ALLOW_FRONTPAGE_POLL: exclude.append('public') - enddate = SplitDateTimeJSField(widget=adminwidgets.AdminSplitDateTime(), + enddate = SplitDateTimeJSField( + widget=adminwidgets.AdminSplitDateTime(), required=False, label=Poll._meta.get_field('enddate').verbose_name, - help_text=Poll._meta.get_field('enddate').help_text) + help_text=Poll._meta.get_field('enddate').help_text) + class ChoiceForm(forms.ModelForm): class Meta: model = Choice fields = ('name', 'limit', 'poll', 'order',) + def __init__(self, *args, **kwargs): super(ChoiceForm, self).__init__(*args, **kwargs) self.fields['poll'].widget = forms.HiddenInput() self.fields['order'].widget = forms.HiddenInput() + class DatedChoiceForm(ChoiceForm): def __init__(self, *args, **kwargs): super(DatedChoiceForm, self).__init__(*args, **kwargs) @@ -110,7 +122,7 @@ class DatedChoiceForm(ChoiceForm): if not time: time = '00:00:00' date = "%s %s" % (datas[1], time) - datetime.strptime(date, '%Y-%m-%d %H:%M:%S') + datetime.strptime(date, '%Y-%m-%d %H:%M:%S') data = date except (ValueError, AssertionError): raise forms.ValidationError(_('Invalid date format: \ @@ -120,7 +132,7 @@ YYYY-MM-DD HH:MM:SS')) def clean_limit(self): """ data = eval(self.cleaned_data['name']) - + new_limit = int(request.POST[key]) sum = choice.getSum() if new_limit < sum: |