summaryrefslogtreecommitdiff
path: root/website/forms.py
diff options
context:
space:
mode:
Diffstat (limited to 'website/forms.py')
-rwxr-xr-xwebsite/forms.py211
1 files changed, 211 insertions, 0 deletions
diff --git a/website/forms.py b/website/forms.py
new file mode 100755
index 0000000..d1dd2e6
--- /dev/null
+++ b/website/forms.py
@@ -0,0 +1,211 @@
+from django import forms
+from django.db import models
+from django.contrib.auth.models import User
+from django.contrib.auth import login, logout, authenticate
+from django.core.validators import validate_email
+from django.contrib.auth.forms import UserCreationForm
+from website.models import Proposal
+from django.core.validators import MinLengthValidator, MinValueValidator, \
+RegexValidator, URLValidator
+from captcha.fields import ReCaptchaField # Only import different from yesterday
+from crispy_forms.helper import FormHelper
+from crispy_forms.layout import Submit
+import floppyforms as forms
+from captcha.fields import ReCaptchaField
+
+
+MY_CHOICES = (
+ ('Beginner', 'Beginner'),
+ ('Advanced', 'Advanced'),
+)
+
+ws_duration = (
+ ('2', '2'),
+ ('3', '3'),
+ ('4', '4'),
+)
+abs_duration = (
+ ('15', '15'),
+ ('30', '30'),
+)
+
+
+MY_CHOICES = (
+ ('Beginner', 'Beginner'),
+ ('Advanced', 'Advanced'),
+)
+rating=(
+ ('1','1'),
+ ('2','2'),
+ ('3','3'),
+ ('4','4'),
+ ('5','5'),
+ ('6','6'),
+ ('7','7'),
+ ('8','8'),
+ ('9','9'),
+ ('10','10'),
+)
+
+
+class ContactForm(forms.Form):
+ name = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'About Me'}),
+ required = True,
+ error_messages = {'required':'Name field required.'},
+ )
+ email = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'About Me'}),
+ required = True,
+ error_messages = {'required':'Email field required.'},
+ )
+ message = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Title'}),
+ required = True,
+ error_messages = {'required':'Message field required.'},
+ )
+ captcha = ReCaptchaField()
+
+class ProposalForm(forms.ModelForm):
+
+ about_me = forms.CharField(widget=forms.Textarea(attrs={'class': 'form-control', 'placeholder': 'About Me'}),
+ required = True,
+ error_messages = {'required':'About me field required.'},
+ )
+ attachment = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True}),
+ label = 'Please upload relevant documents (if any)',
+ required = False,)
+ phone = forms.CharField(min_length = 10, max_length = 12, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Phone'}),required=False, validators = [RegexValidator(regex = '^[0-9-_+.]*$', message='Enter a Valid Phone Number',)],
+ # error_messages = {'required':'Title field required.'},
+ )
+ title = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Title'}),
+ required = True,
+ error_messages = {'required':'Title field required.'},
+ )
+ abstract = forms.CharField(min_length = 300, widget=forms.Textarea(attrs={'class': 'form-control', 'placeholder': 'Abstract'}),
+ required = True,
+ label = 'Abstract (Min. 300 char.)',
+ error_messages = {'required':'Abstract field required.'},
+ )
+ proposal_type = forms.CharField(widget = forms.HiddenInput(), label = '', initial = 'ABSTRACT', required=False)
+
+ duration = forms.ChoiceField(choices=abs_duration, label = 'Duration (Mins.)')
+
+ tags = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Tags'}),
+ required = False,
+ )
+
+
+ class Meta:
+ model = Proposal
+ exclude = ('user', 'email','prerequisite','status','rate')
+
+
+ def clean_attachment(self):
+ import os
+ cleaned_data = self.cleaned_data
+ attachment = cleaned_data.get('attachment', None)
+ if attachment:
+ ext = os.path.splitext(attachment.name)[1]
+ valid_extensions = ['.pdf']
+ if not ext in valid_extensions:
+ raise forms.ValidationError(u'File not supported! Only .pdf file is accepted')
+ if attachment.size > (5*1024*1024):
+ raise forms.ValidationError('File size exceeds 5MB')
+ return attachment
+
+
+class WorkshopForm(forms.ModelForm):
+ about_me = forms.CharField(widget=forms.Textarea(attrs={'class': 'form-control', 'placeholder': 'About Me'}),
+ required = True,
+ error_messages = {'required':'About Me field required.'},
+ )
+ attachment = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True}),
+ label = 'Please upload relevant documents (if any)',
+ required = False,)
+ phone = forms.CharField(min_length = 10, max_length = 12, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Phone'}),required=False, validators = [RegexValidator(regex = '^[0-9-_+.]*$', message='Enter a Valid Phone Number',)],
+ )
+ title = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Title'}),
+ required = True,
+ error_messages = {'required':'Title field required.'},
+ )
+ abstract = forms.CharField(min_length = 300 ,widget=forms.Textarea(attrs={'class': 'form-control', 'placeholder': 'Desciption'}),
+ required = True,
+ label = 'Description (Min. 300 char.)',
+ error_messages = {'required':'Abstract field required.'},
+ )
+ prerequisite = forms.CharField(widget=forms.Textarea(attrs={'class': 'form-control', 'placeholder': 'Prerequisite'}),
+ label = 'Prerequisites',
+ required = False,
+ )
+ proposal_type = forms.CharField(widget = forms.HiddenInput(), label = '', required=False, initial = 'WORKSHOP')
+
+ duration = forms.ChoiceField(choices=ws_duration, label = 'Duration (Hrs.)')
+
+ tags = forms.ChoiceField(choices=MY_CHOICES, label = 'Level')
+
+ class Meta:
+ model = Proposal
+ exclude = ('user', 'email','status','rate')
+
+ def clean_attachment(self):
+ import os
+ cleaned_data = self.cleaned_data
+ attachment = cleaned_data.get('attachment', None)
+ if attachment:
+ ext = os.path.splitext(attachment.name)[1]
+ valid_extensions = ['.pdf',]
+ if not ext in valid_extensions:
+ raise forms.ValidationError(u'File not supported! Only .pdf file is accepted')
+ if attachment.size > (5*1024*1024):
+ raise forms.ValidationError('File size exceeds 5MB')
+ return attachment
+
+class UserRegisterForm(UserCreationForm):
+ class Meta:
+ model = User
+ fields = ('first_name', 'last_name', 'email', 'username', 'password1',
+ 'password2')
+ first_name = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'First Name'}),
+ label = 'First Name'
+ )
+ last_name = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Last Name'}),
+ label = 'Last Name'
+ )
+ email = forms.EmailField(widget=forms.TextInput(attrs={'placeholder': 'Email'}),
+ required = True,
+ error_messages = {'required':'Email field required.'},
+ label = 'Email'
+ )
+ username = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Username'}),
+ required = True,
+ error_messages = {'required':'Username field required.'},
+ label = 'Username'
+ )
+ password1 = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': 'Password'}),
+ required = True,
+ error_messages = {'required':'Password field required.'},
+ label = 'Password'
+ )
+ password2 = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': 'Confirm Password'}),
+ required = True,
+ error_messages = {'required':'Password Confirm field required.'},
+ label = 'Re-enter Password'
+ )
+
+ def clean_first_name(self):
+ return self.cleaned_data["first_name"].title()
+
+ def clean_email(self):
+ return self.cleaned_data["email"].lower()
+
+ def clean_last_name(self):
+ return self.cleaned_data["last_name"].title()
+
+
+class UserLoginForm(forms.Form):
+ username = forms.CharField(
+ widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Username'}),
+ label=''
+ )
+ password = forms.CharField(
+ widget=forms.PasswordInput(attrs={'class': 'form-control', 'placeholder': 'Password'}),
+ label=''
+ )