コード例 #1
0
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())
コード例 #2
0
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())
コード例 #3
0
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')
コード例 #4
0
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())
コード例 #5
0
    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
コード例 #6
0
class OfferCriteriaForm(SecureForm):
    criteria = QuerySelectMultipleField(
        query_factory=_select_criteria,
        allow_blank=True,
        validators=[
            validators.DataRequired(),
        ],
    )
コード例 #7
0
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", )
コード例 #8
0
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.')
コード例 #9
0
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())
コード例 #10
0
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.')
コード例 #11
0
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.')
コード例 #12
0
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())
コード例 #13
0
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())
コード例 #14
0
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
    )
コード例 #15
0
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.')
コード例 #16
0
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,
    )
コード例 #17
0
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())
コード例 #18
0
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.')