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.