From 551d1011b32631f430ea4abd3817aadae17635da Mon Sep 17 00:00:00 2001 From: Kasper Brandt Date: Wed, 1 Apr 2015 17:17:00 +0200 Subject: [PATCH] [#1079] Add admin log entry when approving an employment in MyRSR --- akvo/rest/views/employment.py | 2 +- akvo/rsr/models/employment.py | 22 ++++++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/akvo/rest/views/employment.py b/akvo/rest/views/employment.py index 5765740435..bde59676de 100644 --- a/akvo/rest/views/employment.py +++ b/akvo/rest/views/employment.py @@ -33,7 +33,7 @@ def approve_employment(request, pk=None): if not user.has_perm('rsr.change_employment', employment): raise PermissionDenied - employment.approve() + employment.approve(user) return Response({'status': 'employment approved'}) diff --git a/akvo/rsr/models/employment.py b/akvo/rsr/models/employment.py index 34058f800f..023b3783d8 100644 --- a/akvo/rsr/models/employment.py +++ b/akvo/rsr/models/employment.py @@ -4,14 +4,17 @@ # See more details in the license.txt file located at the root folder of the Akvo RSR module. # For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >. - +from django.contrib.admin.models import LogEntry, CHANGE from django.contrib.auth import get_user_model from django.contrib.auth.models import Group +from django.contrib.contenttypes.models import ContentType from django.db import models from django.db.models.query import QuerySet from django.forms.models import model_to_dict +from django.utils.encoding import force_unicode from django.utils.translation import ugettext_lazy as _ + from .models_utils import QuerySetManager from ..fields import ValidXMLCharField @@ -59,11 +62,26 @@ class Meta: def __unicode__(self): return u"{0} {1}: {2}".format(self.user.first_name, self.user.last_name, self.organisation.name) - def approve(self): + def approve(self, approved_by): + """ + Approve an Employment. Will also be logged in the Employment admin history. + + :param approved_by: User that approves the Employment + """ if not self.is_approved: self.is_approved = True self.save() + # Log in Employment admin history + LogEntry.objects.log_action( + user_id=approved_by.pk, + content_type_id=ContentType.objects.get_for_model(self).pk, + object_id=self.pk, + object_repr=force_unicode(self), + action_flag=CHANGE, + change_message=u'Changed is_approved, outside of admin.' + ) + def to_dict(self, org_list): country = '' if not self.country else model_to_dict(self.country) # Set groups in right order