Add events for adding and removing documents to cabinets.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -37,6 +37,7 @@ class CabinetsApp(MayanAppConfig):
|
||||
|
||||
def ready(self):
|
||||
super(CabinetsApp, self).ready()
|
||||
from actstream import registry
|
||||
|
||||
Document = apps.get_model(
|
||||
app_label='documents', model_name='Document'
|
||||
@@ -126,3 +127,5 @@ class CabinetsApp(MayanAppConfig):
|
||||
'cabinets:document_cabinet_remove'
|
||||
)
|
||||
)
|
||||
|
||||
registry.register(Cabinet)
|
||||
|
||||
14
mayan/apps/cabinets/events.py
Normal file
14
mayan/apps/cabinets/events.py
Normal file
@@ -0,0 +1,14 @@
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from events.classes import Event
|
||||
|
||||
event_cabinets_add_document = Event(
|
||||
name='cabinets_add_document',
|
||||
label=_('Document added to cabinet')
|
||||
)
|
||||
event_cabinets_remove_document = Event(
|
||||
name='cabinets_remove_document',
|
||||
label=_('Document removed from cabinet')
|
||||
)
|
||||
@@ -13,6 +13,7 @@ from acls.models import AccessControlList
|
||||
from documents.models import Document
|
||||
from documents.permissions import permission_document_view
|
||||
|
||||
from .events import event_cabinets_add_document, event_cabinets_remove_document
|
||||
from .search import cabinet_search # NOQA
|
||||
|
||||
|
||||
@@ -39,6 +40,12 @@ class Cabinet(MPTTModel):
|
||||
def __str__(self):
|
||||
return self.get_full_path()
|
||||
|
||||
def add_document(self, document, user=None):
|
||||
self.documents.add(document)
|
||||
event_cabinets_add_document.commit(
|
||||
action_object=self, actor=user, target=document
|
||||
)
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('cabinets:cabinet_view', args=(self.pk,))
|
||||
|
||||
@@ -57,6 +64,12 @@ class Cabinet(MPTTModel):
|
||||
|
||||
return ' / '.join(result)
|
||||
|
||||
def remove_document(self, document, user=None):
|
||||
self.documents.remove(document)
|
||||
event_cabinets_remove_document.commit(
|
||||
action_object=self, actor=user, target=document
|
||||
)
|
||||
|
||||
def validate_unique(self, exclude=None):
|
||||
# Explicit validation of uniqueness of parent+label as the provided
|
||||
# unique_together check in Meta is not working for all 100% cases
|
||||
|
||||
42
mayan/apps/cabinets/tests/test_events.py
Normal file
42
mayan/apps/cabinets/tests/test_events.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from actstream.models import Action
|
||||
|
||||
from documents.tests.test_models import GenericDocumentTestCase
|
||||
|
||||
from ..events import (
|
||||
event_cabinets_add_document, event_cabinets_remove_document
|
||||
)
|
||||
from ..models import Cabinet
|
||||
|
||||
from .literals import TEST_CABINET_LABEL
|
||||
|
||||
|
||||
class CabinetsEventsTestCase(GenericDocumentTestCase):
|
||||
def setUp(self):
|
||||
super(CabinetsEventsTestCase, self).setUp()
|
||||
self._create_cabinet()
|
||||
|
||||
def _create_cabinet(self):
|
||||
self.cabinet = Cabinet.objects.create(label=TEST_CABINET_LABEL)
|
||||
|
||||
def test_document_cabinet_add_event(self):
|
||||
Action.objects.all().delete()
|
||||
self.cabinet.add_document(document=self.document)
|
||||
|
||||
self.assertEqual(Action.objects.last().target, self.document)
|
||||
self.assertEqual(
|
||||
Action.objects.last().verb,
|
||||
event_cabinets_add_document.name
|
||||
)
|
||||
|
||||
def test_document_cabinet_remove_event(self):
|
||||
self.cabinet.add_document(document=self.document)
|
||||
Action.objects.all().delete()
|
||||
self.cabinet.remove_document(document=self.document)
|
||||
|
||||
self.assertEqual(Action.objects.first().target, self.document)
|
||||
self.assertEqual(
|
||||
Action.objects.first().verb,
|
||||
event_cabinets_remove_document.name
|
||||
)
|
||||
@@ -25,7 +25,6 @@ from .permissions import (
|
||||
)
|
||||
from .widgets import jstree_data
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@@ -257,7 +256,9 @@ class DocumentAddToCabinetView(MultipleObjectFormActionView):
|
||||
}
|
||||
)
|
||||
else:
|
||||
cabinet.documents.add(instance)
|
||||
cabinet.add_document(
|
||||
document=instance, user=self.request.user
|
||||
)
|
||||
messages.success(
|
||||
self.request, _(
|
||||
'Document: %(document)s added to cabinet: '
|
||||
@@ -343,7 +344,9 @@ class DocumentRemoveFromCabinetView(MultipleObjectFormActionView):
|
||||
}
|
||||
)
|
||||
else:
|
||||
cabinet.documents.remove(instance)
|
||||
cabinet.remove_document(
|
||||
document=instance, user=self.request.user
|
||||
)
|
||||
messages.success(
|
||||
self.request, _(
|
||||
'Document: %(document)s removed from cabinet: '
|
||||
|
||||
Reference in New Issue
Block a user