123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- # **************************************************************************
- # Copyright © 2017 jianglin
- # File Name: forms.py
- # Author: jianglin
- # Email: xiyang0807@gmail.com
- # Created: 2017-03-28 12:53:02 (CST)
- # Last Update:星期三 2017-3-29 22:51:17 (CST)
- # By:
- # Description:
- # **************************************************************************
- from flask import redirect, session, url_for
- from flask_babelex import lazy_gettext as _
- from flask_wtf import FlaskForm as Form
- from flask_wtf.file import FileAllowed, FileField, FileRequired
- from wtforms import (BooleanField, PasswordField, RadioField, SelectField,
- StringField, TextAreaField)
- from wtforms.validators import DataRequired, Email, EqualTo, Length
- from forums.api.forums.models import Board
- from forums.api.topic.models import Topic
- from forums.api.user.models import UserSetting
- def error_callback():
- return redirect(url_for('topic.ask'))
- def collect_error_callback():
- return redirect(url_for('collect.list'))
- def form_board():
- form = TopicForm()
- results = []
- for b in Board.query.all():
- if b.parent is None:
- results.append((b.id, b.name))
- else:
- results.append((b.id, b.name + ' --' + b.parent.name))
- form.category.choices = results
- return form
- class BaseForm(Form):
- username = StringField(
- _('Username:'), [DataRequired(), Length(
- min=4, max=20)])
- password = PasswordField(
- _('Password:'), [DataRequired(), Length(
- min=4, max=20)])
- captcha = StringField(
- _('Captcha:'), [DataRequired(), Length(
- min=4, max=4)])
- def validate(self):
- rv = Form.validate(self)
- if not rv:
- return False
- captcha = session['captcha']
- captcha_data = self.captcha.data
- if captcha_data.lower() != captcha.lower():
- self.captcha.errors.append(_('The captcha is error'))
- return False
- return True
- class RegisterForm(BaseForm):
- email = StringField(_('Email:'), [DataRequired(), Email()])
- class LoginForm(BaseForm):
- remember = BooleanField(_('Remember me'), default=False)
- WITHIN = [(0, _('All Topics')), (1, _('One Day')), (2, _('One Week')),
- (3, _('One Month'))]
- ORDERBY = [(0, _('Publish')), (1, _('Author'))]
- DESC = [(0, _('Desc')), (1, _('Asc'))]
- class SortForm(Form):
- within = SelectField(_('Choice'), coerce=int, choices=WITHIN)
- orderby = SelectField('orderby', coerce=int, choices=ORDERBY)
- desc = SelectField('Up and Down', coerce=int, choices=DESC)
- class SearchForm(Form):
- search = StringField(_('search'), validators=[DataRequired()])
- class MessageForm(Form):
- message = TextAreaField(_('message'), validators=[DataRequired()])
- class TopicForm(Form):
- title = StringField(_('Title:'), [DataRequired(), Length(min=4, max=36)])
- content = TextAreaField(_('Content:'), [DataRequired(), Length(min=6)])
- category = SelectField(_('Category:'), coerce=int)
- tags = StringField(_('Tags:'), [DataRequired(), Length(min=2, max=36)])
- content_type = SelectField(
- _('ContentType'), choices=Topic.CONTENT_TYPE, coerce=str)
- class ReplyForm(Form):
- content = TextAreaField(_('Content:'), [DataRequired()])
- class CollectForm(Form):
- name = StringField(_('Name:'), [DataRequired()])
- description = TextAreaField(_('Description:'))
- is_hidden = RadioField(
- 'Is_hidden:', choices=[(0, 'is_hidden'), (1, 'is_public')], coerce=int)
- choices = UserSetting.STATUS
- timezone = UserSetting.TIMEZONE
- locale = UserSetting.LOCALE
- class AvatarForm(Form):
- avatar = FileField(
- _('Upload Avatar:'),
- validators=[FileRequired(), FileAllowed(['jpg', 'png'],
- '上传文件只能为图片且图片格式为jpg,png')])
- class PrivacyForm(Form):
- online_status = SelectField(
- _('Online status:'), coerce=str, choices=choices)
- topic_list = SelectField(_('Topic List:'), coerce=str, choices=choices)
- rep_list = SelectField(_('Reply List:'), coerce=str, choices=choices)
- ntb_list = SelectField(_('Notebook List:'), coerce=str, choices=choices)
- collect_list = SelectField(_('Collect List:'), coerce=str, choices=choices)
- class ProfileForm(Form):
- introduce = TextAreaField(_('Introduce:'), [Length(max=256)])
- school = StringField(_('School:'), [Length(max=256)])
- word = TextAreaField(_('Signature:'), [Length(max=256)])
- class PasswordForm(Form):
- old_password = PasswordField(
- _('Old Password:'), [DataRequired(), Length(
- min=4, max=20)])
- new_password = PasswordField(
- _('New Password:'), [DataRequired(), Length(
- min=4, max=20)])
- rnew_password = PasswordField(
- _('New Password again:'), [DataRequired(), EqualTo('new_password')])
- class BabelForm(Form):
- timezone = SelectField(_('Timezone:'), coerce=str, choices=timezone)
- locale = SelectField(_('Locale:'), coerce=str, choices=locale)
|