1

Good afternoon, I'm trying to make sure that forbidden characters don't get into the input field. But I don't understand how to do it. I either get an exception that I registered in the validator, or a message appears that forbidden characters have been entered, but the form is still sent.

Environment

Flask-Appbuilder version: 1.10.0, Python 3.6.14

my table:

class BaseColumn(AuditMixinNullable, ImportMixin):
    """Interface for column"""

    __tablename__ = None  # {connector_name}_column

    id = Column(Integer, primary_key=True)
    column_name = Column(String(255), nullable=False)
    verbose_name = Column(String(1024))
    is_active = Column(Boolean, default=True)
    type = Column(String(32))
    groupby = Column(Boolean, default=False)
    count_distinct = Column(Boolean, default=False)
    sum = Column(Boolean, default=False)
    avg = Column(Boolean, default=False)
    max = Column(Boolean, default=False)
    min = Column(Boolean, default=False)
    filterable = Column(Boolean, default=False)
    description = Column(Text)
    is_dttm = None

my validator:

@validates("column_name")
    def validate_column_name(self, key, name):
        match = re.search(r'\W', name)
        if match:
            raise ValueError(f"Запрещенный символ: {match[0]}")
        return name

my func edit:

@log_this
    @expose('/edit/<pk>', methods=['GET', 'POST'])
    @has_access
    def edit(self, pk):
        pk = self._deserialize_pk_if_composite(pk)
        widgets = self._edit(pk)

        if not widgets:
            return self.post_edit_redirect()
        else:
            return self.render_template(self.edit_template,
                                        title=self.edit_title,
                                        widgets=widgets,
                                        related_views=self._related_views)

Please help me to make sure that when entering forbidden characters, a message appears that forbidden characters are entered and changes are not saved.

I tried to write flash to the validator instead of raise, but the data is saved, and I need a message about forbidden characters to appear, and the data is not saved until validation is successfully completed.

0 Answers0