Merge branch 'master' into develop
This commit is contained in:
commit
060c9ab679
10 changed files with 51 additions and 53 deletions
|
@ -45,7 +45,7 @@ The latest source code for SleekXMPP may be found on `Github
|
|||
``develop`` branch.
|
||||
|
||||
**Latest Release**
|
||||
- `1.1.8 <http://github.com/fritzy/SleekXMPP/zipball/1.1.8>`_
|
||||
- `1.1.9 <http://github.com/fritzy/SleekXMPP/zipball/1.1.9>`_
|
||||
|
||||
**Develop Releases**
|
||||
- `Latest Develop Version <http://github.com/fritzy/SleekXMPP/zipball/develop>`_
|
||||
|
@ -74,6 +74,7 @@ help with SleekXMPP.
|
|||
**Chat**
|
||||
`sleek@conference.jabber.org <xmpp:sleek@conference.jabber.org?join>`_
|
||||
|
||||
|
||||
Documentation and Testing
|
||||
-------------------------
|
||||
Documentation can be found both inline in the code, and as a Sphinx project in ``/docs``.
|
||||
|
|
|
@ -91,13 +91,13 @@ class BaseXMPP(XMLStream):
|
|||
#: owner JIDs, as in the case for components. For clients
|
||||
#: which only have a single JID, see :attr:`client_roster`.
|
||||
self.roster = roster.Roster(self)
|
||||
self.roster.add(self.boundjid.bare)
|
||||
self.roster.add(self.boundjid)
|
||||
|
||||
#: The single roster for the bound JID. This is the
|
||||
#: equivalent of::
|
||||
#:
|
||||
#: self.roster[self.boundjid.bare]
|
||||
self.client_roster = self.roster[self.boundjid.bare]
|
||||
self.client_roster = self.roster[self.boundjid]
|
||||
|
||||
#: The distinction between clients and components can be
|
||||
#: important, primarily for choosing how to handle the
|
||||
|
@ -691,17 +691,13 @@ class BaseXMPP(XMLStream):
|
|||
msg['to'] = self.boundjid
|
||||
self.event('message', msg)
|
||||
|
||||
def _handle_available(self, presence):
|
||||
pto = presence['to'].bare
|
||||
pfrom = presence['from'].bare
|
||||
self.roster[pto][pfrom].handle_available(presence)
|
||||
def _handle_available(self, pres):
|
||||
self.roster[pres['to']][pres['from']].handle_available(pres)
|
||||
|
||||
def _handle_unavailable(self, presence):
|
||||
pto = presence['to'].bare
|
||||
pfrom = presence['from'].bare
|
||||
self.roster[pto][pfrom].handle_unavailable(presence)
|
||||
def _handle_unavailable(self, pres):
|
||||
self.roster[pres['to']][pres['from']].handle_unavailable(pres)
|
||||
|
||||
def _handle_new_subscription(self, stanza):
|
||||
def _handle_new_subscription(self, pres):
|
||||
"""Attempt to automatically handle subscription requests.
|
||||
|
||||
Subscriptions will be approved if the request is from
|
||||
|
@ -713,8 +709,8 @@ class BaseXMPP(XMLStream):
|
|||
If a subscription is accepted, a request for a mutual
|
||||
subscription will be sent if :attr:`auto_subscribe` is ``True``.
|
||||
"""
|
||||
roster = self.roster[stanza['to'].bare]
|
||||
item = self.roster[stanza['to'].bare][stanza['from'].bare]
|
||||
roster = self.roster[pres['to']]
|
||||
item = self.roster[pres['to']][pres['from']]
|
||||
if item['whitelisted']:
|
||||
item.authorize()
|
||||
elif roster.auto_authorize:
|
||||
|
@ -724,30 +720,20 @@ class BaseXMPP(XMLStream):
|
|||
elif roster.auto_authorize == False:
|
||||
item.unauthorize()
|
||||
|
||||
def _handle_removed_subscription(self, presence):
|
||||
pto = presence['to'].bare
|
||||
pfrom = presence['from'].bare
|
||||
self.roster[pto][pfrom].unauthorize()
|
||||
def _handle_removed_subscription(self, pres):
|
||||
self.roster[pres['to']][pres['from']].handle_unauthorize(pres)
|
||||
|
||||
def _handle_subscribe(self, presence):
|
||||
pto = presence['to'].bare
|
||||
pfrom = presence['from'].bare
|
||||
self.roster[pto][pfrom].handle_subscribe(presence)
|
||||
def _handle_subscribe(self, pres):
|
||||
self.roster[pres['to']][pres['from']].handle_subscribe(pres)
|
||||
|
||||
def _handle_subscribed(self, presence):
|
||||
pto = presence['to'].bare
|
||||
pfrom = presence['from'].bare
|
||||
self.roster[pto][pfrom].handle_subscribed(presence)
|
||||
def _handle_subscribed(self, pres):
|
||||
self.roster[pres['to']][pres['from']].handle_subscribed(pres)
|
||||
|
||||
def _handle_unsubscribe(self, presence):
|
||||
pto = presence['to'].bare
|
||||
pfrom = presence['from'].bare
|
||||
self.roster[pto][pfrom].handle_unsubscribe(presence)
|
||||
def _handle_unsubscribe(self, pres):
|
||||
self.roster[pres['to']][pres['from']].handle_unsubscribe(pres)
|
||||
|
||||
def _handle_unsubscribed(self, presence):
|
||||
pto = presence['to'].bare
|
||||
pfrom = presence['from'].bare
|
||||
self.roster[pto][pfrom].handle_unsubscribed(presence)
|
||||
def _handle_unsubscribed(self, pres):
|
||||
self.roster[pres['to']][pres['from']].handle_unsubscribed(pres)
|
||||
|
||||
def _handle_presence(self, presence):
|
||||
"""Process incoming presence stanzas.
|
||||
|
|
|
@ -158,10 +158,8 @@ class ComponentXMPP(BaseXMPP):
|
|||
"""
|
||||
self.session_bind_event.set()
|
||||
self.session_started_event.set()
|
||||
self.event("session_bind", self.xmpp.boundjid.full, direct=True)
|
||||
self.event("session_bind", self.xmpp.boundjid, direct=True)
|
||||
self.event("session_start")
|
||||
|
||||
def _handle_probe(self, presence):
|
||||
pto = presence['to'].bare
|
||||
pfrom = presence['from'].bare
|
||||
self.roster[pto][pfrom].handle_probe(presence)
|
||||
def _handle_probe(self, pres):
|
||||
self.roster[pres['to']][pres['from']].handle_probe(pres)
|
||||
|
|
|
@ -50,7 +50,7 @@ class FeatureBind(BasePlugin):
|
|||
|
||||
self.xmpp.set_jid(response['bind']['jid'])
|
||||
self.xmpp.bound = True
|
||||
self.xmpp.event('session_bind', self.xmpp.boundjid.full, direct=True)
|
||||
self.xmpp.event('session_bind', self.xmpp.boundjid, direct=True)
|
||||
self.xmpp.session_bind_event.set()
|
||||
|
||||
self.xmpp.features.add('bind')
|
||||
|
|
|
@ -47,7 +47,7 @@ __all__ = [
|
|||
'xep_0172', # User Nickname
|
||||
'xep_0184', # Message Receipts
|
||||
'xep_0186', # Invisible Command
|
||||
'xep_0191', # Simple Communications Blocking
|
||||
'xep_0191', # Blocking Command
|
||||
'xep_0198', # Stream Management
|
||||
'xep_0199', # Ping
|
||||
'xep_0202', # Entity Time
|
||||
|
|
|
@ -22,7 +22,7 @@ log = logging.getLogger(__name__)
|
|||
class XEP_0191(BasePlugin):
|
||||
|
||||
name = 'xep_0191'
|
||||
description = 'XEP-0191: Simple Communications Blocking'
|
||||
description = 'XEP-0191: Blocking Command'
|
||||
dependencies = set(['xep_0030'])
|
||||
stanza = stanza
|
||||
|
||||
|
|
|
@ -94,10 +94,12 @@ class Roster(object):
|
|||
Arguments:
|
||||
key -- Return the roster for this JID.
|
||||
"""
|
||||
if isinstance(key, JID):
|
||||
key = key.bare
|
||||
if key is None:
|
||||
key = self.xmpp.boundjid.bare
|
||||
key = self.xmpp.boundjid
|
||||
if not isinstance(key, JID):
|
||||
key = JID(key)
|
||||
key = key.bare
|
||||
|
||||
if key not in self._rosters:
|
||||
self.add(key)
|
||||
self._rosters[key].auto_authorize = self.auto_authorize
|
||||
|
@ -119,8 +121,10 @@ class Roster(object):
|
|||
Arguments:
|
||||
node -- The JID for the new roster node.
|
||||
"""
|
||||
if isinstance(node, JID):
|
||||
node = node.bare
|
||||
if not isinstance(node, JID):
|
||||
node = JID(node)
|
||||
|
||||
node = node.bare
|
||||
if node not in self._rosters:
|
||||
self._rosters[node] = RosterNode(self.xmpp, node, self.db)
|
||||
|
||||
|
|
|
@ -89,8 +89,11 @@ class RosterNode(object):
|
|||
|
||||
A new item entry will be created if one does not already exist.
|
||||
"""
|
||||
if isinstance(key, JID):
|
||||
key = key.bare
|
||||
if key is None:
|
||||
key = JID('')
|
||||
if not isinstance(key, JID):
|
||||
key = JID(key)
|
||||
key = key.bare
|
||||
if key not in self._jids:
|
||||
self.add(key, save=True)
|
||||
return self._jids[key]
|
||||
|
@ -101,8 +104,11 @@ class RosterNode(object):
|
|||
|
||||
To remove an item from the server, use the remove() method.
|
||||
"""
|
||||
if isinstance(key, JID):
|
||||
key = key.bare
|
||||
if key is None:
|
||||
key = JID('')
|
||||
if not isinstance(key, JID):
|
||||
key = JID(key)
|
||||
key = key.bare
|
||||
if key in self._jids:
|
||||
del self._jids[key]
|
||||
|
||||
|
|
|
@ -9,5 +9,5 @@
|
|||
# We don't want to have to import the entire library
|
||||
# just to get the version info for setup.py
|
||||
|
||||
__version__ = '1.1.8'
|
||||
__version_info__ = (1, 1, 8, '', 0)
|
||||
__version__ = '1.1.9'
|
||||
__version_info__ = (1, 1, 9, '', 0)
|
||||
|
|
|
@ -143,3 +143,6 @@ class JID(object):
|
|||
def __hash__(self):
|
||||
"""Hash a JID based on the string version of its full JID."""
|
||||
return hash(self.full)
|
||||
|
||||
def __copy__(self):
|
||||
return JID(self.jid)
|
||||
|
|
Loading…
Reference in a new issue