Update apps for new class based history events

This commit is contained in:
Roberto Rosario
2012-07-06 02:53:38 -04:00
parent f42d681f85
commit 615987366f
8 changed files with 50 additions and 77 deletions

View File

@@ -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)

View File

@@ -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'}
)

View File

@@ -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()

View File

@@ -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

View File

@@ -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']}

View File

@@ -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'}
)

View File

@@ -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)

View File

@@ -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