class FormEditarAmbienteInterno(FormBase): nome = StringField('Nome', validators=[InputRequired(), Length(1, 64)]) andar = Select2Field('Andar', choices=[('Térreo', 'Térreo')] + [(str(n) + 'º Andar', str(n) + 'º Andar') for n in range(1, 11)]) bloco = QuerySelectField( 'Bloco', query_factory=lambda: Bloco.query.order_by('nome').all()) detalhe_localizacao = TextAreaField('Detalhe de Localização') area = DecimalField('Área (m²)', use_locale=True, validators=[Optional(), NumberRange(0)]) populacao = IntegerField('População', validators=[Optional(), NumberRange(0)]) equipamentos = QuerySelectMultipleField( 'Equipamentos', allow_blank=True, query_factory=lambda: Equipamento.query.order_by('tipo_equipamento' ).all())
class FormEditarSubestacaoAerea(FormBase): nome = StringField('Nome', validators=[InputRequired(), Length(1, 64)]) bloco = QuerySelectField( 'Bloco', query_factory=lambda: # Mostrar apenas blocos especiais de subestação Bloco.query.filter(Bloco.nome.like('Subestações%')).order_by('nome'). all()) localizacao = GeoJSONField( 'Localização', srid=-1, session=db.session, geometry_type='POINT', # Aumentar o mapa render_kw={ 'data-width': 400, 'data-height': 400 }) detalhe_localizacao = TextAreaField('Detalhe de Localização') equipamentos = QuerySelectMultipleField( 'Equipamentos', allow_blank=True, query_factory=lambda: Equipamento.query.order_by('tipo_equipamento' ).all())
class FormEditarCentro(FormBase): nome = StringField('Nome', validators=[InputRequired(), Length(1, 64)]) campus = QuerySelectField( 'Campus', query_factory=lambda: Campus.query.order_by('nome').all()) mapeamento = GeoJSONField( 'Mapeamento', srid=-1, session=db.session, geometry_type='MULTIPOLYGON', # Aumentar o mapa render_kw={ 'data-width': 400, 'data-height': 400 }) departamentos = QuerySelectMultipleField( 'Departamentos', allow_blank=True, query_factory=lambda: Departamento.query.order_by('nome').all()) # Inicialização def __init__(self, *args, **kwargs): super(FormEditarCentro, self).__init__(*args, **kwargs) # Existe um problema com a extensão Leaflet que não permite # a edição de mapas com polígonos. flash('No momento, a edição de mapeamento não é possível.', 'info')
class FormEditarInstituicao(FormBase): nome = StringField('Nome', validators=[InputRequired(), Length(1, 64)]) campi = QuerySelectMultipleField( 'Campi', allow_blank=True, query_factory=lambda: Campus.query.order_by('nome').all())
def from_model(cls, question: model.Question, fill: model.FilledQuiz, *args, **kwargs): class Form(QuestionForm): pass if question.show_choices: if question.multiple: Form.answer = QuerySelectMultipleField( '', query_factory=choices(question), get_pk=lambda x: x.id, get_label=lambda x: x.value) Form.submit = wtf.SubmitField(_l('Save')) else: Form.answer = wtf.RadioField('', choices=[ (x.id, x.value) for x in choices(question)() ], coerce=int) Form.submit = wtf.SubmitField(_l('Save')) else: Form.answer = wtf.StringField( '', validators=[wtf.validators.Length(max=255)]) Form.submit = wtf.SubmitField(_l('Save')) form = Form(fill, question, *args, **kwargs) return form
class OfferCriteriaForm(SecureForm): criteria = QuerySelectMultipleField( query_factory=_select_criteria, allow_blank=True, validators=[ validators.DataRequired(), ], )
class OfferChangeForm(Form): ids = HiddenField() tags = QuerySelectMultipleField( get_label="name", query_factory=lambda: Criterion.query.all(), # pylint: disable=unnecessary-lambda allow_blank=True, ) remove_other_tags = BooleanField(label="Supprimer tous les autres tags", )
class FormEditarUnidadeResponsavel(FormBase): nome = StringField('Nome', validators=[InputRequired(), Length(1, 64)]) responsaveis = QuerySelectMultipleField('Responsáveis', query_factory=\ lambda: Usuario.query.all(), validators=[InputRequired()]) unidades_consumidoras = QuerySelectMultipleField('Unidades Consumidoras', query_factory=\ lambda: UnidadeConsumidora.query.all(), allow_blank=True) # Certificar que, se houve alteração no nome, o novo é diferente dos já cadastrados def validate_nome(self, field): if UnidadeResponsavel.query.filter_by(nome=field.data).first() and \ field.data != UnidadeResponsavel.query.get(request.args.get('id')).nome: raise ValidationError('Unidade já cadastrada.')
class FormEditarDepartamento(FormBase): nome = StringField('Nome', validators=[InputRequired(), Length(1, 64)]) centro = QuerySelectField( 'Centro', query_factory=lambda: Centro.query.order_by('nome').all()) blocos = QuerySelectMultipleField( 'Blocos', allow_blank=True, query_factory=lambda: Bloco.query.order_by('nome').all())
class FormEditarCondicionadorAr(FormBase): # Caso não haja número de tombamento, usar 0 tombamento = IntegerField('Tombamento', validators=[NumberRange(0)]) classificacao = Select2Field('Classificação', choices=[('Split', 'Split'), ('Janela', 'Janela'), ('Teto Aparente', 'Teto Aparente'), ('Piso Aparente', 'Piso Aparente')]) cap_refrigeracao = IntegerField('Capacidade de Refrigeração (Btu/h)', validators=[NumberRange(0)]) pot_nominal = IntegerField('Potência Nominal de Entrada (W)', validators=[Optional(), NumberRange(0)]) tensao_alimentacao = Select2Field('Tensão de Alimentação (V)', choices=[(220, '220'), (380, '380')], coerce=int, validators=[InputRequired()]) eficiencia = Select2Field('Eficiência (Selo Procel)', choices=[('A', 'A'), ('B', 'B'), ('C', 'C'), ('D', 'D'), ('E', 'E'), ('F', 'F'), ('G', 'G')]) fabricante = StringField('Fabricante', validators=[Length(1, 64)]) ambiente = QuerySelectField( 'Ambiente', query_factory=lambda: Ambiente.query.order_by('nome').all()) intervalo_manutencao = IntegerField( 'Intervalo de Manutenção (Meses)', validators=[InputRequired(), NumberRange(0)]) em_uso = BooleanField('Em Uso') info_adicional = TextAreaField('Informações Adicionais') manutencoes = QuerySelectMultipleField( 'Manutenções', query_factory=lambda: Manutencao.query.all(), allow_blank=True) # Certificar que, se houve alteração no número de tombamento, o novo número # não é de um equipamento já existente def validate_tombamento(self, field): # Desconsiderar o caso 0 (quando não há número de tombamento) if field.data != 0: if Equipamento.query.filter_by(tombamento=field.data).first() and \ field.data != Equipamento.query.get(request.args.get('id')).tombamento: raise ValidationError('Equipamento já cadastrado.')
class FormCriarUnidadeResponsavel(FormBase): nome = StringField('Nome', validators=[InputRequired(), Length(1, 64)]) responsaveis = QuerySelectMultipleField('Responsáveis', query_factory=\ lambda: Usuario.query.filter_by(responsavel_unidade=None).all(), validators=[InputRequired()]) # Certificar que o nome é diferente dos já cadastrados def validate_nome(self, field): if UnidadeResponsavel.query.filter_by(nome=field.data).first(): raise ValidationError('Unidade já cadastrada.')
class FormEditarCargo(FormBase): nome = StringField('Nome', validators=[InputRequired(), Length(1, 36)]) permissoes = IntegerField( 'Permissões', validators=[InputRequired(), NumberRange(0, 255)]) padrao = BooleanField('Padrão') usuarios = QuerySelectMultipleField( 'Usuários', allow_blank=True, query_factory=lambda: Usuario.query.order_by('nome').all())
class FormEditarAmbienteExterno(FormBase): nome = StringField('Nome', validators=[InputRequired(), Length(1, 64)]) bloco = QuerySelectField( 'Bloco', query_factory=lambda: Bloco.query.order_by('nome').all()) detalhe_localizacao = TextAreaField('Detalhe de Localização') equipamentos = QuerySelectMultipleField( 'Equipamentos', allow_blank=True, query_factory=lambda: Equipamento.query.order_by('tipo_equipamento' ).all())
class CanellaRegisterForm(UsernameEmailMixin, NewPasswordConfirmMixin, RegisterForm): submit = None roles = QuerySelectMultipleField( label=lazy_gettext('User Roles'), allow_blank=True, blank_text=lazy_gettext('No Roles'), query_factory=lambda: Role.query, ) send_confirmation = BooleanField( label=lazy_gettext('Require email confirmation'), description=lazy_gettext('we will not activate this account untill the user confirms his/her email address'), default=True )
class FormEditarExtintor(FormBase): # Caso não haja número de tombamento, usar 0 tombamento = IntegerField('Tombamento', validators=[NumberRange(0)]) classificacao = Select2Field('Classificação', choices=[ ('Água [A]', 'Água [A]'), ('Espuma [AB]', 'Espuma [AB]'), ('CO2 [BC]', 'CO2 [BC]'), ('Pó Químico [BC]', 'Pó Químico [BC]'), ('Pó Químico [ABC]', 'Pó Químico [ABC]') ], validators=[InputRequired()]) carga_nominal = DecimalField('Carga Nominal (kg)', use_locale=True, validators=[NumberRange(0)]) fabricante = StringField('Fabricante', validators=[Length(1, 64)]) ambiente = QuerySelectField( 'Ambiente', query_factory=lambda: Ambiente.query.order_by('nome').all()) intervalo_manutencao = IntegerField( 'Intervalo de Manutenção (Meses)', validators=[InputRequired(), NumberRange(0)]) em_uso = BooleanField('Em Uso') info_adicional = TextAreaField('Informações Adicionais') manutencoes = QuerySelectMultipleField( 'Manutenções', query_factory=lambda: Manutencao.query.all(), allow_blank=True) # Certificar que, se houve alteração no número de tombamento, o novo número # não é de um equipamento já existente def validate_tombamento(self, field): # Desconsiderar o caso 0 (quando não há número de tombamento) if field.data != 0: if Equipamento.query.filter_by(tombamento=field.data).first() and \ field.data != Equipamento.query.get(request.args.get('id')).tombamento: raise ValidationError('Equipamento já cadastrado.')
class OyRegisterForm(RegisterForm): user_name = StringField( label=lazy_gettext("User Name"), description=lazy_gettext("Should be UNIQUE"), validators=[data_required(), unique_username], render_kw=dict(required=True), ) email = EmailField( label=lazy_gettext("User Email"), description=lazy_gettext( "An active email address, a confirmation link will be sent to it." ), validators=[email_required, email_validator, unique_user_email], render_kw=dict(required=True), ) password = PasswordField( label=lazy_gettext("Password"), description=lazy_gettext("Not less than 6 characters"), validators=[password_required, password_length], render_kw=dict(required=True), ) password_confirm = PasswordField( label=lazy_gettext("Re-Type Password"), validators=[EqualTo("password", message="RETYPE_PASSWORD_MISMATCH")], render_kw=dict(required=True), ) roles = QuerySelectMultipleField( label=lazy_gettext("User Roles"), allow_blank=True, blank_text=lazy_gettext("No Roles"), query_factory=lambda: Role.query, ) send_confirmation = BooleanField( label=lazy_gettext("Require email confirmation"), description=lazy_gettext( "we will not activate this account untill the user confirms his/her email address" ), default=True, )
class FormEditarBloco(FormBase): nome = StringField('Nome', validators=[InputRequired(), Length(1, 64)]) departamento = QuerySelectField( 'Departamento', query_factory=lambda: Departamento.query.order_by('nome').all()) localizacao = GeoJSONField( 'Localização', srid=-1, session=db.session, geometry_type='POINT', # Aumentar o mapa render_kw={ 'data-width': 400, 'data-height': 400 }) ambientes = QuerySelectMultipleField( 'Ambientes', allow_blank=True, query_factory=lambda: Ambiente.query.order_by('nome').all())
class FormEditarUnidadeConsumidora(FormBase): num_cliente = IntegerField('Número do Cliente', validators=[InputRequired(), NumberRange(0)]) nome = StringField('Nome', validators=[InputRequired(), Length(1, 64)]) unidade_responsavel = QuerySelectField( 'Unidade Responsável', query_factory=lambda: UnidadeResponsavel.query.order_by('nome').all(), validators=[InputRequired()]) endereco = StringField('Endereço', validators=[InputRequired(), Length(1, 300)]) localizacao = GeoJSONField( 'Localização', srid=-1, session=db.session, geometry_type='POINT', # Aumentar o mapa e centralizar em Fortaleza render_kw={ 'data-width': 400, 'data-height': 400, 'data-zoom': 10, 'data-lat': -3.7911773, 'data-lng': -38.5893123 }) mod_tarifaria = Select2Field( 'Modalidade Tarifária', choices=[('Horária Verde', 'Horária Verde')], #('Convencional Monômia', 'Convencional Monômia')], validators=[InputRequired()]) num_medidores = IntegerField('Número dos Medidores', validators=[InputRequired(), NumberRange(0)]) hist_contas = QuerySelectMultipleField('Histórico de Contas', query_factory=\ lambda: Conta.query.all(), allow_blank=True) # Certificar que, se houve alteração no número de cliente, o novo é diferente dos # já existentes def validate_num_cliente(self, field): if UnidadeConsumidora.query.filter_by(num_cliente=field.data).first() and \ field.data != UnidadeConsumidora.query.get(request.args.get('id')).num_cliente: raise ValidationError('Unidade já cadastrada.') # Certificar que, se houve alteração no nome, o novo é diferente dos já cadastrados def validate_nome(self, field): if UnidadeConsumidora.query.filter_by(nome=field.data).first() and \ field.data != UnidadeConsumidora.query.get(request.args.get('id')).nome: raise ValidationError('Unidade já cadastrada.') # Certificar que, se houve alteração no número dos medidores, o novo é diferente dos # já existentes def validate_num_medidores(self, field): if UnidadeConsumidora.query.filter_by(num_medidores=field.data).first() and \ field.data != UnidadeConsumidora.query.get(request.args.get('id')).num_medidores: raise ValidationError('Número já cadastrado.')