docs: def get_next_action(self, request, application, label, roles):
          """ Django view method. """
          actions = self.get_actions(request, application, roles)
          if label == "approve" and 'approve' in actions:
              application_form = self.get_approve_form(
                  request, application, roles)
              form = application_form(request.POST or None, instance=application)
              if request.method == 'POST':
                  if 'back' in request.POST:
                      url = base.get_url(request, application, roles)
                      return HttpResponseRedirect(url)
                  if 'approve' in request.POST and form.is_valid():
                      form.save()
                      return "approve"
              return render(
                  template_name=self.template_approve,
                  context={
                      'application': application,
                      'form': form,
                      'authorised_text': self.authorised_text,
                      'actions': self.get_actions(request, application, roles),
                      'roles': roles
                  },
                  request=request)
          elif label == "cancel" and 'cancel' in actions:
              if request.method == 'POST':
                  form = EmailForm(request.POST)
                  if 'back' in request.POST:
                      url = base.get_url(request, application, roles)
                      return HttpResponseRedirect(url)
                  if 'cancel' in request.POST and form.is_valid():
                      to_email = application.applicant.email
                      subject, body = form.get_data()
                      emails.send_mail(
                          subject, body,
                          settings.ACCOUNTS_EMAIL, [to_email])
                      return "cancel"
              else:
                  link, is_secret = base.get_email_link(application)
                  subject, body = emails.render_email(
                      'common_declined',
                      {'receiver': application.applicant,
                          'authorised_text': self.authorised_text,
                          'application': application,
                          'link': link, 'is_secret': is_secret})
                  initial_data = {'body': body, 'subject': subject}
                  form = EmailForm(initial=initial_data)
              return render(
                  template_name=self.template_decline,
                  context={
                      'application': application,
                      'form': form,
                      'authorised_text': self.authorised_text,
                      'actions': self.get_actions(request, application, roles),
                      'roles': roles
                  },
                  request=request)
          elif request.method == "POST":
              for action in ['approve', 'cancel']:
                  if action in request.POST:
                      url = base.get_url(request, application, roles, action)
                      return HttpResponseRedirect(url)
  
          # Not parent class method will do the same thing, however this makes it
          # explicit.
          if label is not None:
              return HttpResponseBadRequest("<h1>Bad Request</h1>")
  
          self.context = {
              'authorised_text': self.authorised_text,
          }
          return super(StateWaitingForApproval, self).get_next_action(
              request, application, label, roles)