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.
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/PKG-INFO +1 -1
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/data_sources/ldap_source.py +6 -8
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/ldap_backend.py +40 -24
- django_forms_workflows-0.35.2/django_forms_workflows/migrations/0059_add_multiselect_list_field_type.py +57 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/pyproject.toml +1 -1
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/CHANGELOG.md +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/LICENSE +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/README.md +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/__init__.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/admin.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/apps.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/conditions.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/context_processors.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/data_sources/__init__.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/data_sources/base.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/data_sources/database_source.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/data_sources/user_source.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/diff_views.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/email_backends/__init__.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/email_backends/gmail_api.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/form_builder_urls.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/form_builder_views.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/forms.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/handlers/__init__.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/handlers/api_handler.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/handlers/base.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/handlers/database_handler.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/handlers/email_handler.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/handlers/executor.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/handlers/file_handler.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/handlers/ldap_handler.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/management/commands/create_default_templates.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/management/commands/pull_forms.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/management/commands/push_forms.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/management/commands/seed_farm_demo.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/management/commands/seed_pcn_form.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/management/commands/seed_prefill_sources.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/management/commands/sync_ldap_profiles.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/management/commands/sync_ldap_users.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/management/commands/test_db_connection.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0001_initial.py +0 -0
- {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
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0003_postsubmissionaction.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0004_formtemplate.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0005_advanced_conditional_logic.py +0 -0
- {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
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0007_add_userprofile_ldap_enhancements.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0008_add_file_workflow_models.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0009_add_formfield_readonly.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0010_add_prefillsource_template_fields.py +0 -0
- {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
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0012_add_approval_step_fields.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0013_add_database_query_key.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0014_add_form_category.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0015_add_workflowstage_staged_approvals.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0016_add_pdf_generation.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0017_add_notification_batching.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0018_add_form_category_parent.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0019_add_ldap_group_profile.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0020_add_bulk_export_field.py +0 -0
- {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
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0022_add_bulk_pdf_export.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0023_add_performance_indexes.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0024_add_allow_resubmit.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0025_workflowstage_approve_label.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0026_alter_formfield_width.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0027_formsubmission_form_data_gin.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0028_workflowstagegroupconfig.py +0 -0
- {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
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0030_formfield_phone_type.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0031_sub_workflows.py +0 -0
- {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
- {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
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0034_add_notificationlog.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0035_migrate_prefill_source_strings.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0036_add_workflowstage_auto_created.py +0 -0
- {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
- {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
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0039_update_help_text.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0040_migrate_deprecated_features.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0041_remove_deprecated_fields.py +0 -0
- {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
- {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
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0044_remove_subworkflowinstance_label.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0045_stageapprovalgroup_workflow_name_label.py +0 -0
- {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
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0047_add_hide_approval_history.py +0 -0
- {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
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0049_formfield_multifile_type.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0050_workflowdefinition_collapse_parallel_stages.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0051_formdefinition_is_listed.py +0 -0
- {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
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0053_stageformfieldnotification_static_emails.py +0 -0
- {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
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0055_add_send_back.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0056_calculated_formula_spreadsheet.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/0057_add_currency_field_type.py +0 -0
- {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
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/migrations/__init__.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/models.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/signals.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/sso_backends.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/sso_urls.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/sso_views.py +0 -0
- {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
- {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
- {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
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/sync_api.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/sync_views.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/tasks.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/_category_node.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/approval_inbox.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/approve.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/base.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/completed_approvals.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/form_categories.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/form_list.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/form_submit.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/my_submissions.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/reassign_task.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/resubmit_confirm.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/sso/login.html +0 -0
- {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
- {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
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/submission_detail.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/submission_pdf.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/django_forms_workflows/withdraw_confirm.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/emails/approval_notification.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/emails/approval_reminder.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/emails/approval_request.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/emails/email_styles.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/emails/escalation_notification.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/emails/notification_digest.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/emails/rejection_notification.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/emails/submission_notification.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templates/registration/login.html +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templatetags/__init__.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/templatetags/forms_workflows_tags.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/urls.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/utils.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/views.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/workflow_builder_views.py +0 -0
- {django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/workflow_engine.py +0 -0
|
@@ -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
|
-
|
|
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
|
|
24
|
+
Configure LDAP connection with TLS settings.
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
#
|
|
41
|
-
|
|
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
|
|
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(
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
+
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/__init__.py
RENAMED
|
File without changes
|
{django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/admin.py
RENAMED
|
File without changes
|
{django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/apps.py
RENAMED
|
File without changes
|
{django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/conditions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/diff_views.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/forms.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/models.py
RENAMED
|
File without changes
|
{django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/signals.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/sso_urls.py
RENAMED
|
File without changes
|
{django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/sso_views.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/sync_api.py
RENAMED
|
File without changes
|
{django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/sync_views.py
RENAMED
|
File without changes
|
{django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/tasks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/urls.py
RENAMED
|
File without changes
|
{django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/utils.py
RENAMED
|
File without changes
|
{django_forms_workflows-0.35.1 → django_forms_workflows-0.35.2}/django_forms_workflows/views.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|