Changelog History
-
v1.0.0 Changes
๐ Django 3.1 / Bootstrap 4.5 / Knockout 3.5 support.
MultipleKeyGridWidget
_ allows to editmany to many relationships
_ for Django models.PageContext
_ replacesTemplateContext
class with cleaner way to inject view title / client data / client routes / custom scripts to templates viaTemplateResponse
_.๐
App.renderValue
_ supports jQuery elements / nested arrays / objects / strings HTML rendering.App.renderNestedList
_ ๐ supports optional unwrapping of single top DOM node.๐ Improved Bootstrap popovers support with jQuery
.getPopoverTip()
/.getVisiblePopovers()
/.closeVisiblePopovers()
๐ plugins.Support for
Nested components
_ in formsets.js (empty_form
_)'anonymous_template'
Knockout binding.- ๐
UrlPath
_ class supports automaticre_path()
generation with positional named keyword arguments.
- ๐
-
v0.9.0 Changes
๐ Django 3.0 support.
Introduced
TemplateContext
class used to inject view title / client data / client routes / custom scripts to templates.๐ฆ Dependency on
django-jinja
_ package is optional and is off by default. It may be removed completely in case โก๏ธdjango-jinja
_ package will not be updated to run with Django 3.0 or newer version.โ Running without
DJK_MIDDLEWARE
is greatly improved.๐ Pluggable extensions for Jinja2 templates.
bs_breadcrumbs()
/bs_dropdown()
/bs_navs()
Jinja2 macros are now argument compatible, allowing to use these withprepare_bs_navs()
_ as well withListSortingView
_ filters.๐ง Selenium tests are more reliable, pass in Firefox. Added Selenium web drivers for Linux Chromium interactive / headless.
-
v0.8.1 Changes
๐ Django 2.2 support.
๐ Improves compatibility and stability of middleware with third party apps.
Implemented
action 'meta_list' preload
_ for datatables. -
v0.8.0 Changes
Bootstrap 4
_ /Bootstrap 3
_ support.0๏ธโฃ Default rendering layouts for fields / forms / related forms / inline formsets, which can be customized via providing custom template or via inheriting the
Renderer
_ class.Underscore.js templates support
template attributes merging
_ andcustom tags
_.๐
Nested components
_ andSparse components
_ at the client-side.Nested serializer
_. -
v0.7.0 Changes
Datatables now have new type of action
'pagination'
. There are two built-in actions of this type implemented:'rows_per_page'
and'switch_highlight'
.๐ Datatables support compound columns for better utilization of the display space. That allows to display more data columns, including foreign relations at the screen.
Datatables
glyphicon
actions are rendered in the single column of datatable, instead of each action per column for ๐ better utilization of the display space.๐ฑ Static assets are moved to '/djk' subdirectory, minimizing the risk of conflicts with third party assets.
โก๏ธ Updated to latest versions of Knockout.js / jQuery / Bootstrap 3 (should also work with not-too-old ones).
0๏ธโฃ
viewmodels
_ AJAX response routing is rewritten asApp.ViewModelRouter
class with default instance ๐App.vmRouter
. It now supports binding viewmodel handlers to Javascript class instances methods.Optional built-in Javascript error logger.
App.NestedList
internally used byApp.renderNestedList
_ for greater flexibility of client-side Javascript nested ๐ lists rendering.App.NestedList
now supports ordered maps via_.ODict
instances.๐จ Ajax forms submitting is refactored into
App.AjaxForm
_ class, while setting up the ajax forms is performed by ๐App.AjaxForms
, for better flexibility.App.readyInstances
introduced for global client-side IoC, available in custom user scripts as well.Knockout.js method subscription / unsubscription is placed into
App.ko.Subscriber
mixin class.focus
binding is implemented for Knockout.js.๐คก Request mock-up when running without web server is greatly improved. That enables reverse resolving of FQN urls in console management commands and in background celery tasks via
reverseq()
_ calls when sites framework is correctly set up.ast_eval
templage tag.๐ Headless Chrome Selenium webdriver support (phantom.js is deprecated).
-
v0.6.0 Changes
AJAX actions are rewritten as server-side
ActionsView
_ class and client-side counterpartApp.Actions
_. It is now ๐ used as foundation for most of AJAX code, including grid datatables and newApp.EditForm
/App.EditInline
client-side components.๐ New widget
PrefillWidget
_ to select pre-filled text from the list of supplied values.Selective skipping of
DisplayText
_ field widget rendering.Basic version of
ViewmodelValidator
for AJAX submitted forms. -
v0.5.0 Changes
๐ Rewritten recursive underscore.js template processor, see
underscore.js templates
_.Displaying verbose field names in grid rows, grid row actions and in
ForeignKeyGridWidget
_ placeholder.Clean-up of client-side components code.
๐ Better support for datatable grids that use RAW queries with
LEFT JOIN
, which may have multiple rows with the samepkVal
equal tonull
.๐ Improvements in Selenium automation testing: better handling of automation commands, more of commands implemented, โ much larger test coverage.
- ๐ Numerous bugfixes, including related field queries support in
FilteredRawQuerySet
_.
- ๐ Numerous bugfixes, including related field queries support in
-
v0.4.0 Changes
โ Large improvements in Selenium testing support: additional commands are implemented, auto-retry on DOM timeout, fixtures โ loading / saving which allows to skip already debugged parts of tests, saving developer's time.
๐คก
ContextMiddleware
_ supports request mocking and request-time storage.๐
FilteredRawQuerySet
_ supports Q expressions (Q objects) with relation mapping.๐
BaseFilterView
/KoGridView
_ - basic support for Q expressions (currently is used forNone
value of field ๐ filter), support forin
query forchoice
filter value via the list of values.Improved support of optional Django model
get_str_fields()
_ method inDisplayText
_ widget and in Knockout.js datatable grids.๐ Various bugfixes.
Minor changes (version 0.4.1)
Implemented ``multiple_choices``: ``True`` option of the field filter ``type`` ``choices`` in `ListSortingView`_. That allows to perform ``in`` field lookups for the selected field filter. Large monolithic ``views.py`` split into smaller parts with symbols exported via module ``__init__.py`` for the convenience and compatibility. Alternative breadcrumbs layout of field filters widgets. ๐ Bugfixes and security fixes in query / views modules.
-
v0.3.0 Changes
Auto-configuration of nested foreign key filter fields in
KoGridView
_ /ForeignKeyGridWidget
_.๐
FilteredRawQuerySet
_ now supports more precise.count()
method.๐
ListQuerySet
_ supports significant part of Django queryset functionality for the lists of Django model instances, returned byprefetch_related()
_.Bootstrap tabs generation macro
bs_tabs()
_ with client-side support of switching tabs when window.location.hash value changes.SendmailQueue
_ functionality can be extended via injecting ioc class - for example to send email in the background viacelery
_ task. -
v0.2.0 Changes
๐
$.inherit()
Javascript prototype inheritance function now supports multi-level inheritance with nested.super
calls without having to specify parent class prototype property implicitely in descendant class instances, with newly introduced$.SuperChain
class."django.admin-like" AJAX functionality was implemented via
KoGridView
_ class-based view (CBV) at server-side with corresponding Knockout.js templates and Javascript classes at client-side. Besides providing standard CRUD actions and filters, it allows to implement arbitrary actions in descendant classes and quickly design django.admin-like user interfaces in non-admin views. AJAX calls also minimize server HTTP traffic, reducing network bandwitch and making the ๐ฑ UI more responsive.New
ForeignKeyGridWidget
_ was developed which providesForeignKeyRawIdWidget
-like functionality in non-adminModelForm
classes to select foreign key fields value via AJAX query / response.๐ Support of auto-instantiating Javascript classes with binding these to selected DOM nodes with 'component' css class via
App.Components
_ class.๐ Support of auto-compiling / auto-loading client-side underscore.js templates via
App.compileTemplate
/App.domTemplate
/App.loadTemplates
. One of usage examples is the possibility of loading modal body from underscore.js template inApp.Dialog
_.๐ Support of client-side generation of view urls with kwargs for client-side url names via updated
context_processors.py
and client-sideApp.routeUrl()
_ Javascript function.tpl.resolve_cbv()
_ allows to resolve view class via url name and it's kwargs.Django templates (DTL) and Jinja2 templates now can be mixed using shared Jinja2 template code via
{% load jinja %}
template libraryjinja
template tags, which performsinclude
for Jinja2 template with current context::{% extends 'base_min.html' %} {% load jinja %} {% load staticfiles %} {% block main %} {% jinja 'bs_list.htm' with _render_=1 view=view object_list=object_list is_paginated=is_paginated page_obj=page_obj %} {% endblock main %}
๐ Numerous bug fixes.