Improve serialization migration for the models: Document, DocumentVersion, DocumentMetadata and DocumentTypeOCRSettings

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2018-08-01 05:09:43 -04:00
parent 39a94f8b4f
commit c665e75871
6 changed files with 62 additions and 5 deletions
+14 -1
View File
@@ -20,7 +20,7 @@ class DocumentManager(models.Manager):
stale_stub_document.delete(trash=False)
def get_by_natural_key(self, uuid):
return self.get(uuid=uuid)
return self.model.passthrough.get(uuid=uuid)
def get_queryset(self):
return TrashCanQuerySet(
@@ -32,6 +32,19 @@ class DocumentManager(models.Manager):
document.invalidate_cache()
class DocumentVersionManager(models.Manager):
def get_by_natural_key(self, checksum, document_natural_key):
Document = apps.get_model(
app_label='documents', model_name='Document'
)
try:
document = Document.objects.get_by_natural_key(document_natural_key)
except Document.DoesNotExist:
raise self.model.DoesNotExist
return document.versions.get(checksum=checksum)
class DocumentTypeManager(models.Manager):
def check_delete_periods(self):
logger.info('Executing')
+9 -2
View File
@@ -33,8 +33,9 @@ from .events import (
)
from .literals import DEFAULT_DELETE_PERIOD, DEFAULT_DELETE_TIME_UNIT
from .managers import (
DocumentManager, DocumentTypeManager, DuplicatedDocumentManager,
PassthroughManager, RecentDocumentManager, TrashCanManager
DocumentManager, DocumentVersionManager, DocumentTypeManager,
DuplicatedDocumentManager, PassthroughManager, RecentDocumentManager,
TrashCanManager
)
from .permissions import permission_document_view
from .settings import (
@@ -415,6 +416,8 @@ class DocumentVersion(models.Model):
verbose_name = _('Document version')
verbose_name_plural = _('Document version')
objects = DocumentVersionManager()
def __str__(self):
return self.get_rendered_string()
@@ -505,6 +508,10 @@ class DocumentVersion(models.Model):
context=Context({'instance': self})
)
def natural_key(self):
return (self.checksum,) + self.document.natural_key()
natural_key.dependencies = ['documents.Document']
def invalidate_cache(self):
storage_documentimagecache.delete(self.cache_filename)
for page in self.pages.all():