django-forms-workflows 0.72.0__tar.gz → 0.72.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/CHANGELOG.md +43 -0
  2. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/PKG-INFO +1 -1
  3. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/_form_data_rows.html +4 -2
  4. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/approval_inbox.html +0 -2
  5. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/approve.html +3 -3
  6. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/submission_bulk_pdf.html +13 -4
  7. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/submission_pdf.html +32 -6
  8. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/views.py +2 -3
  9. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/pyproject.toml +1 -1
  10. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/LICENSE +0 -0
  11. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/README.md +0 -0
  12. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/__init__.py +0 -0
  13. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/admin.py +0 -0
  14. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/api_urls.py +0 -0
  15. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/api_views.py +0 -0
  16. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/apps.py +0 -0
  17. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/callback_registry.py +0 -0
  18. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/conditions.py +0 -0
  19. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/context_processors.py +0 -0
  20. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/data_sources/__init__.py +0 -0
  21. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/data_sources/base.py +0 -0
  22. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/data_sources/database_source.py +0 -0
  23. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/data_sources/ldap_source.py +0 -0
  24. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/data_sources/user_source.py +0 -0
  25. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/diff_views.py +0 -0
  26. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/email_backends/__init__.py +0 -0
  27. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/email_backends/gmail_api.py +0 -0
  28. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/form_builder_urls.py +0 -0
  29. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/form_builder_views.py +0 -0
  30. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/forms.py +0 -0
  31. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/handlers/__init__.py +0 -0
  32. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/handlers/api_handler.py +0 -0
  33. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/handlers/base.py +0 -0
  34. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/handlers/database_handler.py +0 -0
  35. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/handlers/email_handler.py +0 -0
  36. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/handlers/executor.py +0 -0
  37. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/handlers/file_handler.py +0 -0
  38. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/handlers/ldap_handler.py +0 -0
  39. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/history.py +0 -0
  40. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/ldap_backend.py +0 -0
  41. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/management/commands/create_default_templates.py +0 -0
  42. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/management/commands/pull_forms.py +0 -0
  43. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/management/commands/push_forms.py +0 -0
  44. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/management/commands/seed_farm_demo.py +0 -0
  45. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/management/commands/seed_pcn_form.py +0 -0
  46. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/management/commands/seed_prefill_sources.py +0 -0
  47. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/management/commands/sync_ldap_profiles.py +0 -0
  48. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/management/commands/sync_ldap_users.py +0 -0
  49. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/management/commands/test_db_connection.py +0 -0
  50. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0001_initial.py +0 -0
  51. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0002_prefillsource_alter_formfield_prefill_source_and_more.py +0 -0
  52. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0003_postsubmissionaction.py +0 -0
  53. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0004_formtemplate.py +0 -0
  54. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0005_advanced_conditional_logic.py +0 -0
  55. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0006_workflowdefinition_visual_workflow_data_and_more.py +0 -0
  56. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0007_add_userprofile_ldap_enhancements.py +0 -0
  57. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0008_add_file_workflow_models.py +0 -0
  58. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0009_add_formfield_readonly.py +0 -0
  59. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0010_add_prefillsource_template_fields.py +0 -0
  60. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0011_postsubmissionaction_email_body_template_and_more.py +0 -0
  61. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0012_add_approval_step_fields.py +0 -0
  62. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0013_add_database_query_key.py +0 -0
  63. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0014_add_form_category.py +0 -0
  64. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0015_add_workflowstage_staged_approvals.py +0 -0
  65. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0016_add_pdf_generation.py +0 -0
  66. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0017_add_notification_batching.py +0 -0
  67. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0018_add_form_category_parent.py +0 -0
  68. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0019_add_ldap_group_profile.py +0 -0
  69. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0020_add_bulk_export_field.py +0 -0
  70. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0021_alter_pendingnotification_scheduled_for_and_more.py +0 -0
  71. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0022_add_bulk_pdf_export.py +0 -0
  72. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0023_add_performance_indexes.py +0 -0
  73. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0024_add_allow_resubmit.py +0 -0
  74. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0025_workflowstage_approve_label.py +0 -0
  75. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0026_alter_formfield_width.py +0 -0
  76. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0027_formsubmission_form_data_gin.py +0 -0
  77. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0028_workflowstagegroupconfig.py +0 -0
  78. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0029_formfield_workflow_stage_fk_drop_groupconfig.py +0 -0
  79. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0030_formfield_phone_type.py +0 -0
  80. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0031_sub_workflows.py +0 -0
  81. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0032_approved_pending_detached_sub_workflow.py +0 -0
  82. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0033_add_reject_parent_to_subworkflowdefinition.py +0 -0
  83. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0034_add_notificationlog.py +0 -0
  84. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0035_migrate_prefill_source_strings.py +0 -0
  85. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0036_add_workflowstage_auto_created.py +0 -0
  86. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0037_migrate_flat_workflows_to_staged.py +0 -0
  87. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0038_remove_legacy_prefill_source_and_approval_step.py +0 -0
  88. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0039_update_help_text.py +0 -0
  89. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0040_migrate_deprecated_features.py +0 -0
  90. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0041_remove_deprecated_fields.py +0 -0
  91. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0042_add_sub_workflow_section_label.py +0 -0
  92. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0043_fix_form_data_decimal_encoding.py +0 -0
  93. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0044_remove_subworkflowinstance_label.py +0 -0
  94. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0045_stageapprovalgroup_workflow_name_label.py +0 -0
  95. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0046_workflow_definition_one_to_many.py +0 -0
  96. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0047_add_hide_approval_history.py +0 -0
  97. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0048_workflowdefinition_trigger_conditions_and_more.py +0 -0
  98. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0049_formfield_multifile_type.py +0 -0
  99. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0050_workflowdefinition_collapse_parallel_stages.py +0 -0
  100. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0051_formdefinition_is_listed.py +0 -0
  101. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0052_dynamic_assignee_and_form_field_notifications.py +0 -0
  102. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0053_stageformfieldnotification_static_emails.py +0 -0
  103. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0054_rename_approved_pending_to_pending_approval.py +0 -0
  104. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0055_add_send_back.py +0 -0
  105. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0056_calculated_formula_spreadsheet.py +0 -0
  106. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0057_add_currency_field_type.py +0 -0
  107. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0058_rename_assignee_email_field_add_lookup_type.py +0 -0
  108. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0059_add_multiselect_list_field_type.py +0 -0
  109. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0060_alter_workflowstage_assignee_lookup_type_helptext.py +0 -0
  110. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0061_add_country_us_state_field_types.py +0 -0
  111. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0062_add_batch_import_to_formdefinition.py +0 -0
  112. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0063_formdefinition_api_enabled_apitoken.py +0 -0
  113. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0064_add_reviewer_groups.py +0 -0
  114. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0065_workflownotification.py +0 -0
  115. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0066_add_notify_submitter_to_workflownotification.py +0 -0
  116. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0067_migrate_legacy_notify_flags.py +0 -0
  117. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0068_drop_legacy_notify_fields.py +0 -0
  118. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0069_add_signature_field_type.py +0 -0
  119. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0070_workflowstage_allow_edit_form_data.py +0 -0
  120. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0071_alter_pendingnotification_notification_type.py +0 -0
  121. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0072_add_change_history.py +0 -0
  122. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0073_add_stage_notify_assignee_on_final_decision.py +0 -0
  123. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0074_add_notification_rule.py +0 -0
  124. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0075_migrate_to_notification_rules.py +0 -0
  125. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0076_update_notification_event_choices.py +0 -0
  126. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0077_drop_legacy_notification_models.py +0 -0
  127. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0078_allow_anonymous_submissions.py +0 -0
  128. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0079_webhookendpoint_webhookdeliverylog.py +0 -0
  129. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0080_add_rating_matrix_address_slider_fields_and_form_controls.py +0 -0
  130. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0081_add_success_page_fields.py +0 -0
  131. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0082_add_document_template_model.py +0 -0
  132. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0083_workflowdefinition_start_trigger.py +0 -0
  133. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0084_add_shared_option_list.py +0 -0
  134. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0085_add_payment_system.py +0 -0
  135. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0086_add_embed_enabled.py +0 -0
  136. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0087_notificationrule_use_triggering_stage.py +0 -0
  137. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0088_notificationrule_body_template_and_events.py +0 -0
  138. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0089_workflowstage_hide_comment_field.py +0 -0
  139. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0090_alter_stageapprovalgroup_options_and_more.py +0 -0
  140. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0091_add_uuid_fields.py +0 -0
  141. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/0092_add_user_notification_preference.py +0 -0
  142. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/migrations/__init__.py +0 -0
  143. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/models.py +0 -0
  144. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/payments/__init__.py +0 -0
  145. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/payments/base.py +0 -0
  146. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/payments/registry.py +0 -0
  147. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/payments/stripe_provider.py +0 -0
  148. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/payments/views.py +0 -0
  149. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/reporting_views.py +0 -0
  150. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/signals.py +0 -0
  151. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/sso_backends.py +0 -0
  152. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/sso_urls.py +0 -0
  153. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/sso_views.py +0 -0
  154. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/static/django_forms_workflows/api/swagger-ui-bundle.js +0 -0
  155. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/static/django_forms_workflows/api/swagger-ui.css +0 -0
  156. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/static/django_forms_workflows/css/forms.css +0 -0
  157. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/static/django_forms_workflows/js/dfw-embed.js +0 -0
  158. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/static/django_forms_workflows/js/form-builder.js +0 -0
  159. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/static/django_forms_workflows/js/form-enhancements.js +0 -0
  160. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/static/django_forms_workflows/js/payment-stripe.js +0 -0
  161. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/static/django_forms_workflows/js/signature-pad.js +0 -0
  162. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/static/django_forms_workflows/js/workflow-builder.js +0 -0
  163. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/sync_api.py +0 -0
  164. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/sync_views.py +0 -0
  165. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/tasks.py +0 -0
  166. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/admin/django_forms_workflows/_sync_diff.html +0 -0
  167. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/admin/django_forms_workflows/diff_forms.html +0 -0
  168. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/admin/django_forms_workflows/form_builder.html +0 -0
  169. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/admin/django_forms_workflows/formdef_change_form.html +0 -0
  170. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/admin/django_forms_workflows/formdefinition/change_list.html +0 -0
  171. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/admin/django_forms_workflows/sync_import.html +0 -0
  172. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/admin/django_forms_workflows/sync_pull.html +0 -0
  173. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/admin/django_forms_workflows/sync_push.html +0 -0
  174. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/admin/django_forms_workflows/workflow_builder.html +0 -0
  175. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/_category_node.html +0 -0
  176. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/_field_value.html +0 -0
  177. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/analytics_dashboard.html +0 -0
  178. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/api/docs.html +0 -0
  179. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/base.html +0 -0
  180. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/batch_import_result.html +0 -0
  181. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/completed_approvals.html +0 -0
  182. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/discard_draft_confirm.html +0 -0
  183. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/embed_base.html +0 -0
  184. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/embed_success.html +0 -0
  185. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/form_categories.html +0 -0
  186. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/form_embed.html +0 -0
  187. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/form_list.html +0 -0
  188. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/form_submit.html +0 -0
  189. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/my_submissions.html +0 -0
  190. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/notification_preferences.html +0 -0
  191. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/payment_collect.html +0 -0
  192. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/payment_error.html +0 -0
  193. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/public_submission_confirmation.html +0 -0
  194. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/rate_limited.html +0 -0
  195. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/reassign_task.html +0 -0
  196. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/resubmit_confirm.html +0 -0
  197. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/sso/login.html +0 -0
  198. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/sub_workflow_detail.html +0 -0
  199. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/submission_detail.html +0 -0
  200. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/submission_success.html +0 -0
  201. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/django_forms_workflows/withdraw_confirm.html +0 -0
  202. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/emails/approval_notification.html +0 -0
  203. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/emails/approval_reminder.html +0 -0
  204. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/emails/approval_request.html +0 -0
  205. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/emails/email_styles.html +0 -0
  206. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/emails/escalation_notification.html +0 -0
  207. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/emails/notification_digest.html +0 -0
  208. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/emails/rejection_notification.html +0 -0
  209. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/emails/submission_notification.html +0 -0
  210. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templates/registration/login.html +0 -0
  211. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templatetags/__init__.py +0 -0
  212. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/templatetags/forms_workflows_tags.py +0 -0
  213. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/urls.py +0 -0
  214. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/utils.py +0 -0
  215. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/workflow_builder_views.py +0 -0
  216. {django_forms_workflows-0.72.0 → django_forms_workflows-0.72.2}/django_forms_workflows/workflow_engine.py +0 -0
@@ -7,6 +7,49 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.72.2] - 2026-04-16
11
+
12
+ ### Changed
13
+ - **PDF exports no longer zebra-stripe data rows.** The alternating
14
+ `:nth-child(even)` tint looked inconsistent when combined with
15
+ half / third / quarter-width rows (which render as a single wide
16
+ colspan row containing inline columns). Both
17
+ `submission_pdf.html` and `submission_bulk_pdf.html` now use a
18
+ uniform white data-row background.
19
+ - **Approval inbox: dropped the redundant "Stage" column.** The Step
20
+ label now carries the full context (`"Payment 1: Step 2: HR Processing"`
21
+ or `"Step 2: HR Approval"`), so a separate numeric stage column is no
22
+ longer useful. Removed the `<th>`, the DataTables column spec, the
23
+ `"stage"` key from the AJAX payload, and shifted the default sort
24
+ column index down one.
25
+
26
+ ### Fixed
27
+ - **PDF page breaks keep section headers attached to their content.**
28
+ Section dividers (`.section-row`, `.step-section-header`,
29
+ `.step-field-section-row`) and the per-step meta line (`.step-meta`)
30
+ now set `page-break-after: avoid` / `break-after: avoid` so a
31
+ section header no longer orphans at the bottom of one page with its
32
+ fields starting on the next. Applies to both single-submission and
33
+ bulk PDFs.
34
+
35
+ ## [0.72.1] - 2026-04-16
36
+
37
+ ### Fixed
38
+ - **Approval page now respects field widths on the approval step form.**
39
+ `approve.html` was rendering `approval_step_form` (and `editable_form`
40
+ where the stage allows edits) via the `{{ form|crispy }}` filter, which
41
+ ignores `FormHelper.layout`. The width-aware `Row` / `Column` / `Div`
42
+ layout built by `ApprovalStepForm._build_layout_fields` was discarded,
43
+ so half / third / quarter-width fields rendered stacked full width.
44
+ Switched the three call sites to the `{% crispy form %}` tag so the
45
+ layout is honored, matching form-submit and form-embed.
46
+ - **Consistent Submission Data row styling.** In
47
+ `_form_data_rows.html`, full-width rows were splitting the label and
48
+ value into separate `<th>` / `<td>` cells while half / third / quarter
49
+ rows rendered the label as a small heading above the value in a single
50
+ cell. Full-width rows now use the same label-above-value layout so
51
+ every row in the table reads the same way regardless of width.
52
+
10
53
  ## [0.72.0] - 2026-04-16
11
54
 
12
55
  ### Changed (potentially breaking)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-forms-workflows
3
- Version: 0.72.0
3
+ Version: 0.72.2
4
4
  Summary: Enterprise-grade, database-driven form builder with approval workflows and external data integration
5
5
  License: LGPL-3.0-only
6
6
  License-File: LICENSE
@@ -30,8 +30,10 @@
30
30
  {% else %}
31
31
  {% with field=row.fields.0 %}
32
32
  <tr>
33
- <th style="width: 30%; vertical-align: top;">{{ field.label }}</th>
34
- <td>{% include "django_forms_workflows/_field_value.html" with entry=field %}</td>
33
+ <td colspan="2" class="px-3 py-2">
34
+ <small class="text-muted fw-semibold">{{ field.label }}</small>
35
+ <div>{% include "django_forms_workflows/_field_value.html" with entry=field %}</div>
36
+ </td>
35
37
  </tr>
36
38
  {% endwith %}
37
39
  {% endif %}
@@ -253,7 +253,6 @@
253
253
  <th>Actions</th>
254
254
  <th>Form</th>
255
255
  <th>Submitter</th>
256
- <th>Stage</th>
257
256
  <th>Step</th>
258
257
  <th>Assigned</th>
259
258
  <th>Submitted</th>
@@ -346,7 +345,6 @@ $(document).ready(function() {
346
345
  { data: 'actions', name: '', orderable: false },
347
346
  { data: 'form', name: 'submission__form_definition__name' },
348
347
  { data: 'submitter', name: 'submission__submitter__last_name' },
349
- { data: 'stage', name: 'stage_number' },
350
348
  { data: 'step_num', name: 'workflow_stage__name' },
351
349
  { data: 'assigned', name: 'assigned_group__name' },
352
350
  { data: 'submitted_at', name: 'submission__submitted_at' },
@@ -170,7 +170,7 @@
170
170
  </div>
171
171
  <div class="card-body">
172
172
  {% if allow_edit_form_data and editable_form %}
173
- {{ editable_form|crispy }}
173
+ {% crispy editable_form %}
174
174
  {% else %}
175
175
  <table class="table table-bordered table-sm">
176
176
  {% include "django_forms_workflows/_form_data_rows.html" %}
@@ -254,7 +254,7 @@
254
254
  </div>
255
255
  <div class="card-body">
256
256
  <p class="text-muted mb-4">Please review the submission above and fill in the required fields below.</p>
257
- {{ approval_step_form|crispy }}
257
+ {% crispy approval_step_form %}
258
258
 
259
259
  <hr class="my-4">
260
260
 
@@ -355,7 +355,7 @@
355
355
  </div>
356
356
  <div class="card-body">
357
357
  {% if allow_edit_form_data and editable_form %}
358
- {{ editable_form|crispy }}
358
+ {% crispy editable_form %}
359
359
  {% else %}
360
360
  <table class="table table-bordered">
361
361
  {% include "django_forms_workflows/_form_data_rows.html" %}
@@ -51,11 +51,20 @@
51
51
  .data-table th { background-color: #f0f0f0; font-weight: bold; font-size: 8pt; color: #333; border: 1px solid #d0d0d0; padding: 3pt 6pt; text-align: left; vertical-align: top; }
52
52
  .data-table td { font-size: 9pt; border: 1px solid #d0d0d0; padding: 3pt 6pt; vertical-align: top; }
53
53
  .data-table tr { page-break-inside: avoid; break-inside: avoid; }
54
- .data-table tr:nth-child(even) th,
55
- .data-table tr:nth-child(even) td { background-color: #f9f9f9; }
56
54
  .section-row td { background-color: #e8f0f7 !important; color: #1a3a52; font-weight: bold; font-size: 8pt; letter-spacing: 0.3pt; text-transform: uppercase; padding: 4pt 6pt; border: 1px solid #b8ccd8; }
57
- .step-section-header { background-color: #1a3a52; color: #fff; font-weight: bold; font-size: 9pt; padding: 4pt 6pt; margin-top: 10pt; border: 1px solid #0f2538; }
58
- .step-meta { font-size: 7.5pt; color: #555; margin: 2pt 0 4pt 0; }
55
+ /* Keep each section header attached to the content that follows it. */
56
+ .section-row { page-break-after: avoid; break-after: avoid; page-break-inside: avoid; break-inside: avoid; }
57
+ .step-section-header {
58
+ background-color: #1a3a52; color: #fff; font-weight: bold; font-size: 9pt;
59
+ padding: 4pt 6pt; margin-top: 10pt; border: 1px solid #0f2538;
60
+ page-break-after: avoid; break-after: avoid;
61
+ page-break-inside: avoid; break-inside: avoid;
62
+ }
63
+ .step-meta {
64
+ font-size: 7.5pt; color: #555; margin: 2pt 0 4pt 0;
65
+ page-break-before: avoid; break-before: avoid;
66
+ page-break-after: avoid; break-after: avoid;
67
+ }
59
68
  </style>
60
69
  </head>
61
70
  <body>
@@ -106,11 +106,10 @@
106
106
  break-inside: avoid;
107
107
  }
108
108
 
109
- /* Alternating row tint WeasyPrint supports :nth-child fully */
110
- .data-table tr:nth-child(even) th,
111
- .data-table tr:nth-child(even) td { background-color: #f9f9f9; }
112
-
113
- /* Section rows always keep their own colour regardless of position */
109
+ /* Section rows always keep their own colour regardless of position.
110
+ Also keep each section header with the content that follows it —
111
+ prevents the ugly case where a header renders at the bottom of one
112
+ page and its fields start on the next. */
114
113
  .section-row td {
115
114
  background-color: #e8f0f7 !important;
116
115
  color: #1a3a52;
@@ -121,6 +120,12 @@
121
120
  padding: 4pt 6pt;
122
121
  border: 1px solid #b8ccd8;
123
122
  }
123
+ .section-row {
124
+ page-break-after: avoid;
125
+ break-after: avoid;
126
+ page-break-inside: avoid;
127
+ break-inside: avoid;
128
+ }
124
129
 
125
130
  /* Approval-step section header */
126
131
  .step-section-header {
@@ -134,6 +139,11 @@
134
139
  display: table;
135
140
  width: 100%;
136
141
  box-sizing: border-box;
142
+ /* Keep the step header with its meta line / following table */
143
+ page-break-after: avoid;
144
+ break-after: avoid;
145
+ page-break-inside: avoid;
146
+ break-inside: avoid;
137
147
  }
138
148
  .step-section-header .step-name-cell { display: table-cell; vertical-align: middle; }
139
149
  .step-section-header .step-badge-cell {
@@ -152,6 +162,22 @@
152
162
  font-size: 9pt;
153
163
  padding: 4pt 8pt;
154
164
  }
165
+ /* Section divider row inside the step table: stay attached to the
166
+ following field row rather than orphaning at the bottom of a page. */
167
+ tr.step-field-section-row {
168
+ page-break-after: avoid;
169
+ break-after: avoid;
170
+ page-break-inside: avoid;
171
+ break-inside: avoid;
172
+ }
173
+ /* Meta line (completed by / date / comment) belongs with its header
174
+ and the following table. */
175
+ .step-meta {
176
+ page-break-before: avoid;
177
+ break-before: avoid;
178
+ page-break-after: avoid;
179
+ break-after: avoid;
180
+ }
155
181
  .step-badge {
156
182
  display: inline-block;
157
183
  padding: 2pt 7pt;
@@ -300,7 +326,7 @@
300
326
  <tbody>
301
327
  {% for row in section.fields %}
302
328
  {% if row.type == 'section' %}
303
- <tr>
329
+ <tr class="step-field-section-row">
304
330
  <td colspan="4" class="step-field-section">{{ row.label }}</td>
305
331
  </tr>
306
332
  {% elif row.type == 'display_text' %}
@@ -1456,8 +1456,8 @@ def approval_inbox(request):
1456
1456
  # Compute default sort column index for DataTables (submitted_at)
1457
1457
  _exp_off = 1 if (any_exportable or any_pdf_exportable) else 0
1458
1458
  _cat_off = 0 if category_slug else 1
1459
- # columns: [checkbox?] [category?] actions form submitter stage step_num assigned submitted_at
1460
- default_sort_col = _exp_off + _cat_off + 1 + 5 # index of submitted_at
1459
+ # columns: [checkbox?] [category?] actions form submitter step_num assigned submitted_at
1460
+ default_sort_col = _exp_off + _cat_off + 1 + 4 # index of submitted_at
1461
1461
 
1462
1462
  return render(
1463
1463
  request,
@@ -4215,7 +4215,6 @@ def approval_inbox_ajax(request):
4215
4215
  "submitter": escape(
4216
4216
  sub.submitter.get_full_name() or sub.submitter.username
4217
4217
  ),
4218
- "stage": f"Stage {task.stage_number}" if task.stage_number else "—",
4219
4218
  "step_num": escape(stage_name),
4220
4219
  "assigned": escape(
4221
4220
  task.assigned_group.name
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "django-forms-workflows"
3
- version = "0.72.0"
3
+ version = "0.72.2"
4
4
  description = "Enterprise-grade, database-driven form builder with approval workflows and external data integration"
5
5
  license = "LGPL-3.0-only"
6
6
  readme = "README.md"