Philipp Hörist pushed to branch master at gajim / python-nbxmpp

Commits:

2 changed files:

Changes:

  • nbxmpp/modules/muc.py
    ... ... @@ -33,6 +33,7 @@ from nbxmpp.protocol import Message
    33 33
     from nbxmpp.protocol import DataForm
    
    34 34
     from nbxmpp.protocol import DataField
    
    35 35
     from nbxmpp.protocol import isResultNode
    
    36
    +from nbxmpp.protocol import NodeProcessed
    
    36 37
     from nbxmpp.simplexml import Node
    
    37 38
     from nbxmpp.structs import StanzaHandler
    
    38 39
     from nbxmpp.const import InviteType
    
    ... ... @@ -301,11 +302,28 @@ class MUC:
    301 302
             except KeyError:
    
    302 303
                 return
    
    303 304
     
    
    304
    -        properties.voice_request = VoiceRequest(form=data_form)
    
    305
    +        nick = data_form['muc#roomnick'].value
    
    306
    +
    
    307
    +        try:
    
    308
    +            jid = JID(data_form['muc#jid'].value)
    
    309
    +        except Exception:
    
    310
    +            log.warning('Invalid JID on voice request')
    
    311
    +            log.warning(stanza)
    
    312
    +            raise NodeProcessed
    
    313
    +
    
    314
    +        properties.voice_request = VoiceRequest(jid=jid,
    
    315
    +                                                nick=nick,
    
    316
    +                                                form=data_form)
    
    305 317
             properties.from_muc = True
    
    306 318
             properties.muc_jid = properties.jid.copy()
    
    307 319
             properties.muc_jid.setBare()
    
    308 320
     
    
    321
    +    def approve_voice_request(self, muc_jid, voice_request):
    
    322
    +        form = voice_request.form
    
    323
    +        form.type_ = 'submit'
    
    324
    +        form['muc#request_allow'].value = True
    
    325
    +        self._client.send(Message(to=muc_jid, payload=form))
    
    326
    +
    
    309 327
         @call_on_response('_affiliation_received')
    
    310 328
         def get_affiliation(self, jid, affiliation):
    
    311 329
             iq = Iq(typ='get', to=jid, queryNS=NS_MUC_ADMIN)
    

  • nbxmpp/structs.py
    ... ... @@ -48,7 +48,7 @@ CaptchaData = namedtuple('CaptchaData', 'form bob_data')
    48 48
     
    
    49 49
     BobData = namedtuple('BobData', 'algo hash_ max_age data cid type')
    
    50 50
     
    
    51
    -VoiceRequest = namedtuple('VoiceRequest', 'form')
    
    51
    +VoiceRequest = namedtuple('VoiceRequest', 'form jid nick')
    
    52 52
     
    
    53 53
     MucUserData = namedtuple('MucUserData', 'affiliation jid nick role actor reason')
    
    54 54
     MucUserData.__new__.__defaults__ = (None, None, None, None, None)