def METHOD_NAME(self, action):
    CheckAuthenticator(self.request)
    if not self.available():
        self.status = _(
            "text_not_allowed_manage_server",
            default="You are not allowed to manage the Zope server.",
        )
        return
    try:
        user = '"%s"' % getSecurityManager().getUser().getUserName()
    except Exception:
        user = "unknown user"
    logger.info("Restart requested by %s" % user)
    shutdown(1)
    url = self.request.get("URL")
    # TODO: returning html has no effect in button handlers
    self.request.response.setHeader("X-Theme-Disabled", "True")
    return """<html><head>
        <meta http-equiv="refresh" content="5; url={}">
    </head><body>{}</body></html>""".format(
        escape(url, 1),
        _(
            "plone_restarting",
            default="Zope is restarting. This page will refresh in 30"
            " seconds...",
        ),
    )