Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.14.1] - 2024-07-12
Fixed
[0.14.0] - 2024-05-28
Added
- Add German translation by @disrupted in #523
- Add Support for favicon customization by @omarmoo5 in #520
[0.13.2] - 2024-02-04
Fixed
[0.13.1] - 2024-01-21
Fixed
- Fixed the StopIteration exception raised in Sqlalchemy ModelView when the primary key is not included in the field list by @jowilf in #482
[0.13.0] - 2024-01-16
Added
- Enhance AuthMiddleware, introduce
@login_not_required
decorator andallow_routes
, deprecateallow_paths
by @jowilf in #474 - Add a search bar on detail page to search by attributes or values by @hasansezertasan in #461
- Refactor TinyMCEEditorField: support custom TinyMCE configuration by @hasansezertasan in #380
- Add support for SQLAlchemy
column_property
by @jowilf in #408 - Add support for SQLAlchemy Models with Multiple Primary Keys by @jowilf in #402
- Adds
AdminConfig
to overrideapp_title
andlogo_url
in the templates by @hasansezertasan in #374
Fixed
- Support translation for login form placeholders by @hasansezertasan in #425
- Fixes actions docstrings by @mrharpo in #401
[0.12.2] - 2023-11-13
- Fixed issue where "Empty" and "Not Empty" filters raised NotImplementedError on SQLAlchemy relationship attributes by @whchi in #394
[0.12.1] - 2023-11-07
- Fixed a regression caused by #361 where SQLAlchemy models with Mixin Classes raises AttributeError by @hasansezertasan in #385
[0.12.0] - 2023-11-07
Added
- Add Before and After Hooks for Create, Edit, and Delete Operations by @jowilf in #327
- Feature: Row actions by @jowilf & @mrharpo in #348 and #302
- Add Support for Custom Sortable Field Mapping in SQLAlchemy ModelView by @jowilf in #328
Usage
class Post(Base):
__tablename__ = "post"
id: Mapped[int] = mapped_column(primary_key=True)
title: Mapped[str] = mapped_column()
user_id: Mapped[int] = mapped_column(ForeignKey("user.id"))
user: Mapped[User] = relationship(back_populates="posts")
class PostView(ModelView):
sortable_field = ["id", "title", "user"]
sortable_field_mapping = {
"user": User.age, # Sort by the age of the related user
}
- Add support for Turkish language by @hasansezertasan in #330 & #377.
- Allow the page title customization from the ModelView by @mrharpo in #311
- Add support for custom DataTables options by @mrharpo in #308
- Add support for datatables state saving
Fixed
-
Fix #347: Detect SQLAlchemy primary key with custom column name by @jowilf in #361
-
Fixed a bug with field access authorization where restricted users could not modify a partial list of fields in an entity by @jowilf in #360
Internals
[0.11.2] - 2023-08-31
Fixed
[0.11.1] - 2023-07-29
Fixed
[0.11.0] - 2023-07-26
Added
Internals
[0.10.1] - 2023-07-22
Fixed
- Fix #224 by @jowilf in #227
- Fix #239: Order Select2 data by primary key during fetching by @jowilf in #241
[0.10.0] - 2023-06-26
Added
- Added support for Russian language in the web interface by @nessshon in #201
- i18n: Update message catalogs by @jowilf in #202
- Support custom response for batch actions by @jowilf in #212
Fixed
- Fixed #206: Setting
add_to_menu=False
in CustomView still results in the view being displayed in the menu
[0.9.0] - 2023-05-25
Added
- Enhance fields conversion logic to support custom converters by @jowilf in #191
- Add deployment section to documentation by @jowilf in #195
Fixed
[0.8.2] - 2023-05-12
Added
- Add
allow_paths
parameter to AuthProvider to allow unauthenticated access to specific paths by @jowilf in #187 - Allow Unauthenticated Access to
js.cookie.min.js
by @mixartemev in #183
[0.8.1] - 2023-04-30
Added
- Update fontawesome to 6.4.0 & add missings webfonts by @jowilf in #176
- Allow class level configuration for ModelView identity, name & label by @jowilf in #178
[0.8.0] - 2023-04-09
Added
- Add extension to autovalidate SQLAlchemy data with pydantic by @jowilf in #144
- Make
_extract_fields()
method in BaseModelView public and renamed to get_fields_list() by @jowilf in #148 - Add support for custom object representations in the admin interface with
__admin_repr__
and__admin_select2_repr__
by @jowilf in #152. The documentation can be found here
Internals
[0.7.0] - 2023-03-24
Added
- Allow custom form for batch actions by @giaptx and @jowilf in #61
- Add TinyMCEEditorField by @sinisaos and @jowilf in #131
Internals
- Add SQLAlchemy model with Pydantic validation example @jowilf in #125
- Refactor and format HTML files for better readability by @jowilf in #136
[0.6.0] - 2023-03-12
Added
Add TimeZoneField, CountryField, CurrencyField & ArrowField
- Add support for sqlalchemy_utils data types
- Add SQLAlchemy 2 support by @jowilf in #113
- Add support for initial order (sort) to apply to the table by @jowilf in #115
Usage
Fixed
- Fix #69 : Return
HTTP_422_UNPROCESSABLE_ENTITY
when form data is not valid
Deprecated
EnumField.from_enum("status", Status)
is deprecated. UseEnumField("status", enum=Status)
instead.EnumField.from_choices("language", [('cpp', 'C++'), ('py', 'Python')])
is deprecated. UseEnumField("name", choices=[('cpp', 'C++'), ('py', 'Python')])
instead.
[0.5.5] - 2023-03-06
Fixed
[0.5.4] - 2023-03-03
Fixed
- Fix #99 : Show error message when an error occur on
delete
action (detail view).
Added
- Display meaningfully error message when SQLAlchemyError occur during action execution by @jowilf and @dolamroth in #105
[0.5.3] - 2023-02-25
Fixed
[0.5.2] - 2022-12-29
Fixed
[0.5.1] - 2022-12-27
Fixed
[0.5.0] - 2022-12-17
Added
- Introduce
AdminUser
and add navbar to show the currentAdminUser
information (username
andphoto
) by @jowilf in #49
Internals
[0.4.0] - 2022-12-07
Added
- Custom batch actions by @jowilf in #44
- Add
get_list_query
,get_count_query
andget_search_query
methods to SQLAlchemy backend that can be inherited for customization by @jowilf in #47
Internals
- Update datatables to
1.13.1
- Update Search builder UI to fit tabler design
[0.3.2] - 2022-12-02
Fixed
Docs
Internals
- Use Ruff for linting by @jowilf in #29
- Migrate to Hatch by @jowilf in #30
- Setup pre-commit by @jowilf in #33
- Add support for Python 3.11 in test suite by @jowilf in #34
[0.3.1] - 2022-11-22
Fixed
- Fix Regression on SQLModel backend: Duplicate instances when creating or updating a model with relationships in #23
[0.3.0] - 2022-11-21
Breaking Changes
- Changes in
ModelView
definition
- Changes in
CustomView
definition
- Changes in
Link
definition
These changes are inspired from Flask-admin and are introduced to help reduce code size and keep it simple.
Added
- Add
CollectionField
- Add
ListField
- Add support for Odmantic
- Add support for datatables responsive extensions
Changed
- Move
SQLModel
to it own contrib package - MongoEngine
EmbeddedDocumentField
is now converted intoCollectionField
Removed
- Remove PDF from default
export_types
[0.2.2] - 2022-09-20
Fixed
- Null support for EnumField in #17
[0.2.1] - 2022-09-19
Fixed
- Fix SearchBuilder not working with dates (SQLAlchemy) in #15
[0.2.0] - 2022-09-14
Changed
- Date & Time input now use Flatpickr in #10