Move new version creation blocking from the documents app to the checkouts app.
Closes GitLab #294.
This commit is contained in:
@@ -6,10 +6,3 @@ class DocumentException(Exception):
|
||||
Base documents warning
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
class NewDocumentVersionNotAllowed(DocumentException):
|
||||
"""
|
||||
Uploading new versions for this document is not allowed
|
||||
"""
|
||||
pass
|
||||
|
||||
@@ -98,17 +98,6 @@ class DocumentTypeManager(models.Manager):
|
||||
return self.get(label=label)
|
||||
|
||||
|
||||
class NewVersionBlockManager(models.Manager):
|
||||
def block(self, document):
|
||||
self.get_or_create(document=document)
|
||||
|
||||
def unblock(self, document):
|
||||
self.filter(document=document).delete()
|
||||
|
||||
def is_blocked(self, document):
|
||||
return self.filter(document=document).exists()
|
||||
|
||||
|
||||
class PassthroughManager(models.Manager):
|
||||
pass
|
||||
|
||||
|
||||
22
mayan/apps/documents/migrations/0036_auto_20161222_0534.py
Normal file
22
mayan/apps/documents/migrations/0036_auto_20161222_0534.py
Normal file
@@ -0,0 +1,22 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.11 on 2016-12-22 05:34
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('documents', '0035_auto_20161102_0633'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='newversionblock',
|
||||
name='document',
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='NewVersionBlock',
|
||||
),
|
||||
]
|
||||
@@ -28,11 +28,10 @@ from .events import (
|
||||
event_document_properties_edit, event_document_type_change,
|
||||
event_document_version_revert
|
||||
)
|
||||
from .exceptions import NewDocumentVersionNotAllowed
|
||||
from .literals import DEFAULT_DELETE_PERIOD, DEFAULT_DELETE_TIME_UNIT
|
||||
from .managers import (
|
||||
DocumentManager, DocumentTypeManager, NewVersionBlockManager,
|
||||
PassthroughManager, RecentDocumentManager, TrashCanManager
|
||||
DocumentManager, DocumentTypeManager, PassthroughManager,
|
||||
RecentDocumentManager, TrashCanManager
|
||||
)
|
||||
from .permissions import permission_document_view
|
||||
from .runtime import cache_storage_backend, storage_backend
|
||||
@@ -390,8 +389,6 @@ class DocumentVersion(models.Model):
|
||||
|
||||
if new_document_version:
|
||||
logger.info('Creating new version for document: %s', self.document)
|
||||
if NewVersionBlock.objects.is_blocked(self.document):
|
||||
raise NewDocumentVersionNotAllowed
|
||||
|
||||
try:
|
||||
with transaction.atomic():
|
||||
@@ -821,16 +818,6 @@ class DocumentPageResult(DocumentPage):
|
||||
verbose_name_plural = _('Document pages')
|
||||
|
||||
|
||||
class NewVersionBlock(models.Model):
|
||||
document = models.ForeignKey(Document, verbose_name=_('Document'))
|
||||
|
||||
objects = NewVersionBlockManager()
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('New version block')
|
||||
verbose_name_plural = _('New version blocks')
|
||||
|
||||
|
||||
@python_2_unicode_compatible
|
||||
class RecentDocument(models.Model):
|
||||
"""
|
||||
|
||||
@@ -6,9 +6,8 @@ import time
|
||||
from common.tests import BaseTestCase
|
||||
from django.test import override_settings
|
||||
|
||||
from ..exceptions import NewDocumentVersionNotAllowed
|
||||
from ..literals import STUB_EXPIRATION_INTERVAL
|
||||
from ..models import DeletedDocument, Document, DocumentType, NewVersionBlock
|
||||
from ..models import DeletedDocument, Document, DocumentType
|
||||
|
||||
from .literals import (
|
||||
TEST_DOCUMENT_TYPE, TEST_DOCUMENT_PATH, TEST_MULTI_PAGE_TIFF_PATH,
|
||||
@@ -275,58 +274,3 @@ class DocumentManagerTestCase(BaseTestCase):
|
||||
Document.objects.delete_stubs()
|
||||
|
||||
self.assertEqual(Document.objects.count(), 0)
|
||||
|
||||
|
||||
@override_settings(OCR_AUTO_OCR=False)
|
||||
class NewVersionBlockTestCase(BaseTestCase):
|
||||
def setUp(self):
|
||||
super(NewVersionBlockTestCase, self).setUp()
|
||||
|
||||
self.document_type = DocumentType.objects.create(
|
||||
label=TEST_DOCUMENT_TYPE
|
||||
)
|
||||
|
||||
with open(TEST_SMALL_DOCUMENT_PATH) as file_object:
|
||||
self.document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
|
||||
def tearDown(self):
|
||||
self.document.delete()
|
||||
self.document_type.delete()
|
||||
super(NewVersionBlockTestCase, self).tearDown()
|
||||
|
||||
def test_blocking(self):
|
||||
NewVersionBlock.objects.block(document=self.document)
|
||||
|
||||
self.assertEqual(NewVersionBlock.objects.count(), 1)
|
||||
self.assertEqual(
|
||||
NewVersionBlock.objects.first().document, self.document
|
||||
)
|
||||
|
||||
def test_unblocking(self):
|
||||
NewVersionBlock.objects.create(document=self.document)
|
||||
|
||||
NewVersionBlock.objects.unblock(document=self.document)
|
||||
|
||||
self.assertEqual(NewVersionBlock.objects.count(), 0)
|
||||
|
||||
def test_is_blocked(self):
|
||||
NewVersionBlock.objects.create(document=self.document)
|
||||
|
||||
self.assertTrue(
|
||||
NewVersionBlock.objects.is_blocked(document=self.document)
|
||||
)
|
||||
|
||||
NewVersionBlock.objects.all().delete()
|
||||
|
||||
self.assertFalse(
|
||||
NewVersionBlock.objects.is_blocked(document=self.document)
|
||||
)
|
||||
|
||||
def test_blocking_new_versions(self):
|
||||
NewVersionBlock.objects.block(document=self.document)
|
||||
|
||||
with self.assertRaises(NewDocumentVersionNotAllowed):
|
||||
with open(TEST_SMALL_DOCUMENT_PATH) as file_object:
|
||||
self.document.new_version(file_object=file_object)
|
||||
|
||||
Reference in New Issue
Block a user