Add link to view a specific page's OCR content.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2018-08-28 03:39:42 -04:00
parent 495ab7fd9b
commit 5eba4f67e5
6 changed files with 87 additions and 15 deletions

View File

@@ -125,6 +125,7 @@
permissions is now required to view the parsing error list.
- The document type parsing setup permission can now be granted for
individual document types.
- Add link to view a specific page's OCR content.
3.0.3 (2018-08-17)
==================

View File

@@ -27,10 +27,11 @@ from .handlers import (
handler_initialize_new_ocr_settings, handler_ocr_document_version,
)
from .links import (
link_document_content, link_document_ocr_download,
link_document_ocr_errors_list, link_document_submit,
link_document_submit_multiple, link_document_type_ocr_settings,
link_document_type_submit, link_entry_list
link_document_page_ocr_content, link_document_ocr_content,
link_document_ocr_download, link_document_ocr_errors_list,
link_document_submit, link_document_submit_multiple,
link_document_type_ocr_settings, link_document_type_submit,
link_entry_list
)
from .permissions import (
permission_document_type_ocr_setup, permission_ocr_document,
@@ -74,6 +75,9 @@ class OCRApp(MayanAppConfig):
Document = apps.get_model(
app_label='documents', model_name='Document'
)
DocumentPage = apps.get_model(
app_label='documents', model_name='DocumentPage'
)
DocumentType = apps.get_model(
app_label='documents', model_name='DocumentType'
)
@@ -141,7 +145,10 @@ class OCRApp(MayanAppConfig):
)
menu_facet.bind_links(
links=(link_document_content,), sources=(Document,)
links=(link_document_ocr_content,), sources=(Document,)
)
menu_facet.bind_links(
links=(link_document_page_ocr_content,), sources=(DocumentPage,)
)
menu_multi_item.bind_links(
links=(link_document_submit_multiple,), sources=(Document,)
@@ -149,12 +156,15 @@ class OCRApp(MayanAppConfig):
menu_object.bind_links(
links=(link_document_submit,), sources=(Document,)
)
menu_object.bind_links(
links=(link_document_page_ocr_content,), sources=(DocumentPage,)
)
menu_object.bind_links(
links=(link_document_type_ocr_settings,), sources=(DocumentType,)
)
menu_secondary.bind_links(
links=(
link_document_content, link_document_ocr_errors_list,
link_document_ocr_content, link_document_ocr_errors_list,
link_document_ocr_download
),
sources=(

View File

@@ -12,6 +12,33 @@ from documents.models import DocumentType
from .models import DocumentPageOCRContent
class DocumentPageOCRContentForm(forms.Form):
def __init__(self, *args, **kwargs):
page = kwargs.pop('instance', None)
super(DocumentPageOCRContentForm, self).__init__(*args, **kwargs)
content = ''
self.fields['contents'].initial = ''
try:
page_content = page.ocr_content.content
except DocumentPageOCRContent.DoesNotExist:
pass
else:
content = conditional_escape(force_text(page_content))
self.fields['contents'].initial = mark_safe(content)
contents = forms.CharField(
label=_('Contents'),
widget=TextAreaDiv(
attrs={
'class': 'text_area_div full-height',
'data-height-difference': 360
}
)
)
class DocumentOCRContentForm(forms.Form):
"""
Form that concatenates all of a document pages' text content into a

View File

@@ -14,10 +14,15 @@ from .permissions import (
permission_document_type_ocr_setup
)
link_document_content = Link(
link_document_page_ocr_content = Link(
args='resolved_object.id', icon_class=icon_document_content,
permissions=(permission_ocr_content_view,), text=_('OCR'),
view='ocr:document_content',
view='ocr:document_page_ocr_content',
)
link_document_ocr_content = Link(
args='resolved_object.id', icon_class=icon_document_content,
permissions=(permission_ocr_content_view,), text=_('OCR'),
view='ocr:document_ocr_content',
)
link_document_submit = Link(
args='resolved_object.id', permissions=(permission_ocr_document,),

View File

@@ -8,14 +8,18 @@ from .api_views import (
)
from .views import (
DocumentOCRContent, DocumentOCRDownloadView, DocumentOCRErrorsListView,
DocumentSubmitView, DocumentTypeSettingsEditView, DocumentTypeSubmitView,
EntryListView
DocumentPageOCRContent, DocumentSubmitView, DocumentTypeSettingsEditView,
DocumentTypeSubmitView, EntryListView
)
urlpatterns = [
url(
r'^(?P<pk>\d+)/content/$', DocumentOCRContent.as_view(),
name='document_content'
r'^document/page/(?P<pk>\d+)/content/$',
DocumentPageOCRContent.as_view(), name='document_page_ocr_content'
),
url(
r'^document/(?P<pk>\d+)/content/$', DocumentOCRContent.as_view(),
name='document_ocr_content'
),
url(
r'^document/(?P<pk>\d+)/submit/$', DocumentSubmitView.as_view(),

View File

@@ -10,9 +10,12 @@ from common.generics import (
FormView, MultipleObjectConfirmActionView, SingleObjectDetailView,
SingleObjectDownloadView, SingleObjectEditView, SingleObjectListView
)
from documents.models import Document, DocumentType
from documents.models import Document, DocumentPage, DocumentType
from .forms import DocumentOCRContentForm, DocumentTypeSelectForm
from .forms import (
DocumentPageOCRContentForm, DocumentOCRContentForm,
DocumentTypeSelectForm
)
from .models import DocumentVersionOCRError
from .permissions import (
permission_ocr_content_view, permission_ocr_document,
@@ -30,7 +33,7 @@ class DocumentOCRContent(SingleObjectDetailView):
result = super(DocumentOCRContent, self).dispatch(
request, *args, **kwargs
)
self.get_object().add_as_recent_document_for_user(request.user)
self.get_object().add_as_recent_document_for_user(user=request.user)
return result
def get_extra_context(self):
@@ -42,6 +45,28 @@ class DocumentOCRContent(SingleObjectDetailView):
}
class DocumentPageOCRContent(SingleObjectDetailView):
form_class = DocumentPageOCRContentForm
model = DocumentPage
object_permission = permission_ocr_content_view
def dispatch(self, request, *args, **kwargs):
result = super(DocumentPageOCRContent, self).dispatch(
request, *args, **kwargs
)
self.get_object().document.add_as_recent_document_for_user(
user=request.user
)
return result
def get_extra_context(self):
return {
'hide_labels': True,
'object': self.get_object(),
'title': _('OCR result for document page: %s') % self.get_object(),
}
class DocumentSubmitView(MultipleObjectConfirmActionView):
model = Document
object_permission = permission_ocr_document