diff --git a/mayan/apps/document_signatures/apps.py b/mayan/apps/document_signatures/apps.py index 55dd1dfd57..587fb079f0 100644 --- a/mayan/apps/document_signatures/apps.py +++ b/mayan/apps/document_signatures/apps.py @@ -18,6 +18,10 @@ from mayan.celery import app from .handlers import ( handler_unverify_key_signatures, handler_verify_key_signatures ) +from .hooks import ( + hook_create_embedded_signature, hook_decrypt_document_version +) + from .links import ( link_all_document_version_signature_verify, link_document_signature_list, link_document_version_signature_delete, @@ -68,10 +72,10 @@ class DocumentSignaturesApp(MayanAppConfig): SignatureBaseModel = self.get_model(model_name='SignatureBaseModel') DocumentVersion.register_post_save_hook( - func=EmbeddedSignature.objects.create, order=1 + func=hook_create_embedded_signature, order=1 ) DocumentVersion.register_pre_open_hook( - func=EmbeddedSignature.objects.open_signed, order=1 + func=hook_decrypt_document_version, order=1 ) ModelPermission.register( diff --git a/mayan/apps/document_signatures/hooks.py b/mayan/apps/document_signatures/hooks.py new file mode 100644 index 0000000000..153dfd0f08 --- /dev/null +++ b/mayan/apps/document_signatures/hooks.py @@ -0,0 +1,23 @@ +from __future__ import unicode_literals + +from django.apps import apps + + +def hook_create_embedded_signature(document_version): + EmbeddedSignature = apps.get_model( + app_label='document_signatures', model_name='EmbeddedSignature' + ) + + EmbeddedSignature.objects.create(document_version=document_version) + + +def hook_decrypt_document_version(document_version, file_object): + EmbeddedSignature = apps.get_model( + app_label='document_signatures', model_name='EmbeddedSignature' + ) + + return { + 'file_object': EmbeddedSignature.objects.open_signed( + document_version=document_version, file_object=file_object + ) + } diff --git a/mayan/apps/document_signatures/managers.py b/mayan/apps/document_signatures/managers.py index 0425fa7d18..8f0eb8f161 100644 --- a/mayan/apps/document_signatures/managers.py +++ b/mayan/apps/document_signatures/managers.py @@ -14,7 +14,7 @@ logger = logging.getLogger(__name__) class EmbeddedSignatureManager(models.Manager): - def open_signed(self, file_object, document_version): + def open_signed(self, document_version, file_object): for signature in self.filter(document_version=document_version): try: return self.open_signed(