Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mrDoctorWho/vk4xmpp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormrDoctorWho <mrdoctorwho@gmail.com>2015-01-18 17:46:41 +0300
committermrDoctorWho <mrdoctorwho@gmail.com>2015-01-18 17:46:41 +0300
commit33e9860e3d9b82ca38783193bda17c614a86bf8a (patch)
tree096748b0989445c78d1e8f20d06d065abb32c164 /modules/mod_iq_disco.py
parent553b9271015f8fa018e9f905fc0b291656941a0c (diff)
Finished global transport settings feature
Added feature "send all unavailable presences" in the global transport settings Added "Show all users (not only active ones)" in the user settings
Diffstat (limited to 'modules/mod_iq_disco.py')
-rw-r--r--modules/mod_iq_disco.py27
1 files changed, 22 insertions, 5 deletions
diff --git a/modules/mod_iq_disco.py b/modules/mod_iq_disco.py
index e9a482a..123b34d 100644
--- a/modules/mod_iq_disco.py
+++ b/modules/mod_iq_disco.py
@@ -5,7 +5,7 @@
from __main__ import *
-NODES = {"admin": ("Delete users", "Global message", "Show crashlogs", "Reload config"), "user": ("Edit settings",)}
+NODES = {"admin": ("Delete users", "Global message", "Show crashlogs", "Reload config", "Global Transport settings"), "user": ("Edit settings",)}
def disco_handler(cl, iq):
source = iq.getFrom().getStripped()
@@ -53,9 +53,9 @@ def disco_handler(cl, iq):
elif node == xmpp.NS_COMMANDS:
if source == evalJID:
for node in NODES["admin"]:
- payload.append(xmpp.Node("item", {"node": node, "name": node, "jid": TransportID }))
+ payload.append(xmpp.Node("item", {"node": node, "name": node, "jid": TransportID}))
for node in NODES["user"]:
- payload.append(xmpp.Node("item", {"node": node, "name": node, "jid": TransportID }))
+ payload.append(xmpp.Node("item", {"node": node, "name": node, "jid": TransportID}))
result.setQueryPayload(payload)
else:
@@ -70,6 +70,7 @@ def getUsersList():
result = db.fetchall()
return result
+
def deleteUsers(jids):
for key in jids:
try:
@@ -77,6 +78,7 @@ def deleteUsers(jids):
except Exception:
pass
+
def sendGlobalMessage(text):
jids = getUsersList()
for jid in jids:
@@ -143,17 +145,33 @@ def commands_handler(cl, iq):
)
commandTag.addChild(node=form)
completed = True
+
elif node == "Reload config":
try:
execfile(Config, globals())
except Exception:
- commandTag = result.setTag("command", {"status": "executing", "node": node, "sessionid": sessionid}, xmpp.NS_COMMANDS)
+## commandTag = result.setTag("command", {"status": "executing", "node": node, "sessionid": sessionid}, xmpp.NS_COMMANDS)
form = utils.buildDataForm(None, None,
[{"var": "FORM_TYPE", "type": "hidden", "value": xmpp.NS_ADMIN},
{"var": "body", "type": "text-multi", "label": "Error while loading the config file", "value": wException()}])
commandTag.addChild(node=form)
completed = True
+ elif node == "Global Transport settings":
+ config = transportSettings.settings
+ if not form:
+ form_fields = [{"var": "FORM_TYPE", "type": "hidden"}]
+ for key, values in config.items():
+ form_fields.append({"var": key, "label": values["label"], "type": values.get("type", "boolean"), "value": values["value"]}) ## todo: Add support for list-multi and others?
+
+ form = utils.buildDataForm(None, None, form_fields, "Choose wisely")
+ commandTag.addChild(node=form)
+ elif form and source in Transport:
+ form = xmpp.DataForm(node=form).asDict()
+ for key in form.keys():
+ if key in config.keys():
+ transportSettings.settings[key] = utils.normalizeValue(form[key])
+ completed = True
if node == "Edit settings" and source in Transport:
logger.info("user want to edit his settings (jid: %s)" % source)
@@ -179,7 +197,6 @@ def commands_handler(cl, iq):
sender(cl, result)
-
def load():
Component.RegisterHandler("iq", disco_handler, "get", xmpp.NS_DISCO_INFO)
Component.RegisterHandler("iq", disco_handler, "get", xmpp.NS_DISCO_ITEMS)