All Versions
Latest Version
Avg Release Cycle
Latest Release

Changelog History

  • v1.0.0 Changes

    ๐Ÿ‘ Django 3.1 / Bootstrap 4.5 / Knockout 3.5 support.

    MultipleKeyGridWidget_ allows to edit many to many relationships_ for Django models.

    PageContext_ replaces TemplateContext class with cleaner way to inject view title / client data / client routes / custom scripts to templates via TemplateResponse_.

    ๐Ÿ‘ 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 automatic re_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 with prepare_bs_navs()_ as well with ListSortingView_ 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_ and custom tags_.

    ๐Ÿ“œ Nested components_ and Sparse 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 as App.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 by App.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 counterpart App.Actions_. It is now ๐Ÿ‘‰ used as foundation for most of AJAX code, including grid datatables and new App.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 same pkVal equal to null.

    ๐Ÿ‘Œ 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_.
  • 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 for None value of field ๐Ÿ‘ filter), support for in query for choice filter value via the list of values.

    Improved support of optional Django model get_str_fields()_ method in DisplayText_ 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 ```` split into smaller parts with symbols exported via module ```` 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 by prefetch_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 via celery_ 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 provides ForeignKeyRawIdWidget-like functionality in non-admin ModelForm 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 in App.Dialog_.

    ๐Ÿ‘Œ Support of client-side generation of view urls with kwargs for client-side url names via updated and client-side App.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 library jinja template tags, which performs include 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.