Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions docs/advanced.rst
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ for example a confirmation field::
class ContactModelView(ModelView):
datamodel = SQLAInterface(Contact)
add_form_extra_fields = {
'extra': TextField(gettext('Extra Field'),
'extra': StringField(gettext('Extra Field'),
description=gettext('Extra Field description'),
widget=BS3TextFieldWidget())
}
Expand All @@ -158,7 +158,7 @@ Next override your field using your new widget::
class ExampleView(ModelView):
datamodel = SQLAInterface(ExampleModel)
edit_form_extra_fields = {
'field2': TextField('field2', widget=BS3TextFieldROWidget())
'field2': StringField('field2', widget=BS3TextFieldROWidget())
}

Readonly select fields are a special case, but it's solved in a simpler way::
Expand All @@ -177,7 +177,7 @@ Readonly select fields are a special case, but it's solved in a simpler way::
edit_form_extra_fields = {
'department': QuerySelectField(
'Department',
query_factory=department_query,
query_func=department_query,
widget=Select2Widget(extra_classes="readonly")
)
}
Expand Down
4 changes: 2 additions & 2 deletions examples/employees/app/views.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from flask_appbuilder import ModelView
from flask_appbuilder.fields import QuerySelectField
from flask_appbuilder.fieldwidgets import Select2Widget
from flask_appbuilder.models.sqla.interface import SQLAInterface
from wtforms.ext.sqlalchemy.fields import QuerySelectField

from . import appbuilder, db
from .models import Benefit, Department, Employee, EmployeeHistory, Function
Expand All @@ -24,7 +24,7 @@ class EmployeeView(ModelView):
edit_form_extra_fields = {
"department": QuerySelectField(
"Department",
query_factory=department_query,
query_func=department_query,
widget=Select2Widget(extra_classes="readonly"),
)
}
Expand Down
6 changes: 3 additions & 3 deletions flask_appbuilder/models/mongoengine/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,17 @@ class MongoFileField(fields.FileField):
widget = BS3FileUploadFieldWidget()

def __init__(self, label=None, validators=None, **kwargs):
super(MongoFileField, self).__init__(label, validators, **kwargs)
super().__init__(label, validators, **kwargs)

self._should_delete = False

def process(self, formdata, data=unset_value):
def process(self, formdata, data=unset_value, **kwargs):
if formdata:
marker = "_%s-delete" % self.name
if marker in formdata:
self._should_delete = True

return super(MongoFileField, self).process(formdata, data)
return super().process(formdata, data, **kwargs)

def populate_obj(self, obj, name):
field = getattr(obj, name, None)
Expand Down
16 changes: 8 additions & 8 deletions flask_appbuilder/upload.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,12 +103,12 @@ def get_url(self, field):


# Fields
class FileUploadField(fields.TextField):
class FileUploadField(fields.StringField):
"""
Customizable file-upload field.

Saves file to configured path, handles updates and deletions.
Inherits from `TextField`, resulting filename will be stored as string.
Inherits from `StringField`, resulting filename will be stored as string.
"""

widget = BS3FileUploadFieldWidget()
Expand All @@ -126,7 +126,7 @@ def __init__(self, label=None, validators=None, filemanager=None, **kwargs):
self.filemanager = filemanager or FileManager()
self._should_delete = False

super(FileUploadField, self).__init__(label, validators, **kwargs)
super().__init__(label, validators, **kwargs)

def process_on_delete(self, obj):
"""Override this method to make customised updates to the object
Expand Down Expand Up @@ -159,12 +159,12 @@ def pre_validate(self, form):
):
raise ValidationError(gettext("Invalid file extension"))

def process(self, formdata, data=unset_value):
def process(self, formdata, data=unset_value, **kwargs):
if formdata:
marker = "_%s-delete" % self.name
if marker in formdata:
self._should_delete = True
return super(FileUploadField, self).process(formdata, data)
return super().process(formdata, data, **kwargs)

def populate_obj(self, obj, name):
field = getattr(obj, name, None)
Expand Down Expand Up @@ -202,7 +202,7 @@ def __init__(self, label=None, validators=None, imagemanager=None, **kwargs):

self.imagemanager = imagemanager or ImageManager()
self._should_delete = False
super(ImageUploadField, self).__init__(label, validators, **kwargs)
super().__init__(label, validators, **kwargs)

def pre_validate(self, form):
if (
Expand All @@ -212,12 +212,12 @@ def pre_validate(self, form):
):
raise ValidationError(gettext("Invalid file extension"))

def process(self, formdata, data=unset_value):
def process(self, formdata, data=unset_value, **kwargs):
if formdata:
marker = "_%s-delete" % self.name
if marker in formdata:
self._should_delete = True
return super(ImageUploadField, self).process(formdata, data)
return super().process(formdata, data, **kwargs)

def populate_obj(self, obj, name):
field = getattr(obj, name, None)
Expand Down
6 changes: 3 additions & 3 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
# This file is autogenerated by pip-compile with python 3.8
# This file is autogenerated by pip-compile with python 3.9
# To update, run:
#
# pip-compile
Expand Down Expand Up @@ -36,7 +36,7 @@ flask-login==0.6.0
# via Flask-AppBuilder (setup.py)
flask-sqlalchemy==2.5.1
# via Flask-AppBuilder (setup.py)
flask-wtf==0.15.1
flask-wtf==1.0.1
# via Flask-AppBuilder (setup.py)
greenlet==1.1.2
# via sqlalchemy
Expand Down Expand Up @@ -104,7 +104,7 @@ werkzeug==2.0.3
# flask
# flask-jwt-extended
# flask-login
wtforms==2.3.3
wtforms==3.0.1
# via
# Flask-AppBuilder (setup.py)
# flask-wtf
Expand Down
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def desc():
"Flask-Babel>=1, <3",
"Flask-Login>=0.3, <0.7",
"Flask-SQLAlchemy>=2.4, <3",
"Flask-WTF>=0.14.2, <1.0.0",
"Flask-WTF>=0.14.2, <2",
"Flask-JWT-Extended>=4.0.0, <5.0.0",
"jsonschema>=3, <5",
"marshmallow>=3, <4",
Expand All @@ -65,7 +65,7 @@ def desc():
# Cautious cap
"SQLAlchemy<1.5",
"sqlalchemy-utils>=0.32.21, <1",
"WTForms<3.0.0",
"WTForms<4",
],
extras_require={
"jmespath": ["jmespath>=0.9.5"],
Expand Down