django-forms-workflows 0.35.1__tar.gz → 0.35.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 (152) hide show
  1. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/PKG-INFO +1 -1
  2. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/data_sources/ldap_source.py +6 -8
  3. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/ldap_backend.py +40 -24
  4. django_forms_workflows-0.35.2/django_forms_workflows/migrations/0059_add_multiselect_list_field_type.py +57 -0
  5. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/pyproject.toml +1 -1
  6. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/CHANGELOG.md +0 -0
  7. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/LICENSE +0 -0
  8. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/README.md +0 -0
  9. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/__init__.py +0 -0
  10. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/admin.py +0 -0
  11. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/apps.py +0 -0
  12. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/conditions.py +0 -0
  13. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/context_processors.py +0 -0
  14. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/data_sources/__init__.py +0 -0
  15. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/data_sources/base.py +0 -0
  16. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/data_sources/database_source.py +0 -0
  17. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/data_sources/user_source.py +0 -0
  18. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/diff_views.py +0 -0
  19. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/email_backends/__init__.py +0 -0
  20. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/email_backends/gmail_api.py +0 -0
  21. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/form_builder_urls.py +0 -0
  22. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/form_builder_views.py +0 -0
  23. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/forms.py +0 -0
  24. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/handlers/__init__.py +0 -0
  25. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/handlers/api_handler.py +0 -0
  26. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/handlers/base.py +0 -0
  27. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/handlers/database_handler.py +0 -0
  28. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/handlers/email_handler.py +0 -0
  29. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/handlers/executor.py +0 -0
  30. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/handlers/file_handler.py +0 -0
  31. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/handlers/ldap_handler.py +0 -0
  32. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/management/commands/create_default_templates.py +0 -0
  33. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/management/commands/pull_forms.py +0 -0
  34. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/management/commands/push_forms.py +0 -0
  35. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/management/commands/seed_farm_demo.py +0 -0
  36. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/management/commands/seed_pcn_form.py +0 -0
  37. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/management/commands/seed_prefill_sources.py +0 -0
  38. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/management/commands/sync_ldap_profiles.py +0 -0
  39. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/management/commands/sync_ldap_users.py +0 -0
  40. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/management/commands/test_db_connection.py +0 -0
  41. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0001_initial.py +0 -0
  42. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0002_prefillsource_alter_formfield_prefill_source_and_more.py +0 -0
  43. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0003_postsubmissionaction.py +0 -0
  44. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0004_formtemplate.py +0 -0
  45. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0005_advanced_conditional_logic.py +0 -0
  46. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0006_workflowdefinition_visual_workflow_data_and_more.py +0 -0
  47. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0007_add_userprofile_ldap_enhancements.py +0 -0
  48. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0008_add_file_workflow_models.py +0 -0
  49. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0009_add_formfield_readonly.py +0 -0
  50. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0010_add_prefillsource_template_fields.py +0 -0
  51. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0011_postsubmissionaction_email_body_template_and_more.py +0 -0
  52. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0012_add_approval_step_fields.py +0 -0
  53. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0013_add_database_query_key.py +0 -0
  54. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0014_add_form_category.py +0 -0
  55. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0015_add_workflowstage_staged_approvals.py +0 -0
  56. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0016_add_pdf_generation.py +0 -0
  57. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0017_add_notification_batching.py +0 -0
  58. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0018_add_form_category_parent.py +0 -0
  59. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0019_add_ldap_group_profile.py +0 -0
  60. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0020_add_bulk_export_field.py +0 -0
  61. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0021_alter_pendingnotification_scheduled_for_and_more.py +0 -0
  62. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0022_add_bulk_pdf_export.py +0 -0
  63. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0023_add_performance_indexes.py +0 -0
  64. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0024_add_allow_resubmit.py +0 -0
  65. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0025_workflowstage_approve_label.py +0 -0
  66. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0026_alter_formfield_width.py +0 -0
  67. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0027_formsubmission_form_data_gin.py +0 -0
  68. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0028_workflowstagegroupconfig.py +0 -0
  69. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0029_formfield_workflow_stage_fk_drop_groupconfig.py +0 -0
  70. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0030_formfield_phone_type.py +0 -0
  71. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0031_sub_workflows.py +0 -0
  72. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0032_approved_pending_detached_sub_workflow.py +0 -0
  73. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0033_add_reject_parent_to_subworkflowdefinition.py +0 -0
  74. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0034_add_notificationlog.py +0 -0
  75. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0035_migrate_prefill_source_strings.py +0 -0
  76. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0036_add_workflowstage_auto_created.py +0 -0
  77. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0037_migrate_flat_workflows_to_staged.py +0 -0
  78. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0038_remove_legacy_prefill_source_and_approval_step.py +0 -0
  79. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0039_update_help_text.py +0 -0
  80. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0040_migrate_deprecated_features.py +0 -0
  81. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0041_remove_deprecated_fields.py +0 -0
  82. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0042_add_sub_workflow_section_label.py +0 -0
  83. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0043_fix_form_data_decimal_encoding.py +0 -0
  84. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0044_remove_subworkflowinstance_label.py +0 -0
  85. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0045_stageapprovalgroup_workflow_name_label.py +0 -0
  86. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0046_workflow_definition_one_to_many.py +0 -0
  87. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0047_add_hide_approval_history.py +0 -0
  88. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0048_workflowdefinition_trigger_conditions_and_more.py +0 -0
  89. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0049_formfield_multifile_type.py +0 -0
  90. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0050_workflowdefinition_collapse_parallel_stages.py +0 -0
  91. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0051_formdefinition_is_listed.py +0 -0
  92. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0052_dynamic_assignee_and_form_field_notifications.py +0 -0
  93. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0053_stageformfieldnotification_static_emails.py +0 -0
  94. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0054_rename_approved_pending_to_pending_approval.py +0 -0
  95. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0055_add_send_back.py +0 -0
  96. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0056_calculated_formula_spreadsheet.py +0 -0
  97. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0057_add_currency_field_type.py +0 -0
  98. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0058_rename_assignee_email_field_add_lookup_type.py +0 -0
  99. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/__init__.py +0 -0
  100. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/models.py +0 -0
  101. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/signals.py +0 -0
  102. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/sso_backends.py +0 -0
  103. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/sso_urls.py +0 -0
  104. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/sso_views.py +0 -0
  105. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/static/django_forms_workflows/js/form-builder.js +0 -0
  106. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/static/django_forms_workflows/js/form-enhancements.js +0 -0
  107. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/static/django_forms_workflows/js/workflow-builder.js +0 -0
  108. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/sync_api.py +0 -0
  109. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/sync_views.py +0 -0
  110. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/tasks.py +0 -0
  111. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/admin/django_forms_workflows/_sync_diff.html +0 -0
  112. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/admin/django_forms_workflows/diff_forms.html +0 -0
  113. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/admin/django_forms_workflows/form_builder.html +0 -0
  114. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/admin/django_forms_workflows/formdef_change_form.html +0 -0
  115. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/admin/django_forms_workflows/formdefinition/change_list.html +0 -0
  116. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/admin/django_forms_workflows/sync_import.html +0 -0
  117. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/admin/django_forms_workflows/sync_pull.html +0 -0
  118. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/admin/django_forms_workflows/sync_push.html +0 -0
  119. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/admin/django_forms_workflows/workflow_builder.html +0 -0
  120. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/_category_node.html +0 -0
  121. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/approval_inbox.html +0 -0
  122. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/approve.html +0 -0
  123. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/base.html +0 -0
  124. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/completed_approvals.html +0 -0
  125. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/form_categories.html +0 -0
  126. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/form_list.html +0 -0
  127. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/form_submit.html +0 -0
  128. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/my_submissions.html +0 -0
  129. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/reassign_task.html +0 -0
  130. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/resubmit_confirm.html +0 -0
  131. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/sso/login.html +0 -0
  132. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/sub_workflow_detail.html +0 -0
  133. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/submission_bulk_pdf.html +0 -0
  134. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/submission_detail.html +0 -0
  135. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/submission_pdf.html +0 -0
  136. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/withdraw_confirm.html +0 -0
  137. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/emails/approval_notification.html +0 -0
  138. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/emails/approval_reminder.html +0 -0
  139. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/emails/approval_request.html +0 -0
  140. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/emails/email_styles.html +0 -0
  141. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/emails/escalation_notification.html +0 -0
  142. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/emails/notification_digest.html +0 -0
  143. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/emails/rejection_notification.html +0 -0
  144. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/emails/submission_notification.html +0 -0
  145. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/registration/login.html +0 -0
  146. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templatetags/__init__.py +0 -0
  147. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templatetags/forms_workflows_tags.py +0 -0
  148. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/urls.py +0 -0
  149. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/utils.py +0 -0
  150. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/views.py +0 -0
  151. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/workflow_builder_views.py +0 -0
  152. {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/workflow_engine.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-forms-workflows
3
- Version: 0.35.1
3
+ Version: 0.35.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
@@ -105,9 +105,9 @@ class LDAPDataSource(DataSource):
105
105
  Query LDAP directly for a user attribute.
106
106
 
107
107
  This is used for SSO users who don't have a cached ldap_user object.
108
+ TLS configuration is applied via configure_ldap_connection(), which
109
+ respects FORMS_WORKFLOWS_LDAP_ALLOW_SELF_SIGNED and LDAP_TLS_REQUIRE_CERT.
108
110
  """
109
- import os
110
-
111
111
  try:
112
112
  import ldap
113
113
  from ldap.filter import escape_filter_chars
@@ -140,14 +140,12 @@ class LDAPDataSource(DataSource):
140
140
  return None
141
141
 
142
142
  try:
143
+ from django_forms_workflows.ldap_backend import configure_ldap_connection
144
+
143
145
  conn = ldap.initialize(ldap_server)
144
- conn.set_option(ldap.OPT_REFERRALS, 0)
145
146
  conn.set_option(ldap.OPT_PROTOCOL_VERSION, ldap.VERSION3)
146
-
147
- # Configure TLS
148
- tls_require_cert = os.getenv("LDAP_TLS_REQUIRE_CERT", "demand").lower()
149
- if tls_require_cert == "never":
150
- conn.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
147
+ # Apply TLS + referral settings centrally (honours FORMS_WORKFLOWS_LDAP_ALLOW_SELF_SIGNED)
148
+ configure_ldap_connection(conn)
151
149
 
152
150
  if bind_dn and bind_password:
153
151
  conn.simple_bind_s(bind_dn, bind_password)
@@ -21,37 +21,53 @@ logger = logging.getLogger(__name__)
21
21
 
22
22
  def configure_ldap_connection(conn):
23
23
  """
24
- Configure LDAP connection with TLS settings from environment variables.
24
+ Configure LDAP connection with TLS settings.
25
25
 
26
- This function applies TLS certificate verification settings based on the
27
- LDAP_TLS_REQUIRE_CERT environment variable.
26
+ Checks the ``FORMS_WORKFLOWS_LDAP_ALLOW_SELF_SIGNED`` Django setting first.
27
+ When ``True``, self-signed certificates are accepted (``OPT_X_TLS_ALLOW``).
28
+
29
+ Falls back to the ``LDAP_TLS_REQUIRE_CERT`` environment variable for
30
+ fine-grained control:
31
+ - ``'never'`` – never require/verify certificates
32
+ - ``'allow'`` – allow self-signed / unverifiable certificates
33
+ - ``'try'`` – try to verify; proceed even if verification fails
34
+ - ``'demand'`` – require a valid certificate (default)
35
+
36
+ Django Settings:
37
+ FORMS_WORKFLOWS_LDAP_ALLOW_SELF_SIGNED (bool):
38
+ Set to ``True`` to accept self-signed LDAP/AD certificates.
39
+ Takes precedence over the ``LDAP_TLS_REQUIRE_CERT`` env var.
40
+ Default: ``False``.
28
41
 
29
42
  Args:
30
43
  conn: LDAP connection object
31
-
32
- Environment Variables:
33
- LDAP_TLS_REQUIRE_CERT: TLS certificate verification level
34
- - 'never': Don't require or verify certificates (ldap.OPT_X_TLS_NEVER)
35
- - 'allow': Allow connection without cert verification (ldap.OPT_X_TLS_ALLOW)
36
- - 'try': Try to verify but proceed if verification fails (ldap.OPT_X_TLS_TRY)
37
- - 'demand' or 'hard': Require valid certificate (ldap.OPT_X_TLS_DEMAND)
38
- - Default: 'demand'
39
44
  """
40
- # Configure TLS settings based on environment variable
41
- tls_require_cert = os.getenv("LDAP_TLS_REQUIRE_CERT", "demand").lower()
45
+ # Check Django setting first — simple on/off for self-signed cert acceptance
46
+ allow_self_signed = getattr(
47
+ settings, "FORMS_WORKFLOWS_LDAP_ALLOW_SELF_SIGNED", False
48
+ )
42
49
 
43
- if tls_require_cert == "never":
44
- conn.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
45
- logger.debug("LDAP TLS certificate verification: NEVER")
46
- elif tls_require_cert == "allow":
50
+ if allow_self_signed:
47
51
  conn.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_ALLOW)
48
- logger.debug("LDAP TLS certificate verification: ALLOW")
49
- elif tls_require_cert == "try":
50
- conn.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_TRY)
51
- logger.debug("LDAP TLS certificate verification: TRY")
52
- else: # 'demand' or 'hard' or any other value
53
- conn.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_DEMAND)
54
- logger.debug("LDAP TLS certificate verification: DEMAND")
52
+ logger.debug(
53
+ "LDAP TLS certificate verification: ALLOW (FORMS_WORKFLOWS_LDAP_ALLOW_SELF_SIGNED=True)"
54
+ )
55
+ else:
56
+ # Fall back to env-var-based configuration for fine-grained control
57
+ tls_require_cert = os.getenv("LDAP_TLS_REQUIRE_CERT", "demand").lower()
58
+
59
+ if tls_require_cert == "never":
60
+ conn.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
61
+ logger.debug("LDAP TLS certificate verification: NEVER")
62
+ elif tls_require_cert == "allow":
63
+ conn.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_ALLOW)
64
+ logger.debug("LDAP TLS certificate verification: ALLOW")
65
+ elif tls_require_cert == "try":
66
+ conn.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_TRY)
67
+ logger.debug("LDAP TLS certificate verification: TRY")
68
+ else: # 'demand' or 'hard' or any other value
69
+ conn.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_DEMAND)
70
+ logger.debug("LDAP TLS certificate verification: DEMAND")
55
71
 
56
72
  # Set other standard options
57
73
  conn.set_option(ldap.OPT_REFERRALS, 0)
@@ -0,0 +1,57 @@
1
+ """
2
+ Add multiselect_list field type.
3
+
4
+ Adds "Multiple Select (List)" as an alternative to the existing
5
+ "Multiple Select (Checkboxes)" (multiselect) field type. The new type
6
+ renders using Django's SelectMultiple widget (<select multiple>) rather
7
+ than CheckboxSelectMultiple.
8
+
9
+ The label of the existing 'multiselect' choice is also updated from
10
+ "Multiple Select" to "Multiple Select (Checkboxes)" to make the
11
+ distinction clear in the admin UI.
12
+ """
13
+
14
+ from django.db import migrations, models
15
+
16
+
17
+ class Migration(migrations.Migration):
18
+
19
+ dependencies = [
20
+ ("django_forms_workflows", "0058_rename_assignee_email_field_add_lookup_type"),
21
+ ]
22
+
23
+ operations = [
24
+ migrations.AlterField(
25
+ model_name="formfield",
26
+ name="field_type",
27
+ field=models.CharField(
28
+ max_length=20,
29
+ choices=[
30
+ ("text", "Single Line Text"),
31
+ ("phone", "Phone Number"),
32
+ ("textarea", "Multi-line Text"),
33
+ ("number", "Whole Number"),
34
+ ("decimal", "Decimal Number"),
35
+ ("currency", "Currency ($)"),
36
+ ("date", "Date"),
37
+ ("datetime", "Date and Time"),
38
+ ("time", "Time"),
39
+ ("email", "Email Address"),
40
+ ("url", "Website URL"),
41
+ ("select", "Dropdown Select"),
42
+ ("multiselect", "Multiple Select (Checkboxes)"),
43
+ ("multiselect_list", "Multiple Select (List)"),
44
+ ("radio", "Radio Buttons"),
45
+ ("checkbox", "Single Checkbox"),
46
+ ("checkboxes", "Multiple Checkboxes"),
47
+ ("file", "File Upload"),
48
+ ("multifile", "Multi-File Upload"),
49
+ ("hidden", "Hidden Field"),
50
+ ("section", "Section Header (not a field)"),
51
+ ("calculated", "Calculated / Formula"),
52
+ ("spreadsheet", "Spreadsheet Upload (CSV / Excel)"),
53
+ ],
54
+ ),
55
+ ),
56
+ ]
57
+
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "django-forms-workflows"
3
- version = "0.35.1"
3
+ version = "0.35.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"