13
13
import hmac
14
14
import hashlib
15
15
import textwrap
16
- from flask import *
17
- from flaskext .wtf import *
18
- from flaskext .mail import Message
16
+ from flask import (Blueprint , request , session , g , abort , redirect ,
17
+ url_for , current_app )
18
+ from flask .ext import wtf
19
+ from flask .ext .mail import Message
19
20
from sqlalchemy import orm
20
21
from langdev .user import User
21
22
from langdev .web import before_request , errorhandler , render
@@ -109,18 +110,18 @@ def signout():
109
110
return redirect (return_url )
110
111
111
112
112
- class SignInForm (Form ):
113
+ class SignInForm (wtf . Form ):
113
114
114
- login = TextField ('Login name' ,
115
- validators = [Required (), Length (2 , 45 ),
116
- Regexp (User .LOGIN_PATTERN )])
117
- password = PasswordField ('Password' , validators = [Required ()])
118
- return_url = HiddenField (validators = [Optional ()])
119
- submit = SubmitField ('Login' )
115
+ login = wtf . TextField ('Login name' ,
116
+ validators = [wtf . Required (), wtf . Length (2 , 45 ),
117
+ wtf . Regexp (User .LOGIN_PATTERN )])
118
+ password = wtf . PasswordField ('Password' , validators = [wtf . Required ()])
119
+ return_url = wtf . HiddenField (validators = [wtf . Optional ()])
120
+ submit = wtf . SubmitField ('Login' )
120
121
121
122
def validate_login (form , field ):
122
123
if g .session .query (User ).filter_by (login = field .data ).count () < 1 :
123
- raise ValidationError ('There is no {0}.' .format (field .data ))
124
+ raise wtf . ValidationError ('There is no {0}.' .format (field .data ))
124
125
125
126
def validate_password (form , field ):
126
127
try :
@@ -129,7 +130,7 @@ def validate_password(form, field):
129
130
pass
130
131
else :
131
132
if user .password != field .data :
132
- raise ValidationError ('Incorrect password.' )
133
+ raise wtf . ValidationError ('Incorrect password.' )
133
134
134
135
135
136
@user .route ('/f/signin' )
@@ -154,50 +155,55 @@ def signin():
154
155
return signin_form (form = form )
155
156
156
157
157
- class SignUpForm (Form ):
158
+ class SignUpForm (wtf . Form ):
158
159
159
- login = TextField ('Login name' ,
160
- validators = [Required (), Length (2 , 45 ),
161
- Regexp (User .LOGIN_PATTERN )])
162
- password = PasswordField (
160
+ login = wtf . TextField ('Login name' ,
161
+ validators = [wtf . Required (), wtf . Length (2 , 45 ),
162
+ wtf . Regexp (User .LOGIN_PATTERN )])
163
+ password = wtf . PasswordField (
163
164
'Password' ,
164
- validators = [Required (), EqualTo ( 'confirm' ,
165
- message = 'Passwords must match.' )]
165
+ validators = [wtf . Required (),
166
+ wtf . EqualTo ( 'confirm' , message = 'Passwords must match.' )]
166
167
)
167
- confirm = PasswordField ('Repeat Password' , validators = [Required ()])
168
- name = TextField ('Screen name' , validators = [Required (), Length (1 , 45 )])
169
- email = html5 .EmailField ('Email' , validators = [Optional (), Email ()])
170
- url = html5 .URLField ('Website' , validators = [Optional (), URL ()])
168
+ confirm = wtf .PasswordField ('Repeat Password' , validators = [wtf .Required ()])
169
+ name = wtf .TextField ('Screen name' ,
170
+ validators = [wtf .Required (), wtf .Length (1 , 45 )])
171
+ email = wtf .html5 .EmailField ('Email' ,
172
+ validators = [wtf .Optional (), wtf .Email ()])
173
+ url = wtf .html5 .URLField ('Website' , validators = [wtf .Optional (), wtf .URL ()])
171
174
172
175
@classmethod
173
176
def get_instance (cls , * args , ** kwargs ):
174
177
if ('RECAPTCHA_PUBLIC_KEY' in current_app .config and
175
178
'RECAPTCHA_PRIVATE_KEY' in current_app .config ):
176
179
class SignUpForm_recaptcha (cls ):
177
- recaptcha = RecaptchaField ()
178
- submit = SubmitField ('Sign up' )
180
+ recaptcha = wtf . RecaptchaField ()
181
+ submit = wtf . SubmitField ('Sign up' )
179
182
return SignUpForm_recaptcha (* args , ** kwargs )
180
183
class SignUpForm_plain (cls ):
181
- submit = SubmitField ('Sign up' )
184
+ submit = wtf . SubmitField ('Sign up' )
182
185
return SignUpForm_plain (* args , ** kwargs )
183
186
184
187
def validate_login (form , field ):
185
188
if g .session .query (User ).filter_by (login = field .data ).count ():
186
- raise ValidationError ('{0} is already taken.' .format (field .data ))
189
+ raise wtf .ValidationError (
190
+ '{0} is already taken.' .format (field .data ))
187
191
188
192
189
- class ProfileForm (Form ):
193
+ class ProfileForm (wtf . Form ):
190
194
191
- password = PasswordField (
195
+ password = wtf . PasswordField (
192
196
'Password' ,
193
- validators = [Required (), EqualTo ( 'confirm' ,
194
- message = 'Passwords must match.' )]
197
+ validators = [wtf . Required (),
198
+ wtf . EqualTo ( 'confirm' , message = 'Passwords must match.' )]
195
199
)
196
- confirm = PasswordField ('Repeat Password' , validators = [Required ()])
197
- name = TextField ('Screen name' , validators = [Required (), Length (1 , 45 )])
198
- email = html5 .EmailField ('Email' , validators = [Optional (), Email ()])
199
- url = html5 .URLField ('Website' , validators = [Optional (), URL ()])
200
- submit = SubmitField ('Save' )
200
+ confirm = wtf .PasswordField ('Repeat Password' , validators = [wtf .Required ()])
201
+ name = wtf .TextField ('Screen name' ,
202
+ validators = [wtf .Required (), wtf .Length (1 , 45 )])
203
+ email = wtf .html5 .EmailField ('Email' ,
204
+ validators = [wtf .Optional (), wtf .Email ()])
205
+ url = wtf .html5 .URLField ('Website' , validators = [wtf .Optional (), wtf .URL ()])
206
+ submit = wtf .SubmitField ('Save' )
201
207
202
208
203
209
@user .route ('/f/signup' )
@@ -282,16 +288,16 @@ def posts(user_login):
282
288
return render ('user/posts' , posts , user = user , posts = posts )
283
289
284
290
285
- class PasswordFindingForm (Form ):
291
+ class PasswordFindingForm (wtf . Form ):
286
292
287
- login = TextField ('Login name' ,
288
- validators = [Required (), Length (2 , 45 ),
289
- Regexp (User .LOGIN_PATTERN )])
290
- submit = SubmitField ('Find' )
293
+ login = wtf . TextField ('Login name' ,
294
+ validators = [wtf . Required (), wtf . Length (2 , 45 ),
295
+ wtf . Regexp (User .LOGIN_PATTERN )])
296
+ submit = wtf . SubmitField ('Find' )
291
297
292
298
def validate_login (form , field ):
293
299
if g .session .query (User ).filter_by (login = field .data ).count () < 1 :
294
- raise ValidationError ('There is no {0}.' .format (field .data ))
300
+ raise wtf . ValidationError ('There is no {0}.' .format (field .data ))
295
301
296
302
297
303
@user .route ('/f/orgot' )
@@ -386,15 +392,15 @@ def request_find_password(user_login):
386
392
return response
387
393
388
394
389
- class ChangePasswordForm (Form ):
395
+ class ChangePasswordForm (wtf . Form ):
390
396
391
- password = PasswordField (
397
+ password = wtf . PasswordField (
392
398
'Password' ,
393
- validators = [Required (), EqualTo ( 'confirm' ,
394
- message = 'Passwords must match.' )]
399
+ validators = [wtf . Required (),
400
+ wtf . EqualTo ( 'confirm' , message = 'Passwords must match.' )]
395
401
)
396
- confirm = PasswordField ('Repeat Password' , validators = [Required ()])
397
- submit = SubmitField ('Save' )
402
+ confirm = wtf . PasswordField ('Repeat Password' , validators = [wtf . Required ()])
403
+ submit = wtf . SubmitField ('Save' )
398
404
399
405
400
406
@user .route ('/<user_login>/password-findings/<token>' )
0 commit comments