summaryrefslogtreecommitdiff
path: root/postgresqleu/digisign
AgeCommit message (Collapse)Author
2025-06-24Enforce maximum height of signwell fieldsMagnus Hagander
Signwell have implemented a size limitation that no fields can have a height bigger than 34px. Unfortunately, their own GUI editor allows the creation of fields that are larger than this, and once one has done that they can no longer be loaded for editing or sent through the API (it appears the limitation is only in the public API and not their internal ones). So to make signing work at all, when editing a contract enforce the limit to 34px (with a warning). Things might not look very nice anymore but they should at least work. Support case has been opened with Signwell to see if this was actually intentional (the max size in the UI editor appears to be 74), and if so if they are planning to align the UI with the API. This commit goes in pending a possible change on their side and we can revert if if we end up not needing it permanently.
2025-01-07Move fitz version checks to versionutil.pyMagnus Hagander
Move the backwards-compatibility checks for fitz over to this new file as well, instead of having them spread out through the code.
2025-01-03Fix reversed fitz version checkMagnus Hagander
2025-01-03Attempt some further fitz version fixesMagnus Hagander
2024-12-13Support both older and newer fitz versionsMagnus Hagander
They renamed functions...
2024-12-04Don't crash when contract has signwell enabled but no fieldsMagnus Hagander
2024-11-05Don't crash on contracts with no sender specific messageMagnus Hagander
Commit 470fbba78f7ad65c63eab5fa956032592d5a467a didn't take this case into account, assuming it could only be empty and not None, but it's an optional parameter tot he function and the "Send test contract" functionality explicitly does that. Spotted by Steve Singer
2024-09-04Fix two misspellings of statusMagnus Hagander
2024-06-25Replace newline with <br/> in signwell messagesMagnus Hagander
When attaching a message to a contract, it looksl ike Signwell accepts html (the format isn't really documented), so this is a way to make the message a lot nicer.
2024-02-20Separate the message to sponsor and org in digital contractsMagnus Hagander
With an extension of the upstream APIs we can now send separate mssages to the different parties of the signing. With this we can keep the "sponsor friendly" message we have now for the sponsors, and send a more appropriate message to the organizers to make it clear what the next step is. In the internal API we make it an optional parameter, so if another future provider doesn't support separating the messages, things still work.
2023-11-14Add scheduled job to fetch digisign completed contractsMagnus Hagander
2023-11-14Download completed digital contracts and store them in the dbMagnus Hagander
For now, also allow viewing of the contracts from the administrative interface by organizers, but not yet by the sponsors themselves (no reason not to, just one step at a time).
2023-10-27Track and show processing dates of digital contractsMagnus Hagander
Instead of just keeping track of that a contract has been signed, explicitly track *when* it was sign. Also track when a contract is partially signed (for confsponsor that's signed by the sponsor but not by the organizers). And show this information on the sponsorship dashboard and the sponsorship details.
2023-10-19Send notifications to conf organizers on signed digital contractsMagnus Hagander
When a digital contract is signed, notifications were only sent from signwell to the actual party signing - not to the conference organizers. So there was no way for them to know. With this change, also notify the conference organiers on signing and counter-signing (counter-signing only if automatic processing is n't enabled - if it is, the notification is sent from there).
2023-07-12Implement re-sending of sponsorship contractsMagnus Hagander
For e-mail based contracts, this just re-generates the PDF and sends it. For digital contracts (only available if supported by the provider), it will both cancel the old contract and create/send a new one.
2023-07-12Implement cancelation of digital contracts when sponsorship is rejectedMagnus Hagander
2023-06-22Implement handler for contract-canceled webhook from signwellMagnus Hagander
2023-06-07Make the test= parameter to send_contract mandatoryMagnus Hagander
Explicitly require test=False to send a production contract and test=True to send a test one. This also fixes the problem with the default being test=True, causing our production contract to go out as test in some cases :)
2023-06-03Log the full webhook data when exception occursMagnus Hagander
2023-06-03Don't retur n500 on webhook exceptionsMagnus Hagander
This will get the webhook stuck in a retry loop...
2023-06-02Fix two more instances of bad logging parametersMagnus Hagander
2023-06-02Avoid crash when previewing fields on contract with no fieldsMagnus Hagander
2023-06-02Add a log view that shows full debug details of digisign logsMagnus Hagander
2023-06-02Workaround field type naming bug in signwellMagnus Hagander
2023-06-02Fix logging of failed signing requestsMagnus Hagander
2023-06-02Fix encoding of base64 outputMagnus Hagander
2023-06-02Don't crash on failing to read the signwell webhook apiMagnus Hagander
2023-06-02Add support for digital signature providersMagnus Hagander
This adds a new type of provider to the system for handling digital signatures. Initially the only consumer is conference sponsorships, but it could be added for other parts of the system as well in the future. Regular "old-style" sponsorship contracts are still supported, but will gain the feature to auto-fill sponsor name and VAT number if wanted. The sponsor signup workflow is adjusted to support either one or both of the two methods. Initially the only implementation is Signwell, but the system is made pluggable just like e.g. the payment providers, so other suppliers can be added in the future. This should be considered fairly beta at this point, as several parts of it cannot be fully tested until a production account is in place. But the basics are there...