Changeset 128

Show
Ignore:
Timestamp:
12/22/07 15:23:11 (1 year ago)
Author:
omega
Message:

* modif de la gestion des status
* possibilité de joindre plusieurs chat en même temps

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • randomchat/randomchat.py

    r126 r128  
    5858            return other 
    5959 
    60     def update_status(self, jid, show): 
     60    def update_availability(self, jid, availability): 
    6161        if not self.has_user(jid): 
    6262            return 
    63         if show == 'chat': 
    64             self.users_list[jid] = True 
    65         else: 
    66             self.users_list[jid] = False 
    67         print self.users_list 
     63        self.users_list[jid] = availability 
    6864 
    6965    def jid_list(self): 
     
    8480        room = msg.getTo().getNode() 
    8581        room_jid = room+'@'+self.jid 
    86         if not frm_str in self.users or self.users[frm_str]['room'] != room or self.users[frm_str]['nick'] is None: 
     82        if not frm_str in self.users or not self.users[frm_str].has_key(room) or self.users[frm_str][room]['nick'] is None: 
    8783            con.send(xmpp.Error(msg, 'item-not-found')) 
    8884            return 
     
    9490            message.setTo(jid) 
    9591            if jid == frm: 
    96                 message.setFrom(room_jid+'/'+self.users[frm_str]['nick']) 
     92                message.setFrom(room_jid+'/'+self.users[frm_str][room]['nick']) 
    9793            else: 
    9894                message.setFrom(room_jid+'/'+config.NICK_GUEST) 
     
    10197    def destroy_room(self, room): 
    10298        for jid in self.rooms[room]: 
    103             user = self.users[jid.getStripped()] 
     99            if not self.users.has_key(jid.getStripped()): 
     100                continue 
     101            user = self.users[jid.getStripped()][room] 
    104102            destroy = xmpp.Presence(to = jid, frm = room+'@'+self.jid+'/'+user['nick'], typ = 'unavailable', payload = [  
    105103                xmpp.Node('x', attrs={'xmlns': xmpp.NS_MUC+'#user'}, payload = [  
     
    121119        room_jid = room+'@'+self.jid 
    122120        nick = prs.getTo().getResource() 
    123         if not frm_str in self.users or self.users[frm_str]['room'] != room: 
    124             con.send(xmpp.Error(prs, 'item-not-found')) 
    125             return 
    126121        if nick == '': 
    127122            con.send(xmpp.Error(prs, 'bad-format')) 
    128123            return 
    129  
    130         user = self.users[frm_str] 
     124        if not self.users.has_key(frm_str) or not self.users[frm_str].has_key(room): 
     125            con.send(xmpp.Error(prs, 'item-not-found')) 
     126            return 
     127 
     128        user = self.users[frm_str][room] 
    131129 
    132130        print user['nick'] 
     
    170168        jid1_str = jid1.getStripped() 
    171169        jid2_str = jid2.getStripped() 
    172         self.users[jid1_str] = {'room': room, 'other': jid2_str, 'nick': None} 
    173         self.users[jid2_str] = {'room': room, 'other': jid1_str, 'nick': None} 
     170        if not self.users.has_key(jid1_str): 
     171            self.users[jid1_str]={} 
     172        self.users[jid1_str][room] = {'other': jid2_str, 'nick': None} 
     173        if not self.users.has_key(jid2_str): 
     174            self.users[jid2_str]={} 
     175        self.users[jid2_str][room] = {'other': jid1_str, 'nick': None} 
    174176        self.invite(room,jid1) 
    175177        self.invite(room,jid2) 
     
    197199        self.con.RegisterHandler('message', self.message_handler) 
    198200 
     201        b=xmpp.browser.Browser() 
     202        b.PlugIn(self.con) 
     203        items=[] 
     204        info={'ids':[{'category': 'conference', 'type': 'text', 'name': 'Random Chat'}], 'features':[xmpp.NS_REGISTER, xmpp.NS_DISCO_INFO, xmpp.NS_DISCO_ITEMS]} 
     205        b.setDiscoHandler({'items':items,'info':info}) 
     206 
     207 
    199208        self.send_probes() 
    200209 
     
    227236            self.muc.presence_handler(con, prs) 
    228237            return 
    229         self.users.update_status(prs.getFrom().getStripped(), prs.getShow()) 
     238        if prs.getType() is None and prs.getShow() == 'chat': 
     239            #available to chat 
     240            self.users.update_availability(prs.getFrom().getStripped(), True) 
     241            con.send(xmpp.Presence(frm = self.jid, to = prs.getFrom(), show = 'chat')) 
     242        else: 
     243            self.users.update_availability(prs.getFrom().getStripped(), False) 
     244            if prs.getType() is None: 
     245                con.send(xmpp.Presence(frm = self.jid, to = prs.getFrom())) 
     246            else: 
     247                con.send(xmpp.Presence(frm = self.jid, to = prs.getFrom(), typ = 'unavailable')) 
    230248 
    231249