django-forms-workflows 0.20.2__tar.gz → 0.20.4__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.20.2 → django_forms_workflows-0.20.4}/PKG-INFO +1 -1
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/django_forms_workflows/submission_detail.html +28 -27
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/views.py +47 -30
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/pyproject.toml +1 -1
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/CHANGELOG.md +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/LICENSE +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/README.md +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/__init__.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/admin.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/apps.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/context_processors.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/data_sources/__init__.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/data_sources/base.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/data_sources/database_source.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/data_sources/ldap_source.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/data_sources/user_source.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/email_backends/__init__.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/email_backends/gmail_api.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/form_builder_urls.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/form_builder_views.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/forms.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/handlers/__init__.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/handlers/api_handler.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/handlers/base.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/handlers/database_handler.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/handlers/email_handler.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/handlers/executor.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/handlers/file_handler.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/handlers/ldap_handler.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/ldap_backend.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/management/commands/create_default_templates.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/management/commands/pull_forms.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/management/commands/push_forms.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/management/commands/seed_farm_demo.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/management/commands/seed_pcn_form.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/management/commands/seed_prefill_sources.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/management/commands/sync_ldap_profiles.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/management/commands/test_db_connection.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0001_initial.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0002_prefillsource_alter_formfield_prefill_source_and_more.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0003_postsubmissionaction.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0004_formtemplate.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0005_advanced_conditional_logic.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0006_workflowdefinition_visual_workflow_data_and_more.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0007_add_userprofile_ldap_enhancements.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0008_add_file_workflow_models.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0009_add_formfield_readonly.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0010_add_prefillsource_template_fields.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0011_postsubmissionaction_email_body_template_and_more.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0012_add_approval_step_fields.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0013_add_database_query_key.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0014_add_form_category.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0015_add_workflowstage_staged_approvals.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0016_add_pdf_generation.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0017_add_notification_batching.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0018_add_form_category_parent.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0019_add_ldap_group_profile.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0020_add_bulk_export_field.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0021_alter_pendingnotification_scheduled_for_and_more.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0022_add_bulk_pdf_export.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0023_add_performance_indexes.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0024_add_allow_resubmit.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0025_workflowstage_approve_label.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0026_alter_formfield_width.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0027_formsubmission_form_data_gin.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0028_workflowstagegroupconfig.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0029_formfield_workflow_stage_fk_drop_groupconfig.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0030_formfield_phone_type.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0031_sub_workflows.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0032_approved_pending_detached_sub_workflow.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0033_add_reject_parent_to_subworkflowdefinition.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0034_add_notificationlog.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0035_migrate_prefill_source_strings.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0036_add_workflowstage_auto_created.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0037_migrate_flat_workflows_to_staged.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0038_remove_legacy_prefill_source_and_approval_step.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0039_update_help_text.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0040_migrate_deprecated_features.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0041_remove_deprecated_fields.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0042_add_sub_workflow_section_label.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/0043_fix_form_data_decimal_encoding.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/migrations/__init__.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/models.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/signals.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/sso_backends.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/sso_urls.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/sso_views.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/static/django_forms_workflows/js/form-builder.js +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/static/django_forms_workflows/js/form-enhancements.js +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/static/django_forms_workflows/js/workflow-builder.js +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/sync_api.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/sync_views.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/tasks.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/admin/django_forms_workflows/form_builder.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/admin/django_forms_workflows/formdef_change_form.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/admin/django_forms_workflows/formdefinition/change_list.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/admin/django_forms_workflows/sync_import.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/admin/django_forms_workflows/sync_pull.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/admin/django_forms_workflows/sync_push.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/admin/django_forms_workflows/workflow_builder.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/django_forms_workflows/_category_node.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/django_forms_workflows/approval_inbox.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/django_forms_workflows/approve.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/django_forms_workflows/base.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/django_forms_workflows/completed_approvals.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/django_forms_workflows/form_categories.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/django_forms_workflows/form_list.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/django_forms_workflows/form_submit.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/django_forms_workflows/my_submissions.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/django_forms_workflows/resubmit_confirm.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/django_forms_workflows/sso/login.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/django_forms_workflows/sub_workflow_detail.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/django_forms_workflows/submission_bulk_pdf.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/django_forms_workflows/submission_pdf.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/django_forms_workflows/withdraw_confirm.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/emails/approval_notification.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/emails/approval_reminder.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/emails/approval_request.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/emails/email_styles.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/emails/escalation_notification.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/emails/notification_digest.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/emails/rejection_notification.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/emails/submission_notification.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templates/registration/login.html +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templatetags/__init__.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/templatetags/forms_workflows_tags.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/urls.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/utils.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/workflow_builder_views.py +0 -0
- {django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/workflow_engine.py +0 -0
|
@@ -241,59 +241,60 @@
|
|
|
241
241
|
</div>
|
|
242
242
|
{% endfor %}
|
|
243
243
|
|
|
244
|
-
{% if
|
|
245
|
-
{# ----
|
|
246
|
-
|
|
247
|
-
<
|
|
244
|
+
{% if sub_workflow_instance_stages %}
|
|
245
|
+
{# ---- One table per sub-workflow instance, steps as rows ---- #}
|
|
246
|
+
{% for section in sub_workflow_instance_stages %}
|
|
247
|
+
<h5 class="mb-3 mt-4"><i class="bi bi-list-check"></i> {{ section.instance.label }}</h5>
|
|
248
|
+
<div class="card mb-3
|
|
249
|
+
{% if section.instance.status == 'rejected' %}border-danger
|
|
250
|
+
{% elif section.instance.status == 'approved' %}border-success
|
|
251
|
+
{% elif section.instance.status == 'in_progress' %}border-primary
|
|
252
|
+
{% else %}border-secondary{% endif %}">
|
|
248
253
|
<div class="card-body p-0">
|
|
249
254
|
<div class="table-responsive">
|
|
250
255
|
<table class="table table-sm table-hover mb-0">
|
|
251
256
|
<thead class="table-light">
|
|
252
257
|
<tr>
|
|
253
|
-
<th
|
|
254
|
-
<th>Label</th>
|
|
258
|
+
<th>Step</th>
|
|
255
259
|
<th>Assigned To</th>
|
|
256
260
|
<th>Status</th>
|
|
257
261
|
<th>Completed By</th>
|
|
258
262
|
<th>Completed At</th>
|
|
259
|
-
<th
|
|
263
|
+
<th>Comments</th>
|
|
260
264
|
</tr>
|
|
261
265
|
</thead>
|
|
262
266
|
<tbody>
|
|
263
|
-
{% for
|
|
267
|
+
{% for stage in section.stage_groups %}
|
|
268
|
+
{% for task in stage.tasks %}
|
|
264
269
|
<tr>
|
|
265
|
-
<td>{{
|
|
266
|
-
<td>{{ row.instance.label }}</td>
|
|
270
|
+
<td><strong>{{ stage.name }}</strong></td>
|
|
267
271
|
<td>
|
|
268
|
-
{% if
|
|
269
|
-
{
|
|
270
|
-
|
|
271
|
-
{
|
|
272
|
-
{{ row.task.assigned_group.name }}
|
|
273
|
-
{% else %}-{% endif %}
|
|
272
|
+
{% if task.assigned_to %}
|
|
273
|
+
{{ task.assigned_to.get_full_name|default:task.assigned_to.username }}
|
|
274
|
+
{% elif task.assigned_group %}
|
|
275
|
+
{{ task.assigned_group.name }} <span class="text-muted">(Group)</span>
|
|
274
276
|
{% else %}-{% endif %}
|
|
275
277
|
</td>
|
|
276
278
|
<td>
|
|
277
|
-
{% if
|
|
278
|
-
{% elif
|
|
279
|
-
{% elif
|
|
280
|
-
{%
|
|
279
|
+
{% if task.status == 'pending' %}<span class="badge bg-warning text-dark">Pending</span>
|
|
280
|
+
{% elif task.status == 'approved' %}<span class="badge bg-success">Approved</span>
|
|
281
|
+
{% elif task.status == 'rejected' %}<span class="badge bg-danger">Rejected</span>
|
|
282
|
+
{% elif task.status == 'expired' %}<span class="badge bg-secondary">Expired</span>
|
|
283
|
+
{% elif task.status == 'skipped' %}<span class="badge bg-secondary">Skipped</span>
|
|
281
284
|
{% endif %}
|
|
282
285
|
</td>
|
|
283
|
-
<td>{% if
|
|
284
|
-
<td>{% if
|
|
285
|
-
<td>
|
|
286
|
-
<a href="{% url 'forms_workflows:sub_workflow_detail' row.instance.id %}" class="btn btn-sm btn-outline-secondary">
|
|
287
|
-
<i class="bi bi-eye"></i> View
|
|
288
|
-
</a>
|
|
289
|
-
</td>
|
|
286
|
+
<td>{% if task.completed_by %}{{ task.completed_by.get_full_name|default:task.completed_by.username }}{% else %}-{% endif %}</td>
|
|
287
|
+
<td>{% if task.completed_at %}{{ task.completed_at|date:"Y-m-d H:i" }}{% else %}-{% endif %}</td>
|
|
288
|
+
<td>{{ task.comments|default:"-" }}</td>
|
|
290
289
|
</tr>
|
|
291
290
|
{% endfor %}
|
|
291
|
+
{% endfor %}
|
|
292
292
|
</tbody>
|
|
293
293
|
</table>
|
|
294
294
|
</div>
|
|
295
295
|
</div>
|
|
296
296
|
</div>
|
|
297
|
+
{% endfor %}
|
|
297
298
|
{% endif %}
|
|
298
299
|
|
|
299
300
|
{% else %}
|
{django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/views.py
RENAMED
|
@@ -604,14 +604,13 @@ def submission_detail(request, submission_id):
|
|
|
604
604
|
for sg in sub_workflow_groups:
|
|
605
605
|
sg["section_label"] = sg_name
|
|
606
606
|
|
|
607
|
-
# Build
|
|
608
|
-
#
|
|
609
|
-
|
|
610
|
-
sub_workflow_instances_merged = None
|
|
611
|
-
sub_wf_section_label = None
|
|
607
|
+
# Build per-instance stage groups so each sub-workflow instance is
|
|
608
|
+
# rendered as its own section with stage cards (matching parent style).
|
|
609
|
+
sub_workflow_instance_stages = None
|
|
612
610
|
sub_wfs = list(
|
|
613
611
|
submission.sub_workflows.select_related("definition")
|
|
614
612
|
.prefetch_related(
|
|
613
|
+
"approval_tasks__workflow_stage",
|
|
615
614
|
"approval_tasks__assigned_to",
|
|
616
615
|
"approval_tasks__assigned_group",
|
|
617
616
|
"approval_tasks__completed_by",
|
|
@@ -619,34 +618,53 @@ def submission_detail(request, submission_id):
|
|
|
619
618
|
.order_by("index")
|
|
620
619
|
)
|
|
621
620
|
if sub_wfs:
|
|
622
|
-
|
|
623
|
-
sub_wf_section_label = (
|
|
624
|
-
(
|
|
625
|
-
swf_config.section_label
|
|
626
|
-
if swf_config and swf_config.section_label
|
|
627
|
-
else None
|
|
628
|
-
)
|
|
629
|
-
or (swf_config.sub_workflow.form_definition.name if swf_config else None)
|
|
630
|
-
or "Additional Approvals"
|
|
631
|
-
)
|
|
632
|
-
merged_rows = []
|
|
621
|
+
instance_sections = []
|
|
633
622
|
for swf in sub_wfs:
|
|
634
|
-
tasks = list(
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
623
|
+
tasks = list(
|
|
624
|
+
swf.approval_tasks.select_related("workflow_stage").order_by(
|
|
625
|
+
"stage_number", "id"
|
|
626
|
+
)
|
|
627
|
+
)
|
|
628
|
+
# Group tasks by workflow_stage (like parent stage_groups)
|
|
629
|
+
stage_map: dict = {}
|
|
630
|
+
for task in tasks:
|
|
631
|
+
stage_key = task.workflow_stage_id or f"flat_{task.stage_number}"
|
|
632
|
+
if stage_key not in stage_map:
|
|
633
|
+
stage_name = (
|
|
634
|
+
task.workflow_stage.name
|
|
635
|
+
if task.workflow_stage
|
|
636
|
+
else f"Step {task.stage_number or 1}"
|
|
637
|
+
)
|
|
638
|
+
approval_logic = (
|
|
639
|
+
task.workflow_stage.approval_logic
|
|
640
|
+
if task.workflow_stage
|
|
641
|
+
else "all"
|
|
642
|
+
)
|
|
643
|
+
stage_map[stage_key] = {
|
|
644
|
+
"number": task.stage_number or 0,
|
|
645
|
+
"name": stage_name,
|
|
646
|
+
"approval_logic": approval_logic,
|
|
647
|
+
"tasks": [],
|
|
648
|
+
"approved_count": 0,
|
|
649
|
+
"rejected_count": 0,
|
|
650
|
+
"total_count": 0,
|
|
651
|
+
}
|
|
652
|
+
stage_map[stage_key]["tasks"].append(task)
|
|
653
|
+
stage_map[stage_key]["total_count"] += 1
|
|
654
|
+
if task.status == "approved":
|
|
655
|
+
stage_map[stage_key]["approved_count"] += 1
|
|
656
|
+
elif task.status == "rejected":
|
|
657
|
+
stage_map[stage_key]["rejected_count"] += 1
|
|
658
|
+
|
|
659
|
+
instance_sections.append(
|
|
644
660
|
{
|
|
645
661
|
"instance": swf,
|
|
646
|
-
"
|
|
662
|
+
"stage_groups": sorted(
|
|
663
|
+
stage_map.values(), key=lambda x: x["number"]
|
|
664
|
+
),
|
|
647
665
|
}
|
|
648
666
|
)
|
|
649
|
-
|
|
667
|
+
sub_workflow_instance_stages = instance_sections
|
|
650
668
|
|
|
651
669
|
# Resolve fresh presigned URLs for any file-upload fields
|
|
652
670
|
form_data = _resolve_form_data_urls(submission.form_data)
|
|
@@ -678,8 +696,7 @@ def submission_detail(request, submission_id):
|
|
|
678
696
|
"approval_tasks": approval_tasks,
|
|
679
697
|
"stage_groups": stage_groups,
|
|
680
698
|
"sub_workflow_groups": sub_workflow_groups,
|
|
681
|
-
"
|
|
682
|
-
"sub_wf_section_label": sub_wf_section_label,
|
|
699
|
+
"sub_workflow_instance_stages": sub_workflow_instance_stages,
|
|
683
700
|
"form_data": form_data,
|
|
684
701
|
"form_data_ordered": form_data_ordered,
|
|
685
702
|
"approval_field_names": approval_field_names,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/__init__.py
RENAMED
|
File without changes
|
{django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/admin.py
RENAMED
|
File without changes
|
{django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/apps.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
|
{django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/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
|
{django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/models.py
RENAMED
|
File without changes
|
{django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/signals.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/sso_urls.py
RENAMED
|
File without changes
|
{django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/sso_views.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/sync_api.py
RENAMED
|
File without changes
|
{django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/sync_views.py
RENAMED
|
File without changes
|
{django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/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
|
{django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/urls.py
RENAMED
|
File without changes
|
{django_forms_workflows-0.20.2 → django_forms_workflows-0.20.4}/django_forms_workflows/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|