def test_generate_diff(self): self.profile.description = 'New description' self.profile.url = 'http://new_url.com' moderated_object = ModeratedObject(content_object=self.profile) moderated_object.save() self.profile = UserProfile.objects.get(user__username='******') self.profile.description = 'Old description' self.profile.url = 'http://old_url.com' fields_diff = generate_diff(self.profile, moderated_object.changed_object) description_diff = u'<del class="diff modified">Old </del>'\ u'<ins class="diff modified">New </ins>description' url_diff = u'http<del class="diff modified">old_url</del>'\ u'<ins class="diff modified">new_url</ins>.com' self.assertEqual(fields_diff, [ { 'verbose_name':'description', 'diff': description_diff}, { 'verbose_name':'url', 'diff': url_diff}])
def change_view(self, request, object_id, extra_context=None): moderated_object = ModeratedObject.objects.get(pk=object_id) changed_object = moderated_object.changed_object fields_diff = generate_diff( moderated_object.get_object_for_this_type(), changed_object) if request.POST: admin_form = self.get_form(request, moderated_object)(request.POST) if admin_form.is_valid(): reason = admin_form.cleaned_data['moderation_reason'] if 'approve' in request.POST: moderated_object.approve(request.user, reason) elif 'reject' in request.POST: moderated_object.reject(request.user, reason) extra_context = {'fields_diff': fields_diff, 'django_version': django.get_version()[:3]} return super(ModeratedObjectAdmin, self).change_view(request, object_id, extra_context)