Release Notes — v0.2.11 (July 2, 2026)


1. disable_if — Multi-Condition & Multi-Value Support

Status: Uncommitted
Plan: .kilo/plans/1782991355269-disable-if-multi-condition.md

The disable_if fieldtab configuration now supports multiple conditions (list of dicts) and multiple values per condition (list of strings), matching the existing pattern used by hide_if. Previously, disable_if only accepted a single dict with one field/value pair.

New Allowed Formats

python
# 1. Single condition, single value (existing — fully backward compatible)
'disable_if': {'field': 'postedstatus', 'value': 'POSTED'}

# 2. Single condition, multiple values (NEW)
'disable_if': {'field': 'Approvalstatus', 'value': ['in_review', 'approved']}

# 3. Multiple conditions, list of dicts (NEW)
'disable_if': [
    {'field': 'Approvalstatus', 'value': 'in_review', 'source': 'parent'},
    {'field': 'postedstatus', 'value': 'POSTED'},
]

# 4. Mixed single/multi values across conditions (NEW)
'disable_if': [
    {'field': 'Approvalstatus', 'value': ['in_review', 'approved'], 'source': 'Frameworktestdocument'},
    {'field': 'postedstatus', 'value': 'POSTED', 'source': 'self'},
]

Logic

  • Multiple conditions: OR logic — the first matching condition sets disable_all = True and short-circuits.
  • Multiple values per condition: Value can be a string (equality check ==) or a list/tuple (in check). Also OR logic.
  • Source resolution: Delegates to _resolve_condition_source() supporting 'self', 'parent', and model-name-based FK ancestor traversal (same as hide_if).

Changes

  • enezaframework/views/mixins.py: Replaced the ~7-line disable_if block in both methods:
  • UiMixin.get_fieldtab_config() (line 112)
  • UiMixinjournal.get_fieldtab_config() (line 623)

Edge Cases

Case Behavior
disable_if is None or absent No change, logic skipped
disable_if is empty list [] No conditions, logic skipped
value is empty list [] Never matches, tab not disabled
Resolved source object is None Condition skipped, not matched
Resolved source lacks the field Condition skipped, not matched

Files changed: 1 file.


2. UrlMixin.get_calling_url() — Override via calling_url GET Parameter

Status: Uncommitted

UrlMixin.get_calling_url() now checks for a calling_url GET parameter first. When present, it is returned immediately as the calling URL, bypassing the normal resolve_source() + {parent_model}_detail construction. This allows views to pass an explicit redirect target via query string.

Changes

  • enezaframework/views/mixins.py: Added calling_url = self.request.GET.get("calling_url") check at the top of get_calling_url(), with early return on match.

Files changed: 1 file.


3. Nav Actions — Data Extraction Menu Include

Status: Uncommitted

The navaextractionmenu.html partial is now included in the main nav actions toolbar (navactions.html), adding data extraction/export functionality directly to the detail view action bar.

Changes

  • enezaframework/templates/core/partials/navactions.html: Added {% include "core/partials/navaextractionmenu.html" %} after the delete button and before the print actions block.

Files changed: 1 file.


4. Framework Test App — Demo View for disable_if with Ancestor Source

Status: Uncommitted

Frameworktestdocumentline Updates

  • frameworkapp/models.py: Added frameworktest ForeignKey on Frameworktestdocumentline (related_name="frameworktest_lines") to enable navigation through the FK chain for condition source resolution.
  • frameworkapp/views/testviews.py:
  • Added a "Description" tab to FrameworktestdocumentlineDetailView demonstrating disable_if with source: 'Frameworktestdocument' — the tab is disabled when the parent document's Approvalstatus is 'approved'.
  • Added frameworktest to the first tab's Fieldcolumns.
  • Minor whitespace/formatting cleanup in FrameworktestdocumentlinecomponentDetailView.

Files changed: 2 files.


5. Version Bump

  • setup.py: Version bumped from 0.2.10 → 0.2.11.

Summary

Area Description Files
disable_if Enhancement Multi-condition (list of dicts, OR logic) and multi-value (list/tuple, OR logic) support in both UiMixin and UiMixinjournal 1
URL Mixin calling_url GET parameter override in get_calling_url() 1
Nav Actions navaextractionmenu.html partial included in action toolbar 1
Test App Demo tab for disable_if with ancestor model source; FK added on Frameworktestdocumentline 2
Versioning Version bumped to 0.2.11 1

Total: 5 modified files, 82 insertions, 16 deletions.


Note: All changes are uncommitted and untested. The user is solely responsible for testing and validating all outputs before committing or deploying.