diff options
Diffstat (limited to 'handlers/Presence.py')
-rw-r--r-- | handlers/Presence.py | 46 |
1 files changed, 21 insertions, 25 deletions
diff --git a/handlers/Presence.py b/handlers/Presence.py index 58a7eea..74b9d67 100644 --- a/handlers/Presence.py +++ b/handlers/Presence.py @@ -9,33 +9,30 @@ def prsHandler(cl, prs): jidFromStr = jidFrom.getStripped() jidToStr = jidTo.getStripped() if jidFromStr in Transport: - Class = Transport[jidFromStr] + user = Transport[jidFromStr] Resource = jidFrom.getResource() if pType in ("available", "probe", None): - if jidTo == TransportID and Resource not in Class.resources: + if jidTo == TransportID and Resource not in user.resources: logger.debug("%s from user %s, will send sendInitPresence" % (pType, jidFromStr)) - Class.resources.append(Resource) - if Class.lastStatus == "unavailable" and len(Class.resources) == 1: - if not Class.vk.Online: - Class.vk.Online = True - Class.sendInitPresence() + user.resources.append(Resource) + user.sendInitPresence() elif pType == "unavailable": - if jidTo == TransportID and Resource in Class.resources: - Class.resources.remove(Resource) - if Class.resources: - Class.sendOutPresence(jidFrom) - if not Class.resources: + if jidTo == TransportID and Resource in user.resources: + user.resources.remove(Resource) + if user.resources: + user.sendOutPresence(jidFrom) + if not user.resources: Sender(cl, xmpp.Presence(jidFrom, "unavailable", frm = TransportID)) - Class.vk.disconnect() + user.vk.disconnect() if jidFromStr in Transport: del Transport[jidFromStr] - updateTransportsList(jidFromStr, False) + updateTransportsList(user, False) elif pType == "error": eCode = prs.getErrorCode() if eCode == "404": - Class.vk.disconnect() + user.vk.disconnect() elif pType == "subscribe": if jidToStr == TransportID: @@ -43,27 +40,26 @@ def prsHandler(cl, prs): Sender(cl, xmpp.Presence(jidFrom, frm = TransportID)) else: Sender(cl, xmpp.Presence(jidFromStr, "subscribed", frm = jidTo)) - if Class.friends: + if user.friends: id = vk2xmpp(jidToStr) - if id in Class.friends: - if Class.friends[id]["online"]: + if id in user.friends: + if user.friends[id]["online"]: Sender(cl, xmpp.Presence(jidFrom, frm = jidTo)) + elif pType == "unsubscribe": if jidFromStr in Transport and jidToStr == TransportID: - Class.deleteUser(True) + user.deleteUser(True) WatcherMsg(_("User removed registration: %s") % jidFromStr) - if jidToStr == TransportID: - Class.lastStatus = pType elif pType in ("available", None): logger.debug("User %s not in transport but want to be in" % jidFromStr) with Database(DatabaseFile) as db: - db("select * from users where jid=?", (jidFromStr,)) - user = db.fetchone() - if user: + db("select jid,username from users where jid=?", (jidFromStr,)) + data = db.fetchone() + if data: logger.debug("User %s found in db" % jidFromStr) - jid, phone = user[:2] + jid, phone = data Transport[jid] = user = tUser((phone, None), jid) try: if user.connect(): |