Skip to content

Electronic Signatures#21

Merged
agritheory merged 15 commits into
version-15from
electronic_signature
Jun 16, 2026
Merged

Electronic Signatures#21
agritheory merged 15 commits into
version-15from
electronic_signature

Conversation

@agritheory

Copy link
Copy Markdown
Owner

No description provided.

@github-actions

Copy link
Copy Markdown

📝 Draft Changelog Entry

Changelog Entry

This update adds electronic signature functionality to the communications system. A new Electronic Signature document type has been introduced that allows signatures to be created and managed within the application. An associated Electronic Signature Signer document type has been added to track individual signers for each signature request.

The system includes a web portal interface where signature requests can be accessed and signed. Backend infrastructure has been added to handle signature creation, validation, and signer management. Installation and setup processes have been updated to support the new electronic signature features.

This changelog entry was automatically generated by the Changelog Generator Action.

@github-actions

github-actions Bot commented Apr 20, 2026

Copy link
Copy Markdown

Coverage

@agritheory agritheory requested a review from HKuz April 29, 2026 13:01
@agritheory agritheory changed the title wip: electronic signatures Electronic Signatures May 5, 2026
@github-actions

github-actions Bot commented Jun 8, 2026

Copy link
Copy Markdown

Draft Changelog Entry

Changelog Entry

This update adds electronic signature functionality to the communications module. Users can now create and manage electronic signatures through a new Electronic Signature document type. The system includes support for multiple signers through the Electronic Signature Signer document type, allowing documents to be routed to different parties for signature collection.

A public portal interface has been added that enables signers to access and sign documents through a web-based form without requiring system access. The implementation includes comprehensive documentation on how to use the electronic signature feature.

The installation process has been updated to support the new electronic signature components, and related calendar notification functionality has been adjusted to work with the updated system.

This changelog entry was automatically generated by the Changelog Generator Action.

@HKuz

HKuz commented Jun 12, 2026

Copy link
Copy Markdown
Collaborator

Status update:

  • Removed the extra pytest workflow file (there were 2)
  • fix issue where the CI was showing as passing even with failing tests - two in Esignature feature and three for notification scheduler. I applied the same fix from Cloud Storage here
  • Removed a couple client references in docs/code comments
  • Updated docs with additional config info
  • Testing esig in the UI (issues I had turned out to be config ones)
  • Fixes the failing esig render test - it failed because there was no assets.json created (--skip-assets in CI - now empty object created in install), which silently created an error through the call chain that set document_html to an empty string in the Electronic Signature doc

Slight PR creep as 3 scheduler tests were failing:

  • 2 of the scheduler tests needed a document_type on notification to avoid a TypeError being None downstream, added here
  • TO REVIEW - if these changes still preserve what the test covers: the test_priority_doctype_bypasses_batching was failing at the assert queue_entry.status == "Failed" line (test passed locally because I didn't have an email server set up in my site_config.json, but failed in CI because it is. frappe.send_mail call chain swallowed an error, so the tested except block was never reached). Per the LLM, two patches are added in order to reach the tested dispatcher except block (sets status = "Failed") and writes the error log entry that the final assertion checks
    • patch("frappe.sendmail", side_effect=Exception(...)) -> Forces the mail transport to fail. Without this, a configured mail server (like in CI or your updated local site_config.json) would either succeed or swallow the error internally, causing status to be set to "Sent".
    • patch("communications.notification_scheduler.dispatcher.try_email_override", return_value=False) -> Prevents the email override path from returning True and short-circuiting before frappe.sendmail is even called. If a Notification with email_override happened to be configured in the test DB, try_email_override would return True and mark status "Sent" before the sendmail patch could do anything

I can revert the scheduler test changes if needed.

@HKuz HKuz left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feature LGTM! 🎉 Someone may want to take a quick look at the notification scheduler test changes made to get a passing CI

# Patch frappe.sendmail to raise and try_email_override to return False so the full
# dispatcher failure-handling path runs (status -> "Failed", error logged) regardless
# of whether a real mail server is configured in site_config.
with patch("frappe.sendmail", side_effect=Exception("Simulated send failure")), patch(

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@HKuz This is a reasonable solution since there are kind of two features under test.

@agritheory agritheory merged commit d06d428 into version-15 Jun 16, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants