Add OCR content deleted event

Signed-off-by: Roberto Rosario <roberto.rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2019-09-24 00:15:23 -04:00
parent e62e684107
commit 792aa64829
6 changed files with 46 additions and 4 deletions

View File

@@ -7,6 +7,7 @@
* Update jQuery to version 3.4.1
* Add support for deleting the OCR content of a document
or selection of documents.
* Add OCR content deleted event.
3.2.7 (2019-08-28)
==================

View File

@@ -14,9 +14,14 @@ from mayan.apps.common.menus import (
)
from mayan.apps.documents.search import document_search, document_page_search
from mayan.apps.documents.signals import post_version_upload
from mayan.apps.events.classes import ModelEventType
from mayan.apps.navigation.classes import SourceColumn
from .dependencies import * # NOQA
from .events import (
event_ocr_document_content_deleted, event_ocr_document_version_finish,
event_ocr_document_version_submit
)
from .handlers import (
handler_index_document, handler_initialize_new_ocr_settings,
handler_ocr_document_version,
@@ -83,6 +88,14 @@ class OCRApp(MayanAppConfig):
name='submit_for_ocr', value=method_document_version_ocr_submit
)
ModelEventType.register(
model=Document, event_types=(
event_ocr_document_content_deleted,
event_ocr_document_version_finish,
event_ocr_document_version_submit
)
)
ModelField(
model=Document, name='versions__pages__ocr_content__content'
)

View File

@@ -6,6 +6,10 @@ from mayan.apps.events.classes import EventTypeNamespace
namespace = EventTypeNamespace(label=_('OCR'), name='ocr')
event_ocr_document_content_deleted = namespace.add_event_type(
label=_('Document OCR content deleted'),
name='document_content_deleted'
)
event_ocr_document_version_submit = namespace.add_event_type(
label=_('Document version submitted for OCR'),
name='document_version_submit'

View File

@@ -12,7 +12,9 @@ from mayan.apps.documents.storages import storage_documentimagecache
from mayan.apps.documents.literals import DOCUMENT_IMAGE_TASK_TIMEOUT
from mayan.apps.documents.tasks import task_generate_document_page_image
from .events import event_ocr_document_version_finish
from .events import (
event_ocr_document_content_deleted, event_ocr_document_version_finish
)
from .runtime import ocr_backend
from .signals import post_document_version_ocr
@@ -20,11 +22,15 @@ logger = logging.getLogger(__name__)
class DocumentPageOCRContentManager(models.Manager):
def delete_ocr_content_for(self, document):
def delete_ocr_content_for(self, document, user=None):
with transaction.atomic():
for document_page in document.pages.all():
self.filter(document_page=document_page).delete()
event_ocr_document_content_deleted.commit(
actor=user, target=document
)
def process_document_page(self, document_page):
logger.info(
'Processing page: %d of document version: %s',

View File

@@ -5,11 +5,29 @@ from actstream.models import Action
from mayan.apps.documents.tests.test_models import GenericDocumentTestCase
from ..events import (
event_ocr_document_version_submit, event_ocr_document_version_finish
event_ocr_document_content_deleted, event_ocr_document_version_submit,
event_ocr_document_version_finish
)
from ..models import DocumentPageOCRContent
class OCREventsTestCase(GenericDocumentTestCase):
def test_document_content_deleted_event(self):
Action.objects.all().delete()
DocumentPageOCRContent.objects.delete_ocr_content_for(
document=self.test_document
)
# Get the oldest action
action = Action.objects.order_by('-timestamp').last()
self.assertEqual(
action.target, self.test_document
)
self.assertEqual(
action.verb, event_ocr_document_content_deleted.id
)
def test_document_version_submit_event(self):
Action.objects.all().delete()
self.test_document.submit_for_ocr()

View File

@@ -47,7 +47,7 @@ class DocumentOCRContentDeleteView(MultipleObjectConfirmActionView):
def object_action(self, form, instance):
DocumentPageOCRContent.objects.delete_ocr_content_for(
document=instance
document=instance, user=self.request.user
)