django-forms-workflows 0.26.0__tar.gz → 0.26.1__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 (137) hide show
  1. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/PKG-INFO +1 -1
  2. django_forms_workflows-0.26.1/django_forms_workflows/templates/admin/django_forms_workflows/_sync_diff.html +38 -0
  3. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/admin/django_forms_workflows/sync_pull.html +29 -8
  4. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/admin/django_forms_workflows/sync_push.html +27 -12
  5. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/pyproject.toml +1 -1
  6. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/CHANGELOG.md +0 -0
  7. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/LICENSE +0 -0
  8. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/README.md +0 -0
  9. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/__init__.py +0 -0
  10. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/admin.py +0 -0
  11. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/apps.py +0 -0
  12. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/context_processors.py +0 -0
  13. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/data_sources/__init__.py +0 -0
  14. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/data_sources/base.py +0 -0
  15. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/data_sources/database_source.py +0 -0
  16. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/data_sources/ldap_source.py +0 -0
  17. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/data_sources/user_source.py +0 -0
  18. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/diff_views.py +0 -0
  19. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/email_backends/__init__.py +0 -0
  20. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/email_backends/gmail_api.py +0 -0
  21. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/form_builder_urls.py +0 -0
  22. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/form_builder_views.py +0 -0
  23. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/forms.py +0 -0
  24. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/handlers/__init__.py +0 -0
  25. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/handlers/api_handler.py +0 -0
  26. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/handlers/base.py +0 -0
  27. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/handlers/database_handler.py +0 -0
  28. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/handlers/email_handler.py +0 -0
  29. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/handlers/executor.py +0 -0
  30. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/handlers/file_handler.py +0 -0
  31. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/handlers/ldap_handler.py +0 -0
  32. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/ldap_backend.py +0 -0
  33. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/management/commands/create_default_templates.py +0 -0
  34. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/management/commands/pull_forms.py +0 -0
  35. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/management/commands/push_forms.py +0 -0
  36. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/management/commands/seed_farm_demo.py +0 -0
  37. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/management/commands/seed_pcn_form.py +0 -0
  38. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/management/commands/seed_prefill_sources.py +0 -0
  39. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/management/commands/sync_ldap_profiles.py +0 -0
  40. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/management/commands/test_db_connection.py +0 -0
  41. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0001_initial.py +0 -0
  42. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0002_prefillsource_alter_formfield_prefill_source_and_more.py +0 -0
  43. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0003_postsubmissionaction.py +0 -0
  44. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0004_formtemplate.py +0 -0
  45. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0005_advanced_conditional_logic.py +0 -0
  46. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0006_workflowdefinition_visual_workflow_data_and_more.py +0 -0
  47. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0007_add_userprofile_ldap_enhancements.py +0 -0
  48. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0008_add_file_workflow_models.py +0 -0
  49. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0009_add_formfield_readonly.py +0 -0
  50. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0010_add_prefillsource_template_fields.py +0 -0
  51. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0011_postsubmissionaction_email_body_template_and_more.py +0 -0
  52. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0012_add_approval_step_fields.py +0 -0
  53. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0013_add_database_query_key.py +0 -0
  54. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0014_add_form_category.py +0 -0
  55. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0015_add_workflowstage_staged_approvals.py +0 -0
  56. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0016_add_pdf_generation.py +0 -0
  57. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0017_add_notification_batching.py +0 -0
  58. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0018_add_form_category_parent.py +0 -0
  59. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0019_add_ldap_group_profile.py +0 -0
  60. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0020_add_bulk_export_field.py +0 -0
  61. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0021_alter_pendingnotification_scheduled_for_and_more.py +0 -0
  62. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0022_add_bulk_pdf_export.py +0 -0
  63. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0023_add_performance_indexes.py +0 -0
  64. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0024_add_allow_resubmit.py +0 -0
  65. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0025_workflowstage_approve_label.py +0 -0
  66. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0026_alter_formfield_width.py +0 -0
  67. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0027_formsubmission_form_data_gin.py +0 -0
  68. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0028_workflowstagegroupconfig.py +0 -0
  69. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0029_formfield_workflow_stage_fk_drop_groupconfig.py +0 -0
  70. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0030_formfield_phone_type.py +0 -0
  71. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0031_sub_workflows.py +0 -0
  72. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0032_approved_pending_detached_sub_workflow.py +0 -0
  73. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0033_add_reject_parent_to_subworkflowdefinition.py +0 -0
  74. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0034_add_notificationlog.py +0 -0
  75. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0035_migrate_prefill_source_strings.py +0 -0
  76. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0036_add_workflowstage_auto_created.py +0 -0
  77. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0037_migrate_flat_workflows_to_staged.py +0 -0
  78. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0038_remove_legacy_prefill_source_and_approval_step.py +0 -0
  79. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0039_update_help_text.py +0 -0
  80. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0040_migrate_deprecated_features.py +0 -0
  81. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0041_remove_deprecated_fields.py +0 -0
  82. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0042_add_sub_workflow_section_label.py +0 -0
  83. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0043_fix_form_data_decimal_encoding.py +0 -0
  84. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0044_remove_subworkflowinstance_label.py +0 -0
  85. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0045_stageapprovalgroup_workflow_name_label.py +0 -0
  86. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0046_workflow_definition_one_to_many.py +0 -0
  87. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/0047_add_hide_approval_history.py +0 -0
  88. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/migrations/__init__.py +0 -0
  89. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/models.py +0 -0
  90. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/signals.py +0 -0
  91. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/sso_backends.py +0 -0
  92. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/sso_urls.py +0 -0
  93. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/sso_views.py +0 -0
  94. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/static/django_forms_workflows/js/form-builder.js +0 -0
  95. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/static/django_forms_workflows/js/form-enhancements.js +0 -0
  96. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/static/django_forms_workflows/js/workflow-builder.js +0 -0
  97. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/sync_api.py +0 -0
  98. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/sync_views.py +0 -0
  99. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/tasks.py +0 -0
  100. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/admin/django_forms_workflows/diff_forms.html +0 -0
  101. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/admin/django_forms_workflows/form_builder.html +0 -0
  102. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/admin/django_forms_workflows/formdef_change_form.html +0 -0
  103. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/admin/django_forms_workflows/formdefinition/change_list.html +0 -0
  104. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/admin/django_forms_workflows/sync_import.html +0 -0
  105. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/admin/django_forms_workflows/workflow_builder.html +0 -0
  106. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/django_forms_workflows/_category_node.html +0 -0
  107. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/django_forms_workflows/approval_inbox.html +0 -0
  108. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/django_forms_workflows/approve.html +0 -0
  109. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/django_forms_workflows/base.html +0 -0
  110. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/django_forms_workflows/completed_approvals.html +0 -0
  111. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/django_forms_workflows/form_categories.html +0 -0
  112. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/django_forms_workflows/form_list.html +0 -0
  113. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/django_forms_workflows/form_submit.html +0 -0
  114. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/django_forms_workflows/my_submissions.html +0 -0
  115. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/django_forms_workflows/resubmit_confirm.html +0 -0
  116. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/django_forms_workflows/sso/login.html +0 -0
  117. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/django_forms_workflows/sub_workflow_detail.html +0 -0
  118. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/django_forms_workflows/submission_bulk_pdf.html +0 -0
  119. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/django_forms_workflows/submission_detail.html +0 -0
  120. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/django_forms_workflows/submission_pdf.html +0 -0
  121. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/django_forms_workflows/withdraw_confirm.html +0 -0
  122. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/emails/approval_notification.html +0 -0
  123. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/emails/approval_reminder.html +0 -0
  124. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/emails/approval_request.html +0 -0
  125. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/emails/email_styles.html +0 -0
  126. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/emails/escalation_notification.html +0 -0
  127. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/emails/notification_digest.html +0 -0
  128. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/emails/rejection_notification.html +0 -0
  129. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/emails/submission_notification.html +0 -0
  130. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templates/registration/login.html +0 -0
  131. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templatetags/__init__.py +0 -0
  132. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/templatetags/forms_workflows_tags.py +0 -0
  133. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/urls.py +0 -0
  134. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/utils.py +0 -0
  135. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/views.py +0 -0
  136. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/django_forms_workflows/workflow_builder_views.py +0 -0
  137. {django_forms_workflows-0.26.0 → django_forms_workflows-0.26.1}/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.26.0
3
+ Version: 0.26.1
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
@@ -0,0 +1,38 @@
1
+ {# Reusable diff summary styles + macros for push/pull templates #}
2
+ <style>
3
+ .sync-status-new { color: #1a7f37; font-weight: 600; }
4
+ .sync-status-identical { color: #57606a; }
5
+ .sync-status-link { color: #0969da; font-weight: 600; cursor: pointer; text-decoration: none; }
6
+ .sync-status-link:hover { text-decoration: underline; }
7
+ .sync-diff-panel {
8
+ background: #f6f8fa;
9
+ border-top: 1px solid #d0d7de;
10
+ padding: 12px 20px;
11
+ }
12
+ .sync-diff-list { list-style: none; margin: 0; padding: 0; }
13
+ .sync-diff-list li {
14
+ padding: 6px 0;
15
+ font-size: 13px;
16
+ line-height: 1.5;
17
+ color: #24292f;
18
+ border-bottom: 1px solid #eaeef2;
19
+ }
20
+ .sync-diff-list li:last-child { border-bottom: none; }
21
+ .sync-diff-tag {
22
+ display: inline-block;
23
+ font-size: 11px;
24
+ font-weight: 700;
25
+ width: 20px;
26
+ height: 20px;
27
+ line-height: 20px;
28
+ text-align: center;
29
+ border-radius: 4px;
30
+ margin-right: 10px;
31
+ vertical-align: middle;
32
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
33
+ }
34
+ .sync-diff-tag-add { background: #dafbe1; color: #1a7f37; }
35
+ .sync-diff-tag-remove { background: #ffebe9; color: #cf222e; }
36
+ .sync-diff-tag-change { background: #fff8c5; color: #9a6700; }
37
+ .sync-diff-tag-info { background: #ddf4ff; color: #0969da; }
38
+ </style>
@@ -16,6 +16,7 @@
16
16
  {% endblock %}
17
17
 
18
18
  {% block content %}
19
+ {% include "admin/django_forms_workflows/_sync_diff.html" %}
19
20
  <h1>Pull Forms from Remote</h1>
20
21
 
21
22
  {% if error %}
@@ -87,18 +88,38 @@
87
88
  <td>{{ form.form.name }}</td>
88
89
  <td>{{ form.category.name|default:"—" }}</td>
89
90
  <td>
90
- {% for d in form_diffs %}{% if d.slug == slug %}{% if d.is_new %}<span style="color:#1a7f37;font-weight:600;">New</span>{% elif d.summary.identical %}<span style="color:#6e7781;">Identical</span>{% else %}<a href="#" onclick="document.getElementById('diff-{{slug}}').style.display=document.getElementById('diff-{{slug}}').style.display==='none'?'':'none';return false;" style="font-weight:600;">{{ d.summary.diffs|length }} change{{ d.summary.diffs|length|pluralize }}</a>{% endif %}{% endif %}{% endfor %}
91
+ {% for d in form_diffs %}{% if d.slug == slug %}
92
+ {% if d.is_new %}
93
+ <span class="sync-status-new">✚ New</span>
94
+ {% elif d.summary.identical %}
95
+ <span class="sync-status-identical">— No changes</span>
96
+ {% else %}
97
+ <a href="#" class="sync-status-link" onclick="var el=document.getElementById('diff-{{slug}}');el.style.display=el.style.display==='none'?'':'none';return false;">
98
+ ▸ {{ d.summary.diffs|length }} change{{ d.summary.diffs|length|pluralize }}
99
+ </a>
100
+ {% endif %}
101
+ {% endif %}{% endfor %}
91
102
  </td>
92
103
  </tr>
93
104
  {% for d in form_diffs %}{% if d.slug == slug and not d.is_new and not d.summary.identical %}
94
105
  <tr id="diff-{{ slug }}" style="display:none;">
95
- <td colspan="5" style="padding:8px 16px;background:#f6f8fa;">
96
- {% for item in d.summary.diffs %}
97
- <div style="padding:3px 0;font-size:13px;">
98
- {% if "added" in item|lower %}<span style="background:#1a7f37;color:#fff;padding:1px 6px;border-radius:10px;font-size:11px;font-weight:600;margin-right:6px;">+</span>{% elif "removed" in item|lower %}<span style="background:#cf222e;color:#fff;padding:1px 6px;border-radius:10px;font-size:11px;font-weight:600;margin-right:6px;">−</span>{% else %}<span style="background:#9a6700;color:#fff;padding:1px 6px;border-radius:10px;font-size:11px;font-weight:600;margin-right:6px;">Δ</span>{% endif %}
99
- {{ item }}
100
- </div>
101
- {% endfor %}
106
+ <td colspan="5" class="sync-diff-panel">
107
+ <ul class="sync-diff-list">
108
+ {% for item in d.summary.diffs %}
109
+ <li>
110
+ {% if "added" in item|lower %}
111
+ <span class="sync-diff-tag sync-diff-tag-add">+</span>
112
+ {% elif "removed" in item|lower %}
113
+ <span class="sync-diff-tag sync-diff-tag-remove">−</span>
114
+ {% elif "modified" in item|lower or "→" in item %}
115
+ <span class="sync-diff-tag sync-diff-tag-change">Δ</span>
116
+ {% else %}
117
+ <span class="sync-diff-tag sync-diff-tag-info">i</span>
118
+ {% endif %}
119
+ {{ item }}
120
+ </li>
121
+ {% endfor %}
122
+ </ul>
102
123
  </td>
103
124
  </tr>
104
125
  {% endif %}{% endfor %}
@@ -16,6 +16,7 @@
16
16
  {% endblock %}
17
17
 
18
18
  {% block content %}
19
+ {% include "admin/django_forms_workflows/_sync_diff.html" %}
19
20
  <h1>Push Forms to Remote</h1>
20
21
 
21
22
  {% if error %}
@@ -85,22 +86,36 @@
85
86
  <td><code>{{ d.slug }}</code></td>
86
87
  <td>{{ d.name }}</td>
87
88
  <td>
88
- {% if d.is_new %}<span style="color:#1a7f37;font-weight:600;">New (will be created)</span>
89
- {% elif d.summary.identical %}<span style="color:#6e7781;">No changes</span>
90
- {% else %}<a href="#" onclick="document.getElementById('push-diff-{{ d.slug }}').style.display=document.getElementById('push-diff-{{ d.slug }}').style.display==='none'?'':'none';return false;" style="font-weight:600;">{{ d.summary.diffs|length }} change{{ d.summary.diffs|length|pluralize }}</a>{% endif %}
89
+ {% if d.is_new %}
90
+ <span class="sync-status-new">✚ New</span>
91
+ {% elif d.summary.identical %}
92
+ <span class="sync-status-identical">— No changes</span>
93
+ {% else %}
94
+ <a href="#" class="sync-status-link" onclick="var el=document.getElementById('push-diff-{{ d.slug }}');el.style.display=el.style.display==='none'?'':'none';return false;">
95
+ ▸ {{ d.summary.diffs|length }} change{{ d.summary.diffs|length|pluralize }}
96
+ </a>
97
+ {% endif %}
91
98
  </td>
92
99
  </tr>
93
100
  {% if not d.is_new and not d.summary.identical %}
94
101
  <tr id="push-diff-{{ d.slug }}" style="display:none;">
95
- <td colspan="4" style="padding:8px 16px;background:#f6f8fa;">
96
- {% for item in d.summary.diffs %}
97
- <div style="padding:3px 0;font-size:13px;">
98
- {% if "added" in item|lower %}<span style="background:#1a7f37;color:#fff;padding:1px 6px;border-radius:10px;font-size:11px;font-weight:600;margin-right:6px;">+</span>
99
- {% elif "removed" in item|lower %}<span style="background:#cf222e;color:#fff;padding:1px 6px;border-radius:10px;font-size:11px;font-weight:600;margin-right:6px;">−</span>
100
- {% else %}<span style="background:#9a6700;color:#fff;padding:1px 6px;border-radius:10px;font-size:11px;font-weight:600;margin-right:6px;">Δ</span>{% endif %}
101
- {{ item }}
102
- </div>
103
- {% endfor %}
102
+ <td colspan="4" class="sync-diff-panel">
103
+ <ul class="sync-diff-list">
104
+ {% for item in d.summary.diffs %}
105
+ <li>
106
+ {% if "added" in item|lower %}
107
+ <span class="sync-diff-tag sync-diff-tag-add">+</span>
108
+ {% elif "removed" in item|lower %}
109
+ <span class="sync-diff-tag sync-diff-tag-remove">−</span>
110
+ {% elif "modified" in item|lower or "→" in item %}
111
+ <span class="sync-diff-tag sync-diff-tag-change">Δ</span>
112
+ {% else %}
113
+ <span class="sync-diff-tag sync-diff-tag-info">i</span>
114
+ {% endif %}
115
+ {{ item }}
116
+ </li>
117
+ {% endfor %}
118
+ </ul>
104
119
  </td>
105
120
  </tr>
106
121
  {% endif %}
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "django-forms-workflows"
3
- version = "0.26.0"
3
+ version = "0.26.1"
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"