Added edit source object attribute difference detection and logging to history app

This commit is contained in:
Roberto Rosario
2011-05-28 23:52:54 -04:00
parent 73f39494aa
commit 9ce75e4671
7 changed files with 29 additions and 25 deletions
+2 -1
View File
@@ -19,7 +19,7 @@ from documents.literals import PERMISSION_DOCUMENT_CREATE, \
PERMISSION_DOCUMENT_TRANSFORM, PERMISSION_DOCUMENT_TOOLS, \
PERMISSION_DOCUMENT_EDIT
from documents.literals import HISTORY_DOCUMENT_CREATED, \
HISTORY_DOCUMENT_EDITED
HISTORY_DOCUMENT_EDITED, HISTORY_DOCUMENT_DELETED
# Permission setup
set_namespace_title('documents', _(u'documents'))
@@ -35,6 +35,7 @@ register_permission(PERMISSION_DOCUMENT_TOOLS)
# History setup
register_history_type(HISTORY_DOCUMENT_CREATED)
register_history_type(HISTORY_DOCUMENT_EDITED)
register_history_type(HISTORY_DOCUMENT_DELETED)
document_list = {'text': _(u'documents list'), 'view': 'document_list', 'famfam': 'page', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
document_list_recent = {'text': _(u'recent documents list'), 'view': 'document_list_recent', 'famfam': 'page', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
+14 -3
View File
@@ -23,13 +23,24 @@ HISTORY_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'}]
'expressions': {'fullname': 'user.get_full_name() if user.get_full_name() else user.username'}
}
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" edited on %(datetime)s by %(fullname)s.'),
'expressions': [{'fullname': 'user.get_full_name() if user.get_full_name() else user.username'}]
'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'}
}
+3 -6
View File
@@ -60,7 +60,7 @@ from documents.literals import PERMISSION_DOCUMENT_CREATE, \
PERMISSION_DOCUMENT_TRANSFORM, \
PERMISSION_DOCUMENT_EDIT
from documents.literals import HISTORY_DOCUMENT_CREATED, \
HISTORY_DOCUMENT_EDITED
HISTORY_DOCUMENT_EDITED, HISTORY_DOCUMENT_DELETED
from documents.forms import DocumentTypeSelectForm, \
DocumentForm, DocumentForm_edit, DocumentPropertiesForm, \
@@ -275,7 +275,6 @@ def upload_document_with_type(request, source):
def document_view_simple(request, document_id):
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
#document = get_object_or_404(Document.objects.select_related(), pk=document_id)
# Triggers a 404 error on documents uploaded via local upload
# TODO: investigate
@@ -462,6 +461,7 @@ def document_delete(request, document_id=None, document_id_list=None):
messages.warning(request, warning)
document.delete()
#create_history(HISTORY_DOCUMENT_DELETED, data={'user': request.user, 'document': document})
messages.success(request, _(u'Document: %s deleted successfully.') % document)
except Exception, e:
messages.error(request, _(u'Document: %(document)s delete error: %(error)s') % {
@@ -515,10 +515,7 @@ def document_edit(request, document_id):
document.file_filename = form.cleaned_data['document_type_available_filenames'].filename
document.save()
#print 'diff', return_diff(old_document, document)
create_history(HISTORY_DOCUMENT_EDITED, document, {'user': request.user})
create_history(HISTORY_DOCUMENT_EDITED, document, {'user': request.user, 'diff': return_diff(old_document, document, ['file_filename', 'description'])})
RecentDocument.objects.add_document_for_user(request.user, document)
messages.success(request, _(u'Document "%s" edited successfully.') % document)