def change_view(self, request, object_id, extra_context=None): changeset = Changeset.objects.get(pk=object_id) if not changeset.object_pk: changeset.delete() messages.error(request, _(u'Object ID not present, changeset is invalid and is deleted')) return redirect('..') if not changeset.content_object: changeset.delete() messages.error(request, _(u'Object had been deleted, changeset is invalid and is deleted')) return redirect('..') children = changeset.get_children() if request.POST: admin_form = self.get_form(request, changeset)(request.POST) if admin_form.is_valid(): reason = admin_form.cleaned_data['moderation_reason'] if 'approve' in request.POST: changeset.approve(request.user, reason) for c in children: c.approve(request.user, reason) [c1.approve(request.user, reason) for c1 in c.get_children()] elif 'reject' in request.POST: changeset.reject(request.user, reason) for c in children: c.reject(request.user, reason) [c1.reject(request.user, reason) for c1 in c.get_children()] full_diff = calculate_full_diff(changeset.content_object, changeset.object_diff) extra_context = { 'changeset': changeset, 'changes': full_diff, 'children': children, 'django_version': django.get_version()[:3], } return super(ModeratedObjectAdmin, self).change_view(request, object_id, extra_context=extra_context)
def get_changes_data(self): return { 'obj': self, 'diff': calculate_full_diff(self.content_object, self.object_diff), 'children':self.get_children(), }