SàT: multi-profile: memory & dbus bridge's methods profile management
/!\ profiles not managed yet for dbus signals
This commit is contained in:
parent
656bea30dd
commit
54730cb077
5 changed files with 180 additions and 132 deletions
|
|
@ -40,29 +40,69 @@ class DBusBridgeFrontend(BridgeFrontend):
|
|||
elif iface == "request":
|
||||
self.db_req_iface.connect_to_signal(functionName, handler)
|
||||
|
||||
def connect(self):
|
||||
return self.db_comm_iface.connect()
|
||||
def connect(self, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.connect(profile_key)
|
||||
|
||||
def disconnect(self):
|
||||
return self.db_comm_iface.disconnect()
|
||||
|
||||
def getContacts(self):
|
||||
return self.db_comm_iface.getContacts()
|
||||
def disconnect(self, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.disconnect(profile_key)
|
||||
|
||||
def getPresenceStatus(self):
|
||||
return self.db_comm_iface.getPresenceStatus()
|
||||
def isConnected(self, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.isConnected(profile_key)
|
||||
|
||||
def getWaitingSub(self):
|
||||
return self.db_comm_iface.getWaitingSub()
|
||||
|
||||
def sendMessage(self, to, message):
|
||||
return self.db_comm_iface.sendMessage(to, message)
|
||||
def getContacts(self, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.getContacts(profile_key)
|
||||
|
||||
def getPresenceStatus(self, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.getPresenceStatus(profile_key)
|
||||
|
||||
def getWaitingSub(self, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.getWaitingSub(profile_key)
|
||||
|
||||
def sendMessage(self, to, message, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.sendMessage(to, message, profile_key)
|
||||
|
||||
def setPresence(self, to="", show="", priority=0, statuses={}, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.setPresence(to, show, priority, statuses, profile_key)
|
||||
|
||||
def subscription(self, type, entity, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.subscription(type, entity, profile_key)
|
||||
|
||||
def setParam(self, name, value, category, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.setParam(name, value, category, profile_key)
|
||||
|
||||
def getParamA(self, name, category, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.getParamA(name, category, profile_key)
|
||||
|
||||
def getParams(self, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.getParams(profile_key)
|
||||
|
||||
def getParamsForCategory(self, category, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.getParamsForCategory(category, profile_key)
|
||||
|
||||
def getParamsCategories(self):
|
||||
return self.db_comm_iface.getParamsCategories(profile_key)
|
||||
|
||||
def getHistory(self, from_jid, to_jid, size):
|
||||
return self.db_comm_iface.getHistory(from_jid, to_jid, size)
|
||||
|
||||
def addContact(self, jid, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.addContact(jid, profile_key)
|
||||
|
||||
def delContact(self, jid, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.delContact(jid, profile_key)
|
||||
|
||||
def launchAction(self, type, data):
|
||||
return self.db_req_iface.launchAction(type, data)
|
||||
|
||||
def confirmationAnswer(self, id, accepted, data):
|
||||
return self.db_req_iface.confirmationAnswer(id, accepted, data)
|
||||
|
||||
#methods from plugins
|
||||
def sendFile(self, to, path, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.sendFile(to, path, profile_key)
|
||||
|
||||
def findGateways(self, target):
|
||||
return self.db_comm_iface.findGateways(target)
|
||||
def findGateways(self, target, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.findGateways(target, profile_key)
|
||||
|
||||
def getCard(self, target, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.getCard(target, profile_key)
|
||||
|
|
@ -75,45 +115,6 @@ class DBusBridgeFrontend(BridgeFrontend):
|
|||
|
||||
def in_band_register(self, target, profile_key='@DEFAULT@'):
|
||||
return self.db_comm_iface.in_band_register(target, profile_key)
|
||||
|
||||
def setPresence(self, to="", show="", priority=0, statuses={}):
|
||||
return self.db_comm_iface.setPresence(to, show, priority, statuses)
|
||||
|
||||
def subscription(self, type, entity):
|
||||
return self.db_comm_iface.subscription(type, entity)
|
||||
|
||||
def setParam(self, name, value, category):
|
||||
return self.db_comm_iface.setParam(name, value, category)
|
||||
|
||||
def getParamA(self, name, category):
|
||||
return self.db_comm_iface.getParamA(name, category)
|
||||
|
||||
def getParams(self):
|
||||
return self.db_comm_iface.getParams()
|
||||
|
||||
def getParamsForCategory(self, category):
|
||||
return self.db_comm_iface.getParamsForCategory(category)
|
||||
|
||||
def getParamsCategories(self):
|
||||
return self.db_comm_iface.getParamsCategories()
|
||||
|
||||
def getHistory(self, from_jid, to_jid, size):
|
||||
return self.db_comm_iface.getHistory(from_jid, to_jid, size)
|
||||
|
||||
def addContact(self, jid):
|
||||
return self.db_comm_iface.addContact(jid)
|
||||
|
||||
def delContact(self, jid):
|
||||
return self.db_comm_iface.delContact(jid)
|
||||
|
||||
def isConnected(self):
|
||||
return self.db_comm_iface.isConnected()
|
||||
|
||||
def launchAction(self, type, data):
|
||||
return self.db_req_iface.launchAction(type, data)
|
||||
|
||||
def confirmationAnswer(self, id, accepted, data):
|
||||
return self.db_req_iface.confirmationAnswer(id, accepted, data)
|
||||
|
||||
def gatewayRegister(self, action, target, data):
|
||||
if data == None:
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ class XEP_0100():
|
|||
info("Gateways plugin initialization")
|
||||
self.host = host
|
||||
self.__gateways = {} #dict used to construct the answer to findGateways. Key = target jid
|
||||
host.bridge.addMethod("findGateways", ".communication", in_sign='s', out_sign='s', method=self.findGateways)
|
||||
host.bridge.addMethod("findGateways", ".communication", in_sign='ss', out_sign='s', method=self.findGateways)
|
||||
host.bridge.addMethod("gatewayRegister", ".request", in_sign='ssa(ss)', out_sign='s', method=self.gatewayRegister)
|
||||
|
||||
def __inc_handled_items(self, request_id):
|
||||
|
|
@ -109,6 +109,7 @@ class XEP_0100():
|
|||
"""
|
||||
client = self.host.getClient(profile_key)
|
||||
assert(client)
|
||||
print "target ===>", target
|
||||
to_jid = jid.JID(target)
|
||||
debug ("find gateways (target = %s)" % to_jid.full())
|
||||
request_id = self.host.get_next_id()
|
||||
|
|
|
|||
20
sat.tac
20
sat.tac
|
|
@ -81,7 +81,7 @@ class SatXMPPClient(client.XMPPClient):
|
|||
print "SatXMPPClient"
|
||||
client.XMPPClient._authd(self, xmlstream)
|
||||
self.__connected=True
|
||||
print "********** CONNECTED **********"
|
||||
print "********** [%s] CONNECTED **********" % self.profile
|
||||
self.streamInitialized()
|
||||
self.host_app.bridge.connected() #we send the signal to the clients
|
||||
|
||||
|
|
@ -107,7 +107,7 @@ class SatXMPPClient(client.XMPPClient):
|
|||
|
||||
def connectionLost(self, connector, unused_reason):
|
||||
self.__connected=False
|
||||
print "********** DISCONNECTED **********"
|
||||
print "********** [%s] DISCONNECTED **********" % self.profile
|
||||
try:
|
||||
self.keep_alife.stop()
|
||||
except AttributeError:
|
||||
|
|
@ -164,14 +164,14 @@ class SatRosterProtocol(xmppim.RosterClientProtocol):
|
|||
if item.name:
|
||||
item_attr['name'] = item.name
|
||||
info ("new contact in roster list: %s", item.jid.full())
|
||||
self.host.memory.addContact(item.jid, item_attr, item.groups)
|
||||
self.host.memory.addContact(item.jid, item_attr, item.groups, self.parent.profile)
|
||||
self.host.bridge.newContact(item.jid.full(), item_attr, item.groups)
|
||||
|
||||
def onRosterRemove(self, entity):
|
||||
"""Called when a roster removal event is received"""
|
||||
#TODO: send a signal to frontends
|
||||
print "removing %s from roster list" % entity.full()
|
||||
self.host.memory.delContact(entity)
|
||||
self.host.memory.delContact(entity, self.parent.profile)
|
||||
|
||||
class SatPresenceProtocol(xmppim.PresenceClientProtocol):
|
||||
|
||||
|
|
@ -187,7 +187,7 @@ class SatPresenceProtocol(xmppim.PresenceClientProtocol):
|
|||
del statuses[None]
|
||||
|
||||
self.host.memory.addPresenceStatus(entity, show or "",
|
||||
int(priority), statuses)
|
||||
int(priority), statuses, self.parent.profile)
|
||||
|
||||
#now it's time to notify frontends
|
||||
self.host.bridge.presenceUpdate(entity.full(), show or "",
|
||||
|
|
@ -197,7 +197,7 @@ class SatPresenceProtocol(xmppim.PresenceClientProtocol):
|
|||
if statuses and statuses.has_key(None): #we only want string keys
|
||||
statuses["default"] = statuses[None]
|
||||
del statuses[None]
|
||||
self.host.memory.addPresenceStatus(entity, "unavailable", 0, statuses)
|
||||
self.host.memory.addPresenceStatus(entity, "unavailable", 0, statuses, self.parent.profile)
|
||||
|
||||
#now it's time to notify frontends
|
||||
self.host.bridge.presenceUpdate(entity.full(), "unavailable", 0, statuses)
|
||||
|
|
@ -211,22 +211,22 @@ class SatPresenceProtocol(xmppim.PresenceClientProtocol):
|
|||
|
||||
def subscribedReceived(self, entity):
|
||||
debug ("subscription approved for [%s]" % entity.userhost())
|
||||
self.host.memory.delWaitingSub(entity.userhost())
|
||||
self.host.memory.delWaitingSub(entity.userhost(), self.parent.profile)
|
||||
self.host.bridge.subscribe('subscribed', entity.userhost())
|
||||
|
||||
def unsubscribedReceived(self, entity):
|
||||
debug ("unsubscription confirmed for [%s]" % entity.userhost())
|
||||
self.host.memory.delWaitingSub(entity.userhost())
|
||||
self.host.memory.delWaitingSub(entity.userhost(), self.parent.profile)
|
||||
self.host.bridge.subscribe('unsubscribed', entity.userhost())
|
||||
|
||||
def subscribeReceived(self, entity):
|
||||
debug ("subscription request for [%s]" % entity.userhost())
|
||||
self.host.memory.addWaitingSub('subscribe', entity.userhost())
|
||||
self.host.memory.addWaitingSub('subscribe', entity.userhost(), self.parent.profile)
|
||||
self.host.bridge.subscribe('subscribe', entity.userhost())
|
||||
|
||||
def unsubscribeReceived(self, entity):
|
||||
debug ("unsubscription asked for [%s]" % entity.userhost())
|
||||
self.host.memory.addWaitingSub('unsubscribe', entity.userhost())
|
||||
self.host.memory.addWaitingSub('unsubscribe', entity.userhost(), self.parent.profile)
|
||||
self.host.bridge.subscribe('unsubscribe', entity.userhost())
|
||||
|
||||
class SatDiscoProtocol(disco.DiscoClientProtocol):
|
||||
|
|
|
|||
|
|
@ -124,76 +124,76 @@ class DbusObject(dbus.service.Object):
|
|||
return self.cb["registerNewAccount"](login, password, host, port)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='', out_signature='')
|
||||
def connect(self):
|
||||
in_signature='s', out_signature='')
|
||||
def connect(self, profile_key='@DEFAULT@'):
|
||||
info ("Connection asked")
|
||||
return self.cb["connect"]()
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='', out_signature='')
|
||||
def disconnect(self):
|
||||
in_signature='s', out_signature='')
|
||||
def disconnect(self, profile_key='@DEFAULT@'):
|
||||
info ("Disconnection asked")
|
||||
return self.cb["disconnect"]()
|
||||
return self.cb["disconnect"](profile_key)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='', out_signature='b')
|
||||
def isConnected(self):
|
||||
def isConnected(self, profile_key='@DEFAULT@'):
|
||||
info ("Connection status asked")
|
||||
return self.cb["isConnected"]()
|
||||
return self.cb["isConnected"](profile_key)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='', out_signature='a(sa{ss}as)')
|
||||
def getContacts(self):
|
||||
in_signature='s', out_signature='a(sa{ss}as)')
|
||||
def getContacts(self, profile_key='@DEFAULT@'):
|
||||
debug("getContacts...")
|
||||
return self.cb["getContacts"]()
|
||||
return self.cb["getContacts"](profile_key)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='', out_signature='a{sa{s(sia{ss})}}')
|
||||
def getPresenceStatus(self):
|
||||
in_signature='s', out_signature='a{sa{s(sia{ss})}}')
|
||||
def getPresenceStatus(self, profile_key='@DEFAULT@'):
|
||||
debug("getPresenceStatus...")
|
||||
return self.cb["getPresenceStatus"]()
|
||||
return self.cb["getPresenceStatus"](profile_key)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='', out_signature='a{ss}')
|
||||
def getWaitingSub(self):
|
||||
in_signature='s', out_signature='a{ss}')
|
||||
def getWaitingSub(self, profile_key='@DEFAULT@'):
|
||||
debug("getWaitingSub...")
|
||||
return self.cb["getWaitingSub"]()
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='ss', out_signature='')
|
||||
def sendMessage(self, to, message):
|
||||
debug("sendMessage...")
|
||||
self.cb["sendMessage"](to, message)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='ssia{ss}', out_signature='')
|
||||
def setPresence(self, to="", show="", priority=0, statuses={}):
|
||||
self.cb["setPresence"](to, show, priority, statuses)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='ss', out_signature='')
|
||||
def subscription(self, type, entity):
|
||||
self.cb["subscription"](type, entity)
|
||||
return self.cb["getWaitingSub"](profile_key)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='sss', out_signature='')
|
||||
def setParam(self, name, value, category):
|
||||
self.cb["setParam"](str(name), str(value), str(category))
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='ss', out_signature='s')
|
||||
def getParamA(self, name, category="default"):
|
||||
return self.cb["getParamA"](name, category)
|
||||
def sendMessage(self, to, message, profile_key='@DEFAULT@'):
|
||||
debug("sendMessage...")
|
||||
self.cb["sendMessage"](to, message, profile_key)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='', out_signature='s')
|
||||
def getParams(self):
|
||||
return self.cb["getParams"]()
|
||||
in_signature='ssia{ss}s', out_signature='')
|
||||
def setPresence(self, to="", show="", priority=0, statuses={}, profile_key='@DEFAULT@'):
|
||||
self.cb["setPresence"](to, show, priority, statuses, profile_key)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='sss', out_signature='')
|
||||
def subscription(self, type, entity, profile_key='@DEFAULT@'):
|
||||
self.cb["subscription"](type, entity, profile_key)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='ssss', out_signature='')
|
||||
def setParam(self, name, value, category, profile_key='@DEFAULT@'):
|
||||
self.cb["setParam"](str(name), str(value), str(category), profile_key)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='sss', out_signature='s')
|
||||
def getParamA(self, name, category="default", profile_key='@DEFAULT@'):
|
||||
return self.cb["getParamA"](name, category, profile_key = profile_key)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='s', out_signature='s')
|
||||
def getParamsForCategory(self, category):
|
||||
return self.cb["getParamsForCategory"](category)
|
||||
def getParams(self, profile_key='@DEFAULT@'):
|
||||
return self.cb["getParams"](profile_key)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='ss', out_signature='s')
|
||||
def getParamsForCategory(self, category, profile_key='@DEFAULT@'):
|
||||
return self.cb["getParamsForCategory"](category, profile_key)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='', out_signature='as')
|
||||
|
|
@ -207,16 +207,16 @@ class DbusObject(dbus.service.Object):
|
|||
return self.cb["getHistory"](from_jid, to_jid, size)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='s', out_signature='')
|
||||
def addContact(self, entity):
|
||||
debug("Subscription asked for %s", entity)
|
||||
return self.cb["addContact"](entity)
|
||||
in_signature='ss', out_signature='')
|
||||
def addContact(self, entity, profile_key='@DEFAULT@'):
|
||||
debug("Subscription asked for %s (profile %s)", entity, profile_key)
|
||||
return self.cb["addContact"](entity, profile_key)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_COMM_SUFFIX,
|
||||
in_signature='s', out_signature='')
|
||||
def delContact(self, entity):
|
||||
debug("Unsubscription asked for %s", entity)
|
||||
return self.cb["delContact"](entity)
|
||||
in_signature='ss', out_signature='')
|
||||
def delContact(self, entity, profile_key='@DEFAULT@'):
|
||||
debug("Unsubscription asked for %s (profile %s)", entity, profile_key)
|
||||
return self.cb["delContact"](entity, profile_key)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_REQ_SUFFIX,
|
||||
in_signature='sa{ss}', out_signature='s')
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ SAVEFILE_HISTORY="/history"
|
|||
SAVEFILE_PRIVATE="/private" #file used to store misc values (mainly for plugins)
|
||||
|
||||
class Param():
|
||||
"""This class manage parameter with xml"""
|
||||
"""This class manage parameters with xml"""
|
||||
### TODO: add desciption in params
|
||||
|
||||
#TODO: mettre Watched dans un plugin
|
||||
|
|
@ -505,53 +505,99 @@ class Memory:
|
|||
return None
|
||||
|
||||
|
||||
def addContact(self, contact_jid, attributes, groups):
|
||||
def addContact(self, contact_jid, attributes, groups, profile_key='@DEFAULT@'):
|
||||
debug("Memory addContact: %s",contact_jid.userhost())
|
||||
profile = self.getProfileName(profile_key)
|
||||
if not profile:
|
||||
error ('Trying to add a contact to a non-existant profile')
|
||||
return
|
||||
assert(isinstance(attributes,dict))
|
||||
assert(isinstance(groups,set))
|
||||
self.contacts[contact_jid.userhost()]=[attributes, groups]
|
||||
if not self.contacts.has_key(profile):
|
||||
self.contacts[profile] = {}
|
||||
self.contacts[profile][contact_jid.userhost()]=[attributes, groups]
|
||||
|
||||
def delContact(self, contact_jid):
|
||||
def delContact(self, contact_jid, profile_key='@DEFAULT@'):
|
||||
debug("Memory delContact: %s",contact_jid.userhost())
|
||||
if self.contacts.has_key(contact_jid.userhost()):
|
||||
del self.contacts[contact_jid.userhost()]
|
||||
profile = self.getProfileName(profile_key)
|
||||
if not profile:
|
||||
error ('Trying to delete a contact for a non-existant profile')
|
||||
return
|
||||
if self.contacts.has_key(profile) and self.contacts[profile].has_key(contact_jid.userhost()):
|
||||
del self.contacts[profile][contact_jid.userhost()]
|
||||
|
||||
def getContact(self, contact_jid):
|
||||
if self.contacts.has_key(contact_jid.userhost()):
|
||||
self.contacts[contact_jid.userhost()]
|
||||
def getContact(self, contact_jid, profile_key='@DEFAULT@'):
|
||||
profile = self.getProfileName(profile_key)
|
||||
if not profile:
|
||||
error('Asking a contact for a non-existant profile')
|
||||
return None
|
||||
if self.contacts.has_key(profile) and self.contacts[profile].has_key(contact_jid.userhost()):
|
||||
self.contacts[profile][contact_jid.userhost()]
|
||||
else:
|
||||
return None
|
||||
|
||||
def getContacts(self):
|
||||
def getContacts(self, profile_key='@DEFAULT@'):
|
||||
"""Return list of contacts for given profile
|
||||
@param profile_key: profile key
|
||||
@return list of [contact, attr, groups]"""
|
||||
debug ("Memory getContact OK (%s)", self.contacts)
|
||||
profile = self.getProfileName(profile_key)
|
||||
if not profile:
|
||||
error('Asking contacts for a non-existant profile')
|
||||
return []
|
||||
ret=[]
|
||||
for contact in self.contacts:
|
||||
attr, groups = self.contacts[contact]
|
||||
for contact in self.contacts[profile]:
|
||||
attr, groups = self.contacts[profile][contact]
|
||||
ret.append([contact, attr, groups ])
|
||||
return ret
|
||||
|
||||
def addPresenceStatus(self, contact_jid, show, priority, statuses):
|
||||
if not self.presenceStatus.has_key(contact_jid.userhost()):
|
||||
self.presenceStatus[contact_jid.userhost()] = {}
|
||||
def addPresenceStatus(self, contact_jid, show, priority, statuses, profile_key='@DEFAULT@'):
|
||||
profile = self.getProfileName(profile_key)
|
||||
if not profile:
|
||||
error('Trying to add presence status to a non-existant profile')
|
||||
return
|
||||
if not self.presenceStatus.has_key(profile):
|
||||
self.presenceStatus[profile] = {}
|
||||
if not self.presenceStatus[profile].has_key(contact_jid.userhost()):
|
||||
self.presenceStatus[profile][contact_jid.userhost()] = {}
|
||||
resource = jid.parse(contact_jid.full())[2] or ''
|
||||
self.presenceStatus[contact_jid.userhost()][resource] = (show, priority, statuses)
|
||||
self.presenceStatus[profile][contact_jid.userhost()][resource] = (show, priority, statuses)
|
||||
|
||||
def addWaitingSub(self, type, contact_jid):
|
||||
def addWaitingSub(self, type, contact_jid, profile_key):
|
||||
"""Called when a subcription request is received"""
|
||||
self.subscriptions[contact_jid] = type
|
||||
profile = self.getProfileName(profile_key)
|
||||
assert(profile)
|
||||
if not self.subscriptions.has_key(profile):
|
||||
self.subscriptions[profile] = {}
|
||||
self.subscriptions[profile][contact_jid] = type
|
||||
|
||||
def delWaitingSub(self, contact_jid):
|
||||
def delWaitingSub(self, contact_jid, profile_key):
|
||||
"""Called when a subcription request is finished"""
|
||||
if self.subscriptions.has_key(contact_jid):
|
||||
del self.subscriptions[contact_jid]
|
||||
profile = self.getProfileName(profile_key)
|
||||
assert(profile)
|
||||
if self.subscriptions.has_key(profile) and self.subscriptions[profile].has_key(contact_jid):
|
||||
del self.subscriptions[profile][contact_jid]
|
||||
|
||||
def getWaitingSub(self):
|
||||
def getWaitingSub(self, profile_key='@DEFAULT@'):
|
||||
"""Called to get a list of currently waiting subscription requests"""
|
||||
return self.subscriptions
|
||||
profile = self.getProfileName(profile_key)
|
||||
if not profile:
|
||||
error('Asking waiting subscriptions for a non-existant profile')
|
||||
return {}
|
||||
if not self.subscriptions.has_key(profile):
|
||||
return {}
|
||||
|
||||
return self.subscriptions[profile]
|
||||
|
||||
def getPresenceStatus(self):
|
||||
debug ("Memory getPresenceStatus (%s)", self.presenceStatus)
|
||||
return self.presenceStatus
|
||||
def getPresenceStatus(self, profile_key='@DEFAULT@'):
|
||||
profile = self.getProfileName(profile_key)
|
||||
if not profile:
|
||||
error('Asking contacts for a non-existant profile')
|
||||
return {}
|
||||
if not self.presenceStatus.has_key(profile):
|
||||
self.presenceStatus[profile] = {}
|
||||
debug ("Memory getPresenceStatus (%s)", self.presenceStatus[profile])
|
||||
return self.presenceStatus[profile]
|
||||
|
||||
def getParamA(self, name, category, attr="value", profile_key="@DEFAULT@"):
|
||||
return self.params.getParamA(name, category, attr, profile_key)
|
||||
|
|
|
|||
Loading…
Reference in a new issue