From 615987366f1634f78d24db0fe946d13808a6756a Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Fri, 6 Jul 2012 02:53:38 -0400 Subject: [PATCH] Update apps for new class based history events --- apps/checkouts/__init__.py | 7 ------- apps/checkouts/events.py | 42 +++++++++++++++++--------------------- apps/checkouts/managers.py | 12 +++++------ apps/checkouts/models.py | 5 ++--- apps/documents/__init__.py | 8 -------- apps/documents/events.py | 40 +++++++++++++++++------------------- apps/documents/views.py | 6 ++---- apps/sources/models.py | 7 +++---- 8 files changed, 50 insertions(+), 77 deletions(-) diff --git a/apps/checkouts/__init__.py b/apps/checkouts/__init__.py index f0c247a8e9..a58228d7d4 100644 --- a/apps/checkouts/__init__.py +++ b/apps/checkouts/__init__.py @@ -9,7 +9,6 @@ from scheduler.api import register_interval_job from documents.models import Document from documents.permissions import PERMISSION_DOCUMENT_VIEW from acls.api import class_permissions -from history.api import register_history_type from .permissions import (PERMISSION_DOCUMENT_CHECKOUT, PERMISSION_DOCUMENT_CHECKIN, PERMISSION_DOCUMENT_CHECKIN_OVERRIDE, @@ -17,8 +16,6 @@ from .permissions import (PERMISSION_DOCUMENT_CHECKOUT, from .links import checkout_list, checkout_document, checkout_info, checkin_document from .models import DocumentCheckout from .tasks import task_check_expired_check_outs -from .events import (HISTORY_DOCUMENT_CHECKED_OUT, HISTORY_DOCUMENT_CHECKED_IN, - HISTORY_DOCUMENT_AUTO_CHECKED_IN, HISTORY_DOCUMENT_FORCEFUL_CHECK_IN) def initialize_document_checkout_extra_methods(): @@ -42,7 +39,3 @@ class_permissions(Document, [ CHECK_EXPIRED_CHECK_OUTS_INTERVAL=60 # Lowest check out expiration allowed register_interval_job('task_check_expired_check_outs', _(u'Check expired check out documents and checks them in.'), task_check_expired_check_outs, seconds=CHECK_EXPIRED_CHECK_OUTS_INTERVAL) initialize_document_checkout_extra_methods() -register_history_type(HISTORY_DOCUMENT_CHECKED_OUT) -register_history_type(HISTORY_DOCUMENT_CHECKED_IN) -register_history_type(HISTORY_DOCUMENT_AUTO_CHECKED_IN) -register_history_type(HISTORY_DOCUMENT_FORCEFUL_CHECK_IN) diff --git a/apps/checkouts/events.py b/apps/checkouts/events.py index a35503a819..00c6e9252b 100644 --- a/apps/checkouts/events.py +++ b/apps/checkouts/events.py @@ -1,28 +1,24 @@ from django.utils.translation import ugettext_lazy as _ -HISTORY_DOCUMENT_CHECKED_OUT = { - 'namespace': 'checkouts', 'name': 'document_checked_out', - 'label': _(u'Document checked out'), - 'summary': _(u'Document "%(document)s" checked out by %(fullname)s.'), - 'expressions': {'fullname': 'user.get_full_name() if user.get_full_name() else user'} -} +from history.api import EventNamespace, Event -HISTORY_DOCUMENT_CHECKED_IN = { - 'namespace': 'checkouts', 'name': 'document_checked_in', - 'label': _(u'Document checked in'), - 'summary': _(u'Document "%(document)s" checked in by %(fullname)s.'), - 'expressions': {'fullname': 'user.get_full_name() if user.get_full_name() else user'} -} +namespace = EventNamespace('checkouts', _(u'checkouts')) -HISTORY_DOCUMENT_AUTO_CHECKED_IN = { - 'namespace': 'checkouts', 'name': 'document_auto_checked_in', - 'label': _(u'Document automatically checked in'), - 'summary': _(u'Document "%(document)s" automatically checked in.'), -} +history_document_checked_out = Event(namespace=namespace, name='document_checked_out', label=_(u'Document checked out'), + summary=_(u'Document "%(document)s" checked out by %(fullname)s.'), + expressions={'fullname': 'user.get_full_name() if user.get_full_name() else user'} +) -HISTORY_DOCUMENT_FORCEFUL_CHECK_IN = { - 'namespace': 'checkouts', 'name': 'document_forefull_check_in', - 'label': _(u'Document forcefully checked in'), - 'summary': _(u'Document "%(document)s" forcefully checked in by %(fullname)s.'), - 'expressions': {'fullname': 'user.get_full_name() if user.get_full_name() else user'} -} +history_document_checked_in = Event(namespace=namespace, name='document_checked_in', label=_(u'Document checked in'), + summary=_(u'Document "%(document)s" checked in by %(fullname)s.'), + expressions={'fullname': 'user.get_full_name() if user.get_full_name() else user'} +) + +history_document_auto_checked_in = Event(namespace=namespace, name='document_auto_checked_in', label=_(u'Document automatically checked in'), + summary=_(u'Document "%(document)s" automatically checked in.'), +) + +history_document_forceful_check_in = Event(namespace=namespace, name='document_forefull_check_in', label=_(u'Document forcefully checked in'), + summary=_(u'Document "%(document)s" forcefully checked in by %(fullname)s.'), + expressions={'fullname': 'user.get_full_name() if user.get_full_name() else user'} +) diff --git a/apps/checkouts/managers.py b/apps/checkouts/managers.py index b4c241bd3e..7a8f5c9cd1 100644 --- a/apps/checkouts/managers.py +++ b/apps/checkouts/managers.py @@ -7,17 +7,15 @@ from django.db import models from django.core.exceptions import PermissionDenied from documents.models import Document -from history.api import create_history from permissions.models import Permission from acls.models import AccessEntry from .exceptions import DocumentNotCheckedOut from .literals import STATE_CHECKED_OUT, STATE_CHECKED_IN -from .events import (HISTORY_DOCUMENT_CHECKED_IN, HISTORY_DOCUMENT_AUTO_CHECKED_IN, - HISTORY_DOCUMENT_FORCEFUL_CHECK_IN) +from .events import (history_document_checked_in, history_document_auto_checked_in, + history_document_forceful_check_in) from .permissions import PERMISSION_DOCUMENT_RESTRICTIONS_OVERRIDE -from history.api import create_history logger = logging.getLogger(__name__) @@ -48,11 +46,11 @@ class DocumentCheckoutManager(models.Manager): else: if user: if self.document_checkout_info(document).user_object != user: - create_history(HISTORY_DOCUMENT_FORCEFUL_CHECK_IN, source_object=document, data={'user': user, 'document': document}) + history_document_forceful_check_in.commit(source_object=document, data={'user': user, 'document': document}) else: - create_history(HISTORY_DOCUMENT_CHECKED_IN, source_object=document, data={'user': user, 'document': document}) + history_document_checked_in.commit(source_object=document, data={'user': user, 'document': document}) else: - create_history(HISTORY_DOCUMENT_AUTO_CHECKED_IN, source_object=document, data={'document': document}) + history_document_auto_checked_in.commit(source_object=document, data={'document': document}) document_checkout.delete() diff --git a/apps/checkouts/models.py b/apps/checkouts/models.py index 819b8856c3..dc9b208186 100644 --- a/apps/checkouts/models.py +++ b/apps/checkouts/models.py @@ -9,11 +9,10 @@ from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes import generic from documents.models import Document -from history.api import create_history from .managers import DocumentCheckoutManager from .exceptions import DocumentAlreadyCheckedOut -from .events import HISTORY_DOCUMENT_CHECKED_OUT +from .events import history_document_checked_out logger = logging.getLogger(__name__) @@ -44,7 +43,7 @@ class DocumentCheckout(models.Model): if not self.pk: self.checkout_datetime = datetime.datetime.now() result = super(DocumentCheckout, self).save(*args, **kwargs) - create_history(HISTORY_DOCUMENT_CHECKED_OUT, source_object=self.document, data={'user': self.user_object, 'document': self.document}) + history_document_checked_out.commit(source_object=self.document, data={'user': self.user_object, 'document': self.document}) return result @models.permalink diff --git a/apps/documents/__init__.py b/apps/documents/__init__.py index c78b0431fb..04f6faece8 100644 --- a/apps/documents/__init__.py +++ b/apps/documents/__init__.py @@ -9,7 +9,6 @@ from navigation.api import (register_links, register_top_menu, register_model_list_columns, register_multi_item_links, register_sidebar_template) from main.api import register_diagnostic, register_maintenance_links -from history.api import register_history_type from history.permissions import PERMISSION_HISTORY_VIEW from metadata.api import get_metadata_string from project_setup.api import register_setup @@ -26,8 +25,6 @@ from .permissions import (PERMISSION_DOCUMENT_CREATE, PERMISSION_DOCUMENT_TYPE_EDIT, PERMISSION_DOCUMENT_TYPE_DELETE, PERMISSION_DOCUMENT_TYPE_CREATE, PERMISSION_DOCUMENT_TYPE_VIEW, PERMISSION_DOCUMENT_NEW_VERSION) -from .events import (HISTORY_DOCUMENT_CREATED, - HISTORY_DOCUMENT_EDITED, HISTORY_DOCUMENT_DELETED) from .conf.settings import ZOOM_MAX_LEVEL from .conf.settings import ZOOM_MIN_LEVEL from .conf import settings as document_settings @@ -55,11 +52,6 @@ def is_max_zoom(context): def is_current_version(context): return context['object'].document.latest_version.timestamp == context['object'].timestamp -# History setup -register_history_type(HISTORY_DOCUMENT_CREATED) -register_history_type(HISTORY_DOCUMENT_EDITED) -register_history_type(HISTORY_DOCUMENT_DELETED) - document_list = {'text': _(u'all documents'), 'view': 'document_list', 'famfam': 'page'} document_list_recent = {'text': _(u'recent documents'), 'view': 'document_list_recent', 'famfam': 'page'} document_create_multiple = {'text': _(u'upload new documents'), 'view': 'document_create_multiple', 'famfam': 'page_add', 'permissions': [PERMISSION_DOCUMENT_CREATE], 'children_view_regex': [r'upload_interactive']} diff --git a/apps/documents/events.py b/apps/documents/events.py index 10bc8a11b8..0543e6e5bf 100644 --- a/apps/documents/events.py +++ b/apps/documents/events.py @@ -1,28 +1,26 @@ from django.utils.translation import ugettext_lazy as _ -HISTORY_DOCUMENT_CREATED = { - 'namespace': 'documents', 'name': 'document_created', - 'label': _(u'Document creation'), - 'summary': _(u'Document "%(content_object)s" created by %(fullname)s.'), - 'details': _(u'Document "%(content_object)s" created on %(datetime)s by %(fullname)s.'), - 'expressions': {'fullname': 'user.get_full_name() if user.get_full_name() else user.username'} -} +from history.api import EventNamespace, Event -HISTORY_DOCUMENT_EDITED = { - 'namespace': 'documents', 'name': 'document_edited', - 'label': _(u'Document edited'), - 'summary': _(u'Document "%(content_object)s" edited by %(fullname)s.'), - 'details': _(u'Document "%(content_object)s" was edited on %(datetime)s by %(fullname)s. The following changes took place: %(changes)s.'), - 'expressions': { +namespace = EventNamespace('documents', _('documents')) + +history_document_created = Event(namespace=namespace, name='document_created', label=_(u'Document creation'), + summary=_(u'Document "%(content_object)s" created by %(fullname)s.'), + details=_(u'Document "%(content_object)s" created on %(datetime)s by %(fullname)s.'), + expressions={'fullname': 'user.get_full_name() if user.get_full_name() else user.username'} +) + +history_document_edited = Event(namespace=namespace, name='document_edited', label=_(u'Document edited'), + summary=_(u'Document "%(content_object)s" edited by %(fullname)s.'), + details=_(u'Document "%(content_object)s" was edited on %(datetime)s by %(fullname)s. The following changes took place: %(changes)s.'), + expressions={ 'fullname': 'user.get_full_name() if user.get_full_name() else user.username', 'changes': 'u\', \'.join([\'"%s": "%s" -> "%s"\' % (key, value[\'old_value\'], value[\'new_value\']) for key, value in diff.items()])' } -} +) -HISTORY_DOCUMENT_DELETED = { - 'namespace': 'documents', 'name': 'document_deleted', - 'label': _(u'Document deleted'), - 'summary': _(u'Document "%(document)s" deleted by %(fullname)s.'), - 'details': _(u'Document "%(document)s" deleted on %(datetime)s by %(fullname)s.'), - 'expressions': {'fullname': 'user.get_full_name() if user.get_full_name() else user.username'} -} +history_document_deleted = HISTORY_DOCUMENT_DELETED = Event(namespace=namespace, name='document_deleted', label=_(u'Document deleted'), + summary=_(u'Document "%(document)s" deleted by %(fullname)s.'), + details=_(u'Document "%(document)s" deleted on %(datetime)s by %(fullname)s.'), + expressions={'fullname': 'user.get_full_name() if user.get_full_name() else user.username'} +) diff --git a/apps/documents/views.py b/apps/documents/views.py index 3b19744f4e..1d67683251 100644 --- a/apps/documents/views.py +++ b/apps/documents/views.py @@ -30,7 +30,6 @@ from metadata.forms import MetadataFormSet, MetadataSelectionForm from navigation.utils import resolve_to_name from permissions.models import Permission from document_indexing.api import update_indexes, delete_indexes -from history.api import create_history from acls.models import AccessEntry from common.compressed_files import CompressedFile @@ -44,8 +43,7 @@ from .permissions import (PERMISSION_DOCUMENT_CREATE, PERMISSION_DOCUMENT_EDIT, PERMISSION_DOCUMENT_VERSION_REVERT, PERMISSION_DOCUMENT_TYPE_EDIT, PERMISSION_DOCUMENT_TYPE_DELETE, PERMISSION_DOCUMENT_TYPE_CREATE, PERMISSION_DOCUMENT_TYPE_VIEW) -from .events import (HISTORY_DOCUMENT_CREATED, - HISTORY_DOCUMENT_EDITED, HISTORY_DOCUMENT_DELETED) +from .events import history_document_edited from .forms import (DocumentTypeSelectForm, DocumentForm_edit, DocumentPropertiesForm, DocumentPreviewForm, DocumentPageForm, @@ -270,7 +268,7 @@ def document_edit(request, document_id): document.filename = form.cleaned_data['document_type_available_filenames'].filename document.save() - create_history(HISTORY_DOCUMENT_EDITED, document, {'user': request.user, 'diff': return_diff(old_document, document, ['filename', 'description'])}) + history_document_edited.commit(source_object=document, data={'user': request.user, 'diff': return_diff(old_document, document, ['filename', 'description'])}) RecentDocument.objects.add_document_for_user(request.user, document) messages.success(request, _(u'Document "%s" edited successfully.') % document) diff --git a/apps/sources/models.py b/apps/sources/models.py index 9156b30b71..c330bf7aac 100644 --- a/apps/sources/models.py +++ b/apps/sources/models.py @@ -13,9 +13,8 @@ from django.db import transaction from converter.api import get_available_transformations_choices from converter.literals import DIMENSION_SEPARATOR from documents.models import DocumentType, Document -from documents.events import HISTORY_DOCUMENT_CREATED +from documents.events import history_document_created from document_indexing.api import update_indexes -from history.api import create_history from metadata.models import MetadataType from metadata.api import save_metadata_list from scheduler.api import register_interval_job, remove_job @@ -101,9 +100,9 @@ class BaseModel(models.Model): if user: document.add_as_recent_document_for_user(user) - create_history(HISTORY_DOCUMENT_CREATED, document, {'user': user}) + history_document_created.commit(source_object=document, data={'user': user}) else: - create_history(HISTORY_DOCUMENT_CREATED, document) + history_document_created.commit(source_object=document) else: if use_file_name: filename = None