Commit 7d27be63 authored by Jan Čermák's avatar Jan Čermák

button for testing notifications sending

parent 7f6b7a9b
...@@ -174,6 +174,22 @@ class MaintenanceConfigPage(ConfigPageMixin, MaintenanceHandler): ...@@ -174,6 +174,22 @@ class MaintenanceConfigPage(ConfigPageMixin, MaintenanceHandler):
return super(MaintenanceConfigPage, self).render(notifications_form=handler.form, return super(MaintenanceConfigPage, self).render(notifications_form=handler.form,
config_pages=config_page_map.display_names()) config_pages=config_page_map.display_names())
def _action_test_notifications(self):
if bottle.request.method != 'POST':
messages.error("Wrong HTTP method.")
bottle.redirect(reverse("config_page", page_name="maintenance"))
result, error_message = client.test_notifications()
if result:
messages.success(_("Testing message was sent, please check your inbox."))
else:
if error_message:
messages.error(_("Sending of the testing message failed, your configuration is possibly "
"wrong.<br>Error returned:<br><pre>%(error)s</pre>")
% dict(error=error_message))
else:
messages.error(_("Sending of the testing message failed because of an internal error."))
bottle.redirect(reverse("config_page", page_name="maintenance"))
def call_action(self, action): def call_action(self, action):
if action == "config-backup": if action == "config-backup":
return self._action_config_backup() return self._action_config_backup()
...@@ -181,6 +197,8 @@ class MaintenanceConfigPage(ConfigPageMixin, MaintenanceHandler): ...@@ -181,6 +197,8 @@ class MaintenanceConfigPage(ConfigPageMixin, MaintenanceHandler):
return self._action_reboot() return self._action_reboot()
elif action == "save_notifications": elif action == "save_notifications":
return self._action_save_notifications() return self._action_save_notifications()
elif action == "test_notifications":
return self._action_test_notifications()
raise ValueError("Unknown AJAX action.") raise ValueError("Unknown AJAX action.")
def render(self, **kwargs): def render(self, **kwargs):
...@@ -332,7 +350,10 @@ def config_action_post(page_name, action): ...@@ -332,7 +350,10 @@ def config_action_post(page_name, action):
# only update is allowed # only update is allowed
request.POST.pop("update", None) request.POST.pop("update", None)
return config_page.render(is_xhr=True) return config_page.render(is_xhr=True)
# check if the button click wasn't any sub-action
subaction = request.POST.pop("action", None)
if subaction:
return config_action_post(page_name, subaction)
try: try:
result = config_page.call_action(action) result = config_page.call_action(action)
try: try:
......
...@@ -19,7 +19,7 @@ msgid "" ...@@ -19,7 +19,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Foris 0.1\n" "Project-Id-Version: Foris 0.1\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-04-08 08:25+0200\n" "POT-Creation-Date: 2014-04-16 15:11+0200\n"
"PO-Revision-Date: 2014-02-05 13:55+0100\n" "PO-Revision-Date: 2014-02-05 13:55+0100\n"
"Last-Translator: Beda Kosata <bedrich.kosata@nic.cz>\n" "Last-Translator: Beda Kosata <bedrich.kosata@nic.cz>\n"
"Language-Team: Czech <>\n" "Language-Team: Czech <>\n"
...@@ -163,6 +163,9 @@ msgstr "" ...@@ -163,6 +163,9 @@ msgstr ""
"upozorňování pomocí emailu, lze také stanovit interval mezi upozorněním a " "upozorňování pomocí emailu, lze také stanovit interval mezi upozorněním a "
"automatickým restartem, ke kterému dojde, pokud neprovedete restart ručně." "automatickým restartem, ke kterému dojde, pokud neprovedete restart ručně."
msgid "Send testing message"
msgstr "Odeslat testovací zprávu"
msgid "Configuration backup" msgid "Configuration backup"
msgstr "Záloha nastavení" msgstr "Záloha nastavení"
...@@ -509,6 +512,20 @@ msgstr "" ...@@ -509,6 +512,20 @@ msgstr ""
"Do zdířky WAN není zapojený kabel, Vaše připojení do internetu zřejmě nebude " "Do zdířky WAN není zapojený kabel, Vaše připojení do internetu zřejmě nebude "
"fungovat." "fungovat."
msgid "Testing message was sent, please check your inbox."
msgstr "Testovací zpráva byla odeslána, zkontrolujte si prosím Vaši schránku."
#, python-format
msgid ""
"Sending of the testing message failed, your configuration is possibly wrong."
"<br>Error returned:<br><pre>%(error)s</pre>"
msgstr ""
"Odesílání testovací zprávy selhalo. Selhání bylo pravděpodobně způsobeno "
"špatným nastavením.<br>Navrácená chyba:<br><pre>%(error)s</pre>"
msgid "Sending of the testing message failed because of an internal error."
msgstr "Testovací zprávu se nepodařilo odeslat kvůli vnitřní chybě."
#, python-format #, python-format
msgid "" msgid ""
"Configuration was successfully restored. After installing updates and " "Configuration was successfully restored. After installing updates and "
...@@ -516,9 +533,8 @@ msgid "" ...@@ -516,9 +533,8 @@ msgid ""
"a> in local network. Please wait a while until router automatically restarts." "a> in local network. Please wait a while until router automatically restarts."
msgstr "" msgstr ""
"Nastavení bylo úspěšně obnoveno. Po instalaci aktualizací a restartu " "Nastavení bylo úspěšně obnoveno. Po instalaci aktualizací a restartu "
"zařízení bude router z vnitřní sítě dostupný na adrese <a href=\"//" "zařízení bude router z vnitřní sítě dostupný na adrese <a href=\"//%(new_ip)s"
"%(new_ip)s\">%(new_ip)s</a>. Vyčkejte prosím na automatický restart " "\">%(new_ip)s</a>. Vyčkejte prosím na automatický restart routeru."
"routeru."
msgid "" msgid ""
"Configuration was successfully restored. Please wait a while for " "Configuration was successfully restored. Please wait a while for "
...@@ -806,8 +822,8 @@ msgid "" ...@@ -806,8 +822,8 @@ msgid ""
msgstr "" msgstr ""
"Pro přístup k pokročilému nastavení, které není možné pomocí tohoto rozhraní " "Pro přístup k pokročilému nastavení, které není možné pomocí tohoto rozhraní "
"nastavit, je nutné zvolit heslo uživatele root, pomocí kterého se následně " "nastavit, je nutné zvolit heslo uživatele root, pomocí kterého se následně "
"můžete přihlásit do <a href=\"//%(host)s/%(path)s\">webového rozhraní " "můžete přihlásit do <a href=\"//%(host)s/%(path)s\">webového rozhraní LuCI</"
"LuCI</a>. Stejné heslo je použito pro přístup na SSH." "a>. Stejné heslo je použito pro přístup na SSH."
msgid "Backup file" msgid "Backup file"
msgstr "Soubor se zálohou" msgstr "Soubor se zálohou"
......
...@@ -131,6 +131,19 @@ def dismiss_notifications(message_ids): ...@@ -131,6 +131,19 @@ def dismiss_notifications(message_ids):
return False return False
def test_notifications():
try:
dispatch(user_notify.UserNotify.rpc_test())
return True, None
except RPCError, e:
if e.tag == "operation-failed":
return False, e.message
logger.exception("Notifications testing failed.")
except TimeoutExpiredError:
logger.exception("Notifications testing timed out.")
return False, None
def ntp_update(): def ntp_update():
get_tag = time.Time.qual_tag("ntp") get_tag = time.Time.qual_tag("ntp")
element = ET.Element(get_tag) element = ET.Element(get_tag)
......
...@@ -82,6 +82,12 @@ a ...@@ -82,6 +82,12 @@ a
&:hover &:hover
color: $highlight-color-active color: $highlight-color-active
pre
font-family: "Courier New", Courier, monospace
font-size: 80%
line-height: 110%
margin: 0.5em 0
::selection ::selection
background-color: $highlight-color background-color: $highlight-color
color: #fff color: #fff
......
...@@ -34,6 +34,9 @@ ...@@ -34,6 +34,9 @@
%end %end
%end %end
<button type="submit" name="send" class="button">{{ trans("Save") }}</button> <button type="submit" name="send" class="button">{{ trans("Save") }}</button>
%if notifications_form.data['enable_smtp']:
<button type="submit" name="action" value="test_notifications" class="button">{{ trans("Send testing message") }}</button>
%end
</form> </form>
<h3>{{ trans("Configuration backup") }}</h3> <h3>{{ trans("Configuration backup") }}</h3>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment