Instead of inserting the path of the apps into the Python app, the apps are now referenced by their full import path. This solves name clashes with external or native Python libraries. Example: Mayan statistics app vs. Python new statistics library. Every app reference is now prepended with 'mayan.apps'. Existing config.yml files need to be updated manually. Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
78 lines
2.4 KiB
Python
78 lines
2.4 KiB
Python
from __future__ import unicode_literals
|
|
|
|
from django.db import models
|
|
from django.utils.encoding import force_text, python_2_unicode_compatible
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from mayan.apps.documents.models import DocumentPage, DocumentType, DocumentVersion
|
|
|
|
from .managers import (
|
|
DocumentPageOCRContentManager, DocumentTypeSettingsManager
|
|
)
|
|
|
|
|
|
class DocumentTypeSettings(models.Model):
|
|
"""
|
|
Define for OCR for a specific document should behave
|
|
"""
|
|
document_type = models.OneToOneField(
|
|
on_delete=models.CASCADE, related_name='ocr_settings',
|
|
to=DocumentType, unique=True, verbose_name=_('Document type')
|
|
)
|
|
auto_ocr = models.BooleanField(
|
|
default=True,
|
|
verbose_name=_('Automatically queue newly created documents for OCR.')
|
|
)
|
|
|
|
objects = DocumentTypeSettingsManager()
|
|
|
|
class Meta:
|
|
verbose_name = _('Document type settings')
|
|
verbose_name_plural = _('Document types settings')
|
|
|
|
def natural_key(self):
|
|
return self.document_type.natural_key()
|
|
natural_key.dependencies = ['documents.DocumentType']
|
|
|
|
|
|
@python_2_unicode_compatible
|
|
class DocumentPageOCRContent(models.Model):
|
|
document_page = models.OneToOneField(
|
|
on_delete=models.CASCADE, related_name='ocr_content',
|
|
to=DocumentPage, verbose_name=_('Document page')
|
|
)
|
|
content = models.TextField(
|
|
blank=True, help_text=_(
|
|
'The actual text content extracted by the OCR backend.'
|
|
), verbose_name=_('Content')
|
|
)
|
|
|
|
objects = DocumentPageOCRContentManager()
|
|
|
|
class Meta:
|
|
verbose_name = _('Document page OCR content')
|
|
verbose_name_plural = _('Document pages OCR contents')
|
|
|
|
def __str__(self):
|
|
return force_text(self.document_page)
|
|
|
|
|
|
@python_2_unicode_compatible
|
|
class DocumentVersionOCRError(models.Model):
|
|
document_version = models.ForeignKey(
|
|
on_delete=models.CASCADE, related_name='ocr_errors',
|
|
to=DocumentVersion, verbose_name=_('Document version')
|
|
)
|
|
datetime_submitted = models.DateTimeField(
|
|
auto_now_add=True, db_index=True, verbose_name=_('Date time submitted')
|
|
)
|
|
result = models.TextField(blank=True, null=True, verbose_name=_('Result'))
|
|
|
|
class Meta:
|
|
ordering = ('datetime_submitted',)
|
|
verbose_name = _('Document version OCR error')
|
|
verbose_name_plural = _('Document version OCR errors')
|
|
|
|
def __str__(self):
|
|
return force_text(self.document_version)
|