class FormLogin(FlaskForm): usuario = StringField( 'Usuário', validators=[Data(), Regexp('^[a-z0-9_]+$', message=MSG_USUARIO)]) senha = PasswordField('Senha', validators=[Data()]) submit = SubmitField('Entrar')
class FormAtualizacaoPedido(FlaskForm): id = HiddenField() cliente = StringField('Cliente', validators=[Data()]) itens = FieldList(FormField(FormItensPedido)) vendedor = HiddenField() desconto = IntegerField('Desconto', validators=[Data()]) total = HiddenField() submit = SubmitField('Cadastrar') def validate_cliente(self, field): if Cliente.query.filter_by(documento=field.data).first() is None: raise ValidationError('Cliente não encontrado.') def populate(self, pedido): i = 0 cliente = Cliente.query.filter_by(documento=self.cliente.data).first() pedido.cliente = cliente vendedor = Funcionario.query.filter_by(id=current_user.id).first() pedido.vendedor = vendedor pedido.desconto = self.desconto.data total = 0 for item in pedido.itens: livro = Livro.query.filter_by( isbn=self.itens[i].livro.data).first() item.livro = livro item.quantidade = self.itens[i].quantidade.data total += livro.preco * item.quantidade i += 1 pedido.total = total
class FormItensPedido(FlaskForm): livro = StringField('Livro', validators=[Data()]) quantidade = IntegerField('Quantidade', validators=[Data()]) def validate_livro(self, field): if not is_isbn10(field.data) and not is_isbn13(field.data): return ValidationError('ISBN inválido') if Livro.query.filter_by(isbn=field.data).first() is None: raise ValidationError('Livro não encontrado.')
class FormAtualizacaoVendedor(FlaskForm): id = HiddenField(validators=[Data()]) nome = StringField('Nome', validators=[Data()]) usuario = StringField( 'Usuário', validators=[Data(), Regexp('^[a-z0-9_]+$', message=MSG_USUARIO)]) nova_senha = PasswordField( 'Nova senha', description='Opcional', validators=[EqualTo('confirma_senha', message=MSG_SENHA)]) confirma_senha = PasswordField('Confirme a senha') submit = SubmitField('Atualizar')
class FormCadastroCliente(FlaskForm): nome = StringField('Nome', validators=[Data()]) documento = StringField( 'Documento', validators=[Data(), Regexp('^[0-9]{5,13}$', message=MSG_DOC)]) data_nascimento = DateField('Data de nascimento', validators=[Data()], format='%d/%m/%Y') endereco = FormField(FormEndereco) telefone = StringField( 'Telefone', validators=[Data(), Regexp('^[0-9]{10,11}$', message=MSG_TEL)]) email = StringField('E-mail', validators=[Data(), Email()]) submit = SubmitField('Cadastrar')
class FormCadastroLivro(FlaskForm): titulo = StringField('Título', validators=[Data()]) autor = StringField('Autor', validators=[Data()]) editora = StringField('Editora', validators=[Data()]) edicao = StringField('Edição', validators=[Data()]) ano = IntegerField('Ano', validators=[Data()]) isbn = StringField('ISBN', validators=[Data()], id='isbn_field') idioma = StringField('Idioma', validators=[Data()]) preco = DecimalField('Preço', validators=[Data()]) exemplares = IntegerField('Número de exemplares', validators=[Data()]) submit = SubmitField('Enviar')
class FormConsultaPedido(FlaskForm): opcoes = [('id', 'Nº pedido'), ('cliente', 'Cliente'), ('vendedor', 'Vendedor')] campo = SelectField('Campo de busca', choices=opcoes) termo = StringField('Palavra-chave', validators=[Data()]) consultar_ativos = BooleanField('Consultar somente pedidos ativos.') submit = SubmitField('Consultar')
class FormCadastroVendedor(FlaskForm): nome = StringField('Nome', validators=[Data()]) usuario = StringField( 'Usuário', validators=[Data(), Regexp('^[a-z0-9_]+$', message=MSG_USUARIO)]) senha = PasswordField( 'Senha', validators=[Data(), EqualTo('confirma_senha', message=MSG_SENHA)]) confirma_senha = PasswordField('Confirme a senha', validators=[Data()]) admin = BooleanField('Conceder permissão de administrador.') submit = SubmitField('Registrar') def validate_usuario(self, field): if Funcionario.query.filter_by(usuario=field.data).first(): raise ValidationError('Nome de usuário já utilizado.')
class FormCadastroPedido(FlaskForm): cliente = StringField('Cliente', validators=[Data()]) itens = FieldList(FormField(FormItensPedido), min_entries=1, max_entries=9) desconto = IntegerField('Desconto', validators=[InputRequired()]) submit = SubmitField('Cadastrar') def validate_cliente(self, field): if Cliente.query.filter_by(documento=field.data).first() is None: raise ValidationError('Cliente não encontrado.')
class FormConsultaVendedor(FlaskForm): opcoes = [ (atr, atr.capitalize()) for atr in dir(Funcionario) if atr is not 'id' and not atr.startswith(('_', 'a', 'q', 'm', 'v', 'is', 'senha', 'get')) ] opcoes.insert(0, ('id', 'Registro')) campo = SelectField('Campo de busca', choices=opcoes) termo = StringField('Palavra-chave', validators=[Data()]) submit = SubmitField('Consultar')
class FormEndereco(FlaskForm): logradouro = StringField('Logradouro', validators=[Data()]) numero = StringField('Número', validators=[Data()]) complemento = StringField('Complemento') bairro = StringField('Bairro', validators=[Data()]) cidade = StringField('Cidade', validators=[Data()]) estado = StringField('Estado', validators=[Data()]) cep = StringField( 'CEP', validators=[Data(), Regexp('^[0-9]{8}$', message=MSG_CEP)])
class FormConsultaIsbn(FlaskForm): isbn = StringField('ISBN', validators=[Data()]) #, isbn()]) submit = SubmitField('Localizar')
class FormConsultaLivro(FlaskForm): opcoes = [(atr, atr.capitalize()) for atr in dir(Livro) if atr is not 'id' and not atr.startswith(('_', 'q', 'm'))] campo = SelectField('Campo de busca', choices=opcoes) termo = StringField('Palavra-chave', validators=[Data()]) submit = SubmitField('Consultar')
class FormNumeroPedido(FlaskForm): pedido = StringField('Nº pedido', validators=[Data()]) submit = SubmitField('Consultar')
class FormConsultaId(FlaskForm): id = StringField('Nº registro', validators=[Data()]) submit = SubmitField('Localizar')
class FormConsultaDocumento(FlaskForm): documento = StringField( 'Documento', validators=[Data(), Regexp('^[0-9]{5,13}$', message=MSG_DOC)]) submit = SubmitField('Localizar')