def cancel_retirement(self, request, retirement_id): """ Executed when the admin clicks the "Cancel" button on a UserRetirementStatus row, this handles the confirmation view form, top level error handling, and permissions. """ if not request.user.has_perm('user_api.change_userretirementstatus'): return HttpResponseForbidden(_("Permission Denied")) retirement = self.get_object(request, retirement_id) redirect_url = reverse( 'admin:user_api_userretirementstatus_changelist', current_app=self.admin_site.name, ) if retirement is None: self.message_user(request, _('Retirement does not exist!'), level=messages.ERROR) return HttpResponseRedirect(redirect_url) if request.method != 'POST': form = RetirementQueueDeletionForm() else: form = RetirementQueueDeletionForm(request.POST) if form.is_valid(): try: form.save(retirement) self.message_user(request, _('Success')) return HttpResponseRedirect(redirect_url) except ValidationError: # An exception in form.save will display errors on the form page pass context = self.admin_site.each_context(request) context['opts'] = self.model._meta context['form'] = form context['retirement'] = retirement return TemplateResponse( request, 'admin/user_api/accounts/cancel_retirement_action.html', context, )