From f4e0e06c6617572ec78d91f46824960fcfd8a6f4 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Tue, 4 Dec 2018 15:21:57 -0400 Subject: [PATCH] Documents: Remove old image caching model With the creation of the new general use file Cache system the old DocumentPageCachedImage model and manager are no longer needed. This commit removed the model and the manager, and add a migration to remove any data in the model before removing it from the database. Signed-off-by: Roberto Rosario --- mayan/apps/documents/managers.py | 15 ------- .../migrations/0048_auto_20181204_1835.py | 31 +++++++++++++++ mayan/apps/documents/models.py | 39 ++----------------- 3 files changed, 34 insertions(+), 51 deletions(-) create mode 100644 mayan/apps/documents/migrations/0048_auto_20181204_1835.py diff --git a/mayan/apps/documents/managers.py b/mayan/apps/documents/managers.py index 8aacf5f4a3..beccf494a6 100644 --- a/mayan/apps/documents/managers.py +++ b/mayan/apps/documents/managers.py @@ -34,21 +34,6 @@ class DocumentManager(models.Manager): document.invalidate_cache() -class DocumentPageCachedImage(models.Manager): - def get_by_natural_key(self, filename, document_page_natural_key): - DocumentPage = apps.get_model( - app_label='documents', model_name='DocumentPage' - ) - try: - document_page = DocumentPage.objects.get_by_natural_key( - *document_page_natural_key - ) - except DocumentPage.DoesNotExist: - raise self.model.DoesNotExist - - return self.get(document_page__pk=document_page.pk, filename=filename) - - class DocumentPageManager(models.Manager): def get_by_natural_key(self, page_number, document_version_natural_key): DocumentVersion = apps.get_model( diff --git a/mayan/apps/documents/migrations/0048_auto_20181204_1835.py b/mayan/apps/documents/migrations/0048_auto_20181204_1835.py new file mode 100644 index 0000000000..b96d22ce29 --- /dev/null +++ b/mayan/apps/documents/migrations/0048_auto_20181204_1835.py @@ -0,0 +1,31 @@ +from __future__ import unicode_literals + +from django.db import migrations + + +def operation_clear_old_cache(apps, schema_editor): + DocumentPageCachedImage = apps.get_model( + 'documents', 'DocumentPageCachedImage' + ) + + for cached_image in DocumentPageCachedImage.objects.using(schema_editor.connection.alias).all(): + # Delete each cached image directly to trigger the physical deletion + # of the stored file + cached_image.delete() + + +class Migration(migrations.Migration): + dependencies = [ + ('documents', '0047_auto_20180917_0737'), + ] + + operations = [ + migrations.RunPython(code=operation_clear_old_cache), + migrations.RemoveField( + model_name='documentpagecachedimage', + name='document_page', + ), + migrations.DeleteModel( + name='DocumentPageCachedImage', + ), + ] diff --git a/mayan/apps/documents/models.py b/mayan/apps/documents/models.py index 9362ced632..74ad63c9e7 100644 --- a/mayan/apps/documents/models.py +++ b/mayan/apps/documents/models.py @@ -39,10 +39,9 @@ from .literals import ( DEFAULT_DELETE_PERIOD, DEFAULT_DELETE_TIME_UNIT, DOCUMENT_IMAGES_CACHE_NAME ) from .managers import ( - DocumentManager, DocumentPageCachedImage, DocumentPageManager, - DocumentVersionManager, DocumentTypeManager, DuplicatedDocumentManager, - FavoriteDocumentManager, PassthroughManager, RecentDocumentManager, - TrashCanManager + DocumentManager, DocumentPageManager, DocumentVersionManager, + DocumentTypeManager, DuplicatedDocumentManager, FavoriteDocumentManager, + PassthroughManager, RecentDocumentManager, TrashCanManager ) from .permissions import permission_document_view from .settings import ( @@ -972,38 +971,6 @@ class DocumentPage(models.Model): return '{}-{}'.format(self.document_version.uuid, self.pk) -class DocumentPageCachedImage(models.Model): - document_page = models.ForeignKey( - on_delete=models.CASCADE, related_name='cached_images', - to=DocumentPage, verbose_name=_('Document page') - ) - datetime = models.DateTimeField( - auto_now_add=True, db_index=True, verbose_name=_('Date time') - ) - filename = models.CharField(max_length=128, verbose_name=_('Filename')) - file_size = models.PositiveIntegerField( - db_index=True, default=0, verbose_name=_('File size') - ) - - objects = DocumentPageCachedImage() - - class Meta: - verbose_name = _('Document page cached image') - verbose_name_plural = _('Document page cached images') - - #def delete(self, *args, **kwargs): - # storage_documentimagecache.delete(self.filename) - # return super(DocumentPageCachedImage, self).delete(*args, **kwargs) - - def natural_key(self): - return (self.filename, self.document_page.natural_key()) - natural_key.dependencies = ['documents.DocumentPage'] - - #def save(self, *args, **kwargs): - # self.file_size = storage_documentimagecache.size(self.filename) - # return super(DocumentPageCachedImage, self).save(*args, **kwargs) - - class DocumentPageResult(DocumentPage): class Meta: ordering = ('document_version__document', 'page_number')