forms.py 2.95 KB
Newer Older
stef's avatar
stef committed
1
2
from django import forms
from django.conf import settings
3
4
from django.utils.translation import ugettext as _
from bt.models import Violation, COUNTRIES, RESOURCES, TYPES, MEDIA
stef's avatar
stef committed
5
from bt.multifile import MultiFileField
6
from operator import itemgetter
stef's avatar
stef committed
7
from captcha.fields import CaptchaField
stef's avatar
stef committed
8
9
10
11
12
13
14
15
16
17
18

class AdvancedEditor(forms.Textarea):
	class Media:
		js = (settings.MEDIA_URL+'/js/tinymce/tiny_mce.js',)

	def __init__(self, language=None, attrs=None):
		self.language = language or settings.LANGUAGE_CODE[:2]
		self.attrs = {'class': 'advancededitor'}
		if attrs: self.attrs.update(attrs)
		super(AdvancedEditor, self).__init__(attrs)

19
class AddViolation(forms.Form):
20
21
22
   country = forms.ChoiceField(required=True, choices=(('',''),)+tuple(sorted(COUNTRIES,key=itemgetter(1))), help_text=_('EU member state where the restriction is reported.'))
   operator = forms.CharField(required=True, max_length=256, help_text=_('The ISP or operator providing the Internet service.'))
   contract = forms.CharField(required=True, max_length=256, help_text=_('The specific contract at the ISP provider. (please be as specific as possible)'))
23
   comment = forms.CharField(required=True, widget=AdvancedEditor(), label=_('Please describe the symptoms you are experiencing. What service or site, or person is unavailable or seems artificially slowed down.'))
stef's avatar
stef committed
24
   email = forms.EmailField(required=True, help_text=_("We need your email to validate your report. We're not storing the email later on."))
25
   nick = forms.CharField(required=False, help_text=_("We need your some name to identify you later on."))
26
27
28
29
30
31
32
33
34
35
   attachments = MultiFileField(required=False, label=_("Attach screenshot, document or any other relevant information."))
   resource = forms.ChoiceField(required=False, choices=(('',''),)+tuple(sorted(RESOURCES,key=itemgetter(1))), label=_('What is the affected resource.'))
   resource_name = forms.CharField(required=False, max_length=4096, label=_('Please specify the name of the affected resource.'))
   type = forms.ChoiceField(required=False, choices=(('',''),)+tuple(sorted(TYPES,key=itemgetter(1))), label=_('Is the Resource Blocked or otherwise discrimated?'))
   media = forms.ChoiceField(required=False, choices=(('',''),)+tuple(sorted(MEDIA,key=itemgetter(1))), label=_('Is the Internet connection over mobile or fixed line?'))
   temporary = forms.BooleanField(required=False, label=_('Is the restriction only temporary, e.g. due to network overload?'))
   loophole = forms.BooleanField(required=False, label=_('Is there another offer provided by this Operator which removes this restriction?'))
   contractual = forms.BooleanField(required=False, label=_('Is the restriction described in the users contract?'))
   contract_excerpt = forms.CharField(required=False, widget=AdvancedEditor(), label=_('Please copy the relevant section describing the restriction from the user contract.'))
   captcha = CaptchaField(label=_("Unfortunately we must protect against automatic attacks, please forgive us this inconvenience."))