· 6 years ago · Jun 16, 2019, 05:50 PM
1class ProfileInfoForm(Form):
2 firstname = TextField('firstname', validators=
3 [validators.Required("Please enter First name.")])
4 lastname = TextField('lastname', validators=
5 [validators.Required("Please enter Last name.")])
6 email = EmailField('email', validators=
7 [validators.Required("Please enter your valid email.")])
8 gender = RadioField('gender', validators=
9 [validators.Required("Please select gender")],
10 choices=[('female', 'Female'), ('male', 'Male')])
11 dob = TextField('dob', validators=
12 [validators.Required("Please select date of birth.")])
13 languages = SelectMultipleField('languages', choices=[('', '')],
14 validators=
15 [validators.Required("Please select
16 atleast one
17 language.")])
18
19
20class RegistrationForm(Form):
21 profilefield = FormField(ProfileInfoForm)
22 password = PasswordField('password',
23 validators=
24 [validators.Required("Please enter password."),
25 validators.Length(min=8),
26 validators.EqualTo('confirm_password',
27 message='Password and confirm
28 password must match')])
29 confirm_password = PasswordField('confirm_password',
30 validators=
31 [validators.Required("Please enter
32 confirm password.")])
33 tnc = BooleanField('tnc', validators=
34 [validators.Required("Please select Terms and
35 Conditions")], default=False)
36
37 submit = SubmitField('Create My Account')
38
39@module.route('/signup', methods=['GET', 'POST'])
40 @handle_error
41 def signup():
42 if hasattr(g, 'user') and g.user:
43 # TODO: do some operations if needed else keep it blank
44 return redirect(url_for('index'))
45 else:
46 signup_form = RegistrationForm()
47 # Add choices for the user
48 signup_form.profilefield.languages.choices = getLanguages()
49 if signup_form.validate_on_submit():
50 firstname = signup_form.profilefield.firstname.data
51 lastname = signup_form.profilefield.lastname.data
52 email = signup_form.profilefield.email.data
53 password = signup_form.password.data
54 # confirm_password = signup_form.confirm_password.data
55 gender = signup_form.profilefield.gender.data
56 dob = signup_form.profilefield.dob.data
57 languages = signup_form.profilefield.languages.data
58 tnc = signup_form.tnc.data
59
60 payload = {'firstname': firstname, 'lastname': lastname,
61 'email': email, 'password': password, 'gender': gender,
62 'dob': dob, 'languages': languages,
63 'tnc': ('1' if tnc else '0')}
64 try:
65 buildApiUrl = BuildApiUrl()
66 response = requests.post(buildApiUrl.getUrl("user", "signup"),
67 data=payload)
68
69 if response.status_code == requests.codes.ok:
70 data = json.loads(response.text)
71 if 'status' in data and data['status'] != 200:
72 flash(data['message'], category="error")
73 else:
74 flash(data['message'] +
75 ': Your account is created successfully! ' +
76 'Please login to your account!',
77 category="success")
78 return redirect(url_for('index'))
79 except requests.exceptions.RequestException:
80 flash('Internal Server side error occured', category="error")
81 return redirect(url_for('server_error', e='500'))
82
83 return render_template('public/index.html',
84 signup_form=signup_form, login_form=LoginForm())
85
86{'SECRET_KEY': '1e4c35233e50840483467e8d6cfe556c',
87 '_errors': None,
88 '_fields': {'csrf_token': <wtforms.ext.csrf.fields.CSRFTokenField object at 0x2207290>,
89 'dob': <wtforms.fields.simple.TextField object at 0x2207650>,
90 'email': <flask_wtf.html5.EmailField object at 0x22074d0>,
91 'firstname': <wtforms.fields.simple.TextField object at 0x2207350>,
92 'gender': <wtforms.fields.core.RadioField object at 0x2207590>,
93 'languages': <wtforms.fields.core.SelectMultipleField object at 0x2207710>,
94 'lastname': <wtforms.fields.simple.TextField object at 0x2207410>},
95 '_prefix': u'profilefield-',
96 'csrf_enabled': True,
97 'csrf_token': <wtforms.ext.csrf.fields.CSRFTokenField object at 0x2207290>,
98 'dob': <wtforms.fields.simple.TextField object at 0x2207650>,
99 'email': <flask_wtf.html5.EmailField object at 0x22074d0>,
100 'firstname': <wtforms.fields.simple.TextField object at 0x2207350>,
101 'gender': <wtforms.fields.core.RadioField object at 0x2207590>,
102 'languages': <wtforms.fields.core.SelectMultipleField object at 0x2207710>,
103 'lastname': <wtforms.fields.simple.TextField object at 0x2207410>}
104
105def __init__(self, *args, **kwargs):
106 kwargs['csrf_enabled'] = False
107 super(ProfileInfoForm, self).__init__(*args, **kwargs)
108
109<h1>Login</h1>
110
111 <form action="" method="POST" name="login">
112 {{ login_form.csrf_token }}
113 {{ login_form.hidden_tag() }}
114
115 <p>
116 {{ login_form.email.label }}<br>
117 {{ login_form.email(size=64) }}<br>
118 {% for error in login_form.email.errors %}
119 <span style="color: red;">[{{ error }}]</span>
120 {% endfor %}
121 </p>
122 <p>
123 {{ login_form.password.label }}<br>
124 {{ login_form.password(size=32) }}<br>
125 {% for error in login_form.password.errors %}
126 <span style="color: red;">[{{ error }}]</span>
127 {% endfor %}
128 </p>
129 <p>{{ login_form.remember_me }} Remember Me</p>
130{# <input type="submit" value="Sign In">#}
131 <p>{{ login_form.submit() }}</p>
132 </form>