-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathforms.py
63 lines (50 loc) · 3.09 KB
/
forms.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
from flask_wtf import FlaskForm
from flask_wtf.file import FileField
from wtforms import widgets,SelectMultipleField
from wtforms import (StringField,PasswordField,BooleanField,SubmitField,
TextField,SelectField,HiddenField,SelectField)
from wtforms.validators import ValidationError,DataRequired,Length,Email,EqualTo
from models import User,Admin,Question
class MultiCheckboxField(SelectMultipleField):
widget = widgets.ListWidget(prefix_label=False)
option_widget = widgets.CheckboxInput()
class SignupForm(FlaskForm):
firstname = StringField('firstname',validators= [DataRequired(),Length(min = 2,max = 25)])
lastname = StringField('lastname',validators = [DataRequired(),Length(min = 2,max = 25)])
email = StringField('email',validators = [DataRequired(),Email()])
username = StringField('username',validators = [DataRequired(),Length(min = 2,max = 30)])
password = PasswordField('password',validators = [DataRequired()])
confirm = PasswordField('confirm',validators = [DataRequired(),EqualTo('password','passwords must match')])
submit = SubmitField('sign up')
def validate_username(self,username):
user = User.query.filter_by(username = username.data).first()
if user is not None:
raise ValidationError('This username already exits.Choose some other username')
def validate_email(self,email):
user = User.query.filter_by(email = email.data).first()
if user is not None:
raise ValidationError('Account associated with this email already exits')
class LoginForm(FlaskForm):
username = StringField('username',validators = [DataRequired(),Length(min = 2,max = 30)])
password = PasswordField('password',validators = [DataRequired()])
submit = SubmitField('sign in')
class AdminForm(FlaskForm):
username = StringField('username',validators = [DataRequired(),Length(min = 2,max = 30)])
password = PasswordField('password',validators = [DataRequired()])
submit = SubmitField('sign in')
class CreateQuestion(FlaskForm):
title = StringField('title',validators = [DataRequired(),Length(max = 30)])
content = TextField('content')
testcode = TextField('testcode',validators = [DataRequired()])
inputfile = FileField('inputfile')
output = HiddenField('output')
submit= SubmitField('Add/update')
company = MultiCheckboxField('company',choices = [('Amazon','Amazon'),('Oracle','Oracle'),('Adobe','Adobe'),('JP Morgan','JP Morgan'),
('Goldman Sacks','Goldman Sacks')])
topic = MultiCheckboxField('topic',choices = [('array','array'),('string','string'),('matrix','matrix'),
('dp','dp'),('greedy','greedy'),('brut force','brut force')])
difficulty = SelectField('difficulty',choices = [('Easy','Easy'),('Medium','Medium'),('Hard','Hard')])
def validate_title(self,title):
q = Question.query.filter_by(title=title.data).first()
if q is not None:
raise ValidationError('This title already exists.Choose some other title')