# coding: utf-8 from flask import session from flask.ext.login import current_user from flask_wtf import Form from wtforms import StringField from wtforms import ValidationError from wtforms.validators import Email from wtforms.validators import InputRequired from wtforms.validators import Regexp from daimaduan.models.base import User class UserInfoForm(Form): username = StringField(u'昵称', validators=[ InputRequired(), Regexp(r'^[a-zA-Z0-9-_]{3,12}$', message=u'3到12个字符,不能包含空格')]) email = StringField(u'邮箱地址', validators=[InputRequired(), Email()]) description = StringField(u'个性签名', validators=[ InputRequired(), Regexp(r'^.{1,20}$', message=u'1到20个字符')]) def validate_username(self, field): if current_user.is_authenticated and current_user.user.username == field.data: return True user = User.objects(username=field.data).first() if user: raise ValidationError(u'用户名已被使用') def validate_email(self, field): if current_user.is_authenticated: field.data = current_user.user.email return True if session['email']: if session['email'] != field.data: raise ValidationError(u'不能修改第三方登录的email地址') user = User.objects(email=field.data).first() if user: raise ValidationError(u'Email地址已被使用')