From 69f2a357f8f7a5d7caa308f57583e8e096b5d842 Mon Sep 17 00:00:00 2001 From: Chris Jones Date: Thu, 18 Jul 2013 17:23:48 -0700 Subject: [PATCH] Why don't you PEP your 8! Add in change messages. --- djadmin2/viewmixins.py | 34 ++++++++++++++++++++++++++++++++++ djadmin2/views.py | 15 ++++++++++++--- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/djadmin2/viewmixins.py b/djadmin2/viewmixins.py index d3af797..ecc26a7 100644 --- a/djadmin2/viewmixins.py +++ b/djadmin2/viewmixins.py @@ -8,6 +8,10 @@ from django.core.exceptions import PermissionDenied from django.core.urlresolvers import reverse, reverse_lazy from django.forms.models import modelform_factory from django.http import HttpResponseRedirect +from django.utils.encoding import force_text +from django.utils.text import get_text_list +from django.utils.translation import ugettext as _ + from braces.views import AccessMixin from . import settings, permissions @@ -142,3 +146,33 @@ class Admin2ModelFormMixin(object): # default to index view return reverse(admin2_urlname(self, 'index')) + + def construct_change_message(self, request, form, formsets): + """ Construct a change message from a changed object """ + change_message = [] + if form.changed_data: + change_message.append( + _('Changed {0}.'.format( + get_text_list(form.changed_data, _('and'))))) + + if formsets: + for formset in formsets: + for added_object in formset.new_objects: + change_message.append( + _('Added {0} "{1}".'.format( + force_text(added_object._meta.verbose_name), + force_text(added_object)))) + for changed_object, changed_fields in formset.changed_objects: + change_message.append( + _('Changed {0} for {1} "{2}".'.format( + get_text_list(changed_fields, _('and')), + force_text(changed_object._meta.verbose_name), + force_text(changed_object)))) + for deleted_object in formset.deleted_objects: + change_message.append( + _('Deleted {0} "{1}".'.format( + force_text(deleted_object._meta.verbose_name), + force_text(deleted_object)))) + + change_message = ' '.join(change_message) + return change_message or _('No fields changed.') diff --git a/djadmin2/views.py b/djadmin2/views.py index 3a1bfe4..4a73937 100644 --- a/djadmin2/views.py +++ b/djadmin2/views.py @@ -237,7 +237,10 @@ class ModelEditFormView(AdminModel2Mixin, Admin2ModelFormMixin, def forms_valid(self, form, inlines): response = super(ModelEditFormView, self).forms_valid(form, inlines) LogEntry.objects.log_action( - self.request.user.id, self.object, LogEntry.CHANGE) + self.request.user.id, + self.object, + LogEntry.CHANGE, + self.construct_change_message(self.request, form, inlines)) return response @@ -265,7 +268,10 @@ class ModelAddFormView(AdminModel2Mixin, Admin2ModelFormMixin, def forms_valid(self, form, inlines): response = super(ModelAddFormView, self).forms_valid(form, inlines) LogEntry.objects.log_action( - self.request.user.id, self.object, LogEntry.ADDITION) + self.request.user.id, + self.object, + LogEntry.ADDITION, + 'Object created.') return response @@ -300,7 +306,10 @@ class ModelDeleteView(AdminModel2Mixin, generic.DeleteView): def delete(self, request, *args, **kwargs): LogEntry.objects.log_action( - request.user.id, self.get_object(), LogEntry.DELETION) + request.user.id, + self.get_object(), + LogEntry.DELETION, + 'Object deleted.') return super(ModelDeleteView, self).delete(request, *args, **kwargs)