Fix requesting pubsub node config
Regression from refactoring
This commit is contained in:
parent
09aead3e7f
commit
3a3b32249c
4 changed files with 48 additions and 30 deletions
|
@ -39,7 +39,6 @@ from gajim.common import caps_cache as capscache
|
||||||
|
|
||||||
from gajim.common import helpers
|
from gajim.common import helpers
|
||||||
from gajim.common import app
|
from gajim.common import app
|
||||||
from gajim.common import dataforms
|
|
||||||
from gajim.common import jingle_xtls
|
from gajim.common import jingle_xtls
|
||||||
from gajim.common.caps_cache import muc_caps_cache
|
from gajim.common.caps_cache import muc_caps_cache
|
||||||
from gajim.common.commands import ConnectionCommands
|
from gajim.common.commands import ConnectionCommands
|
||||||
|
@ -64,7 +63,6 @@ METACONTACTS_ARRIVED = 'metacontacts_arrived'
|
||||||
ROSTER_ARRIVED = 'roster_arrived'
|
ROSTER_ARRIVED = 'roster_arrived'
|
||||||
DELIMITER_ARRIVED = 'delimiter_arrived'
|
DELIMITER_ARRIVED = 'delimiter_arrived'
|
||||||
PRIVACY_ARRIVED = 'privacy_arrived'
|
PRIVACY_ARRIVED = 'privacy_arrived'
|
||||||
PEP_CONFIG = 'pep_config'
|
|
||||||
|
|
||||||
|
|
||||||
class ConnectionDisco:
|
class ConnectionDisco:
|
||||||
|
@ -933,21 +931,6 @@ ConnectionHandlersBase, ConnectionJingle, ConnectionIBBytestream):
|
||||||
# connection process, we don't take the risk
|
# connection process, we don't take the risk
|
||||||
self.privacy_rules_supported = False
|
self.privacy_rules_supported = False
|
||||||
self._continue_connection_request_privacy()
|
self._continue_connection_request_privacy()
|
||||||
elif self.awaiting_answers[id_][0] == PEP_CONFIG:
|
|
||||||
del self.awaiting_answers[id_]
|
|
||||||
if iq_obj.getType() == 'error':
|
|
||||||
return
|
|
||||||
if not iq_obj.getTag('pubsub'):
|
|
||||||
return
|
|
||||||
conf = iq_obj.getTag('pubsub').getTag('configure')
|
|
||||||
if not conf:
|
|
||||||
return
|
|
||||||
node = conf.getAttr('node')
|
|
||||||
form_tag = conf.getTag('x', namespace=nbxmpp.NS_DATA)
|
|
||||||
if form_tag:
|
|
||||||
form = dataforms.ExtendForm(node=form_tag)
|
|
||||||
app.nec.push_incoming_event(PEPConfigReceivedEvent(None,
|
|
||||||
conn=self, node=node, form=form))
|
|
||||||
|
|
||||||
def _nec_iq_error_received(self, obj):
|
def _nec_iq_error_received(self, obj):
|
||||||
if obj.conn.name != self.name:
|
if obj.conn.name != self.name:
|
||||||
|
|
|
@ -1822,10 +1822,6 @@ class UpdateRoomAvatarEvent(nec.NetworkIncomingEvent):
|
||||||
def generate(self):
|
def generate(self):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
class PEPConfigReceivedEvent(nec.NetworkIncomingEvent):
|
|
||||||
name = 'pep-config-received'
|
|
||||||
base_network_events = []
|
|
||||||
|
|
||||||
class MetacontactsReceivedEvent(nec.NetworkIncomingEvent):
|
class MetacontactsReceivedEvent(nec.NetworkIncomingEvent):
|
||||||
name = 'metacontacts-received'
|
name = 'metacontacts-received'
|
||||||
base_network_events = []
|
base_network_events = []
|
||||||
|
|
|
@ -25,6 +25,8 @@ import logging
|
||||||
import nbxmpp
|
import nbxmpp
|
||||||
|
|
||||||
from gajim.common import app
|
from gajim.common import app
|
||||||
|
from gajim.common import dataforms
|
||||||
|
from gajim.common.nec import NetworkIncomingEvent
|
||||||
|
|
||||||
log = logging.getLogger('gajim.c.m.pubsub')
|
log = logging.getLogger('gajim.c.m.pubsub')
|
||||||
|
|
||||||
|
@ -185,7 +187,7 @@ class PubSub:
|
||||||
|
|
||||||
self._con.connection.SendAndCallForResponse(query, cb)
|
self._con.connection.SendAndCallForResponse(query, cb)
|
||||||
|
|
||||||
def send_pb_configure(self, jid, node, form, cb=None):
|
def send_pb_configure(self, jid, node, form, cb=None, **kwargs):
|
||||||
if not app.account_is_connected(self._account):
|
if not app.account_is_connected(self._account):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -197,21 +199,58 @@ class PubSub:
|
||||||
c = c.addChild('configure', {'node': node})
|
c = c.addChild('configure', {'node': node})
|
||||||
c.addChild(node=form)
|
c.addChild(node=form)
|
||||||
|
|
||||||
self._con.connection.SendAndCallForResponse(query, cb)
|
log.info('Send node config for %s', node)
|
||||||
|
self._con.connection.SendAndCallForResponse(query, cb, kwargs)
|
||||||
|
|
||||||
def request_pb_configuration(self, jid, node, cb=None):
|
def request_pb_configuration(self, jid, node):
|
||||||
if not app.account_is_connected(self._account):
|
if not app.account_is_connected(self._account):
|
||||||
return
|
return
|
||||||
|
|
||||||
if cb is None:
|
|
||||||
cb = self._default_callback
|
|
||||||
|
|
||||||
query = nbxmpp.Iq('get', to=jid)
|
query = nbxmpp.Iq('get', to=jid)
|
||||||
e = query.addChild('pubsub', namespace=nbxmpp.NS_PUBSUB_OWNER)
|
e = query.addChild('pubsub', namespace=nbxmpp.NS_PUBSUB_OWNER)
|
||||||
e = e.addChild('configure', {'node': node})
|
e = e.addChild('configure', {'node': node})
|
||||||
|
|
||||||
self._con.connection.SendAndCallForResponse(query, cb)
|
log.info('Request node config for %s', node)
|
||||||
|
self._con.connection.SendAndCallForResponse(
|
||||||
|
query, self._received_pb_configuration, {'node': node})
|
||||||
|
|
||||||
|
def _received_pb_configuration(self, conn, stanza, node):
|
||||||
|
if not nbxmpp.isResultNode(stanza):
|
||||||
|
log.warning('Error: %s', stanza.getError())
|
||||||
|
return
|
||||||
|
|
||||||
|
pubsub = stanza.getTag('pubsub', namespace=nbxmpp.NS_PUBSUB_OWNER)
|
||||||
|
if pubsub is None:
|
||||||
|
log.warning('Malformed PubSub configure '
|
||||||
|
'stanza (no pubsub node): %s', stanza)
|
||||||
|
return
|
||||||
|
|
||||||
|
configure = pubsub.getTag('configure')
|
||||||
|
if configure is None:
|
||||||
|
log.warning('Malformed PubSub configure '
|
||||||
|
'stanza (no configure node): %s', stanza)
|
||||||
|
return
|
||||||
|
|
||||||
|
if configure.getAttr('node') != node:
|
||||||
|
log.warning('Malformed PubSub configure '
|
||||||
|
'stanza (wrong node): %s', stanza)
|
||||||
|
return
|
||||||
|
|
||||||
|
form = configure.getTag('x', namespace=nbxmpp.NS_DATA)
|
||||||
|
if form is None:
|
||||||
|
log.warning('Malformed PubSub configure '
|
||||||
|
'stanza (no form): %s', stanza)
|
||||||
|
return
|
||||||
|
|
||||||
|
app.nec.push_incoming_event(PubSubConfigReceivedEvent(
|
||||||
|
None, conn=self._con, node=node,
|
||||||
|
form=dataforms.ExtendForm(node=form)))
|
||||||
|
|
||||||
def _default_callback(self, conn, stanza, *args, **kwargs):
|
def _default_callback(self, conn, stanza, *args, **kwargs):
|
||||||
if not nbxmpp.isResultNode(stanza):
|
if not nbxmpp.isResultNode(stanza):
|
||||||
log.warning('Error: %s', stanza.getError())
|
log.warning('Error: %s', stanza.getError())
|
||||||
|
|
||||||
|
|
||||||
|
class PubSubConfigReceivedEvent(NetworkIncomingEvent):
|
||||||
|
name = 'pubsub-config-received'
|
||||||
|
base_network_events = []
|
||||||
|
|
|
@ -2839,7 +2839,7 @@ class ManagePEPServicesWindow:
|
||||||
self.xml.get_object('services_treeview').get_selection().connect(
|
self.xml.get_object('services_treeview').get_selection().connect(
|
||||||
'changed', self.on_services_selection_changed)
|
'changed', self.on_services_selection_changed)
|
||||||
|
|
||||||
app.ged.register_event_handler('pep-config-received', ged.GUI1,
|
app.ged.register_event_handler('pubsub-config-received', ged.GUI1,
|
||||||
self._nec_pep_config_received)
|
self._nec_pep_config_received)
|
||||||
app.ged.register_event_handler('agent-items-received', ged.GUI1,
|
app.ged.register_event_handler('agent-items-received', ged.GUI1,
|
||||||
self._nec_agent_items_received)
|
self._nec_agent_items_received)
|
||||||
|
@ -2849,7 +2849,7 @@ class ManagePEPServicesWindow:
|
||||||
def on_manage_pep_services_window_destroy(self, widget):
|
def on_manage_pep_services_window_destroy(self, widget):
|
||||||
'''close window'''
|
'''close window'''
|
||||||
del app.interface.instances[self.account]['pep_services']
|
del app.interface.instances[self.account]['pep_services']
|
||||||
app.ged.remove_event_handler('pep-config-received', ged.GUI1,
|
app.ged.remove_event_handler('pubsub-config-received', ged.GUI1,
|
||||||
self._nec_pep_config_received)
|
self._nec_pep_config_received)
|
||||||
app.ged.remove_event_handler('agent-items-received', ged.GUI1,
|
app.ged.remove_event_handler('agent-items-received', ged.GUI1,
|
||||||
self._nec_agent_items_received)
|
self._nec_agent_items_received)
|
||||||
|
|
Loading…
Add table
Reference in a new issue