83 lines
2.6 KiB
Python
83 lines
2.6 KiB
Python
from __future__ import unicode_literals
|
|
|
|
import logging
|
|
|
|
from django.apps import apps
|
|
|
|
from mayan.celery import app
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
@app.task(bind=True, ignore_result=True)
|
|
def task_unverify_key_signatures(self, key_id):
|
|
DetachedSignature = apps.get_model(
|
|
app_label='document_signatures', model_name='DetachedSignature'
|
|
)
|
|
|
|
EmbeddedSignature = apps.get_model(
|
|
app_label='document_signatures', model_name='EmbeddedSignature'
|
|
)
|
|
|
|
for signature in DetachedSignature.objects.filter(key_id__endswith=key_id).filter(signature_id__isnull=False):
|
|
signature.save()
|
|
|
|
for signature in EmbeddedSignature.objects.filter(key_id__endswith=key_id).filter(signature_id__isnull=False):
|
|
signature.save()
|
|
|
|
|
|
@app.task(bind=True, ignore_result=True)
|
|
def task_verify_key_signatures(self, key_pk):
|
|
Key = apps.get_model(
|
|
app_label='django_gpg', model_name='Key'
|
|
)
|
|
|
|
DetachedSignature = apps.get_model(
|
|
app_label='document_signatures', model_name='DetachedSignature'
|
|
)
|
|
|
|
EmbeddedSignature = apps.get_model(
|
|
app_label='document_signatures', model_name='EmbeddedSignature'
|
|
)
|
|
|
|
key = Key.objects.get(pk=key_pk)
|
|
|
|
for signature in DetachedSignature.objects.filter(key_id__endswith=key.key_id).filter(signature_id__isnull=True):
|
|
signature.save()
|
|
|
|
for signature in EmbeddedSignature.objects.filter(key_id__endswith=key.key_id).filter(signature_id__isnull=True):
|
|
signature.save()
|
|
|
|
|
|
@app.task(bind=True, ignore_result=True)
|
|
def task_verify_missing_embedded_signature(self):
|
|
EmbeddedSignature = apps.get_model(
|
|
app_label='document_signatures', model_name='EmbeddedSignature'
|
|
)
|
|
|
|
for document_version in EmbeddedSignature.objects.unsigned_document_versions():
|
|
task_verify_document_version.apply_async(
|
|
kwargs=dict(document_version_pk=document_version.pk)
|
|
)
|
|
|
|
|
|
@app.task(bind=True, ignore_result=True)
|
|
def task_verify_document_version(self, document_version_pk):
|
|
DocumentVersion = apps.get_model(
|
|
app_label='documents', model_name='DocumentVersion'
|
|
)
|
|
|
|
EmbeddedSignature = apps.get_model(
|
|
app_label='document_signatures', model_name='EmbeddedSignature'
|
|
)
|
|
|
|
document_version = DocumentVersion.objects.get(pk=document_version_pk)
|
|
try:
|
|
EmbeddedSignature.objects.create(document_version=document_version)
|
|
except IOError as exception:
|
|
error_message = 'File missing for document version ID {}; {}'.format(
|
|
document_version_pk, exception
|
|
)
|
|
logger.error(error_message)
|
|
raise IOError(error_message)
|