tools: renamed tools.jid.JID attribute "short" to "bare"
This commit is contained in:
parent
a154d9acbb
commit
36cea6fc91
16 changed files with 94 additions and 94 deletions
|
|
@ -82,7 +82,7 @@ class Chat(Window, QuickChat):
|
|||
header=self.__getHeader(self.content[idx])
|
||||
msg=self.content[idx][2]
|
||||
part=0 #part of the text
|
||||
if JID(self.content[idx][1]).short==self.host.profiles[self.host.profile]['whoami'].short:
|
||||
if JID(self.content[idx][1]).bare==self.host.profiles[self.host.profile]['whoami'].bare:
|
||||
att_header=curses.color_pair(1)
|
||||
else:
|
||||
att_header=curses.color_pair(2)
|
||||
|
|
@ -140,7 +140,7 @@ class Chat(Window, QuickChat):
|
|||
timestamp=str(current_time)
|
||||
if self.last_history and current_time - float(self.last_history) < 5: #FIXME: Q&D fix to avoid double print on new chat window
|
||||
return
|
||||
self.content.append([timestamp,jid.short,msg])
|
||||
self.content.append([timestamp,jid.bare,msg])
|
||||
self.update()
|
||||
|
||||
def handleKey(self, k):
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ class ContactList(Window, QuickContactList):
|
|||
def replace(self, jid, groups=None):
|
||||
"""add a contact to the list"""
|
||||
name = self.CM.getAttr(jid,'name')
|
||||
self.jid_list.append(jid.short)
|
||||
self.jid_list.append(jid.bare)
|
||||
self.update()
|
||||
|
||||
def indexUp(self):
|
||||
|
|
@ -131,7 +131,7 @@ class ContactList(Window, QuickContactList):
|
|||
|
||||
def remove(self, jid):
|
||||
"""remove a contact from the list"""
|
||||
self.jid_list.remove(jid.short)
|
||||
self.jid_list.remove(jid.bare)
|
||||
if self.__index >= len(self.jid_list) and self.__index > 0: #if select index is out of border, we put it on the last contact
|
||||
self.__index = len(self.jid_list)-1
|
||||
self.update()
|
||||
|
|
@ -264,8 +264,8 @@ class SortilegeApp(QuickApp):
|
|||
"""Called when a contact is selected in contact list."""
|
||||
jid=JID(jid_txt)
|
||||
debug (_("contact choosed: %s"), jid)
|
||||
self.showChat(jid.short)
|
||||
self.statusBar.remove_item(jid.short)
|
||||
self.showChat(jid.bare)
|
||||
self.statusBar.remove_item(jid.bare)
|
||||
if len(self.statusBar)==0:
|
||||
self.statusBar.hide()
|
||||
self.sizer.update()
|
||||
|
|
@ -298,14 +298,14 @@ class SortilegeApp(QuickApp):
|
|||
QuickApp.newMessage(self, from_jid, msg, type, to_jid, profile)
|
||||
sender=JID(from_jid)
|
||||
addr=JID(to_jid)
|
||||
win = addr if sender.short == self.whoami.short else sender #FIXME: duplicate code with QuickApp
|
||||
win = addr if sender.bare == self.whoami.bare else sender #FIXME: duplicate code with QuickApp
|
||||
if (self.currentChat==None):
|
||||
self.currentChat=win.short
|
||||
self.showChat(win.short)
|
||||
self.currentChat=win.bare
|
||||
self.showChat(win.bare)
|
||||
|
||||
# we show the window in the status bar
|
||||
if not self.currentChat == win.short:
|
||||
self.statusBar.add_item(win.short)
|
||||
if not self.currentChat == win.bare:
|
||||
self.statusBar.add_item(win.bare)
|
||||
self.statusBar.show()
|
||||
self.sizer.update()
|
||||
self.statusBar.update()
|
||||
|
|
|
|||
|
|
@ -321,7 +321,7 @@ class JP(object):
|
|||
#if the resource is not given, we try to add the last known resource
|
||||
last_resource = self.bridge.getLastResource(param_jid, self.options.profile)
|
||||
if last_resource:
|
||||
return "%s/%s" % (_jid.short, last_resource)
|
||||
return "%s/%s" % (_jid.bare, last_resource)
|
||||
return param_jid
|
||||
|
||||
|
||||
|
|
@ -334,7 +334,7 @@ class JP(object):
|
|||
if confirm_type == "FILE_TRANSFER":
|
||||
if not self.options.wait_file:
|
||||
return
|
||||
if self.dest_jids and not JID(data['from']).short in [JID(_jid).short for _jid in self.dest_jids]:
|
||||
if self.dest_jids and not JID(data['from']).bare in [JID(_jid).bare for _jid in self.dest_jids]:
|
||||
return #file is not sent by a filtered jid
|
||||
|
||||
answer_data["dest_path"] = os.getcwd()+'/'+data['filename']
|
||||
|
|
@ -354,7 +354,7 @@ class JP(object):
|
|||
elif confirm_type == "PIPE_TRANSFER":
|
||||
if not self.options.pipe_in:
|
||||
return
|
||||
if self.dest_jids and not JID(data['from']).short in [JID(_jid).short for _jid in self.dest_jids]:
|
||||
if self.dest_jids and not JID(data['from']).bare in [JID(_jid).bare for _jid in self.dest_jids]:
|
||||
return #pipe stream is not sent by a filtered jid
|
||||
|
||||
tmp_dir = tempfile.mkdtemp()
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@ class Chat(urwid.WidgetWrap, QuickChat):
|
|||
#We ignore click on our own nick
|
||||
return
|
||||
#we have a click on a nick, we add the private conversation to the contact_list
|
||||
full_jid = JID("%s/%s" % (self.target.short, nick))
|
||||
full_jid = JID("%s/%s" % (self.target.bare, nick))
|
||||
new_jid = escapePrivate(full_jid)
|
||||
if new_jid not in self.host.contact_list:
|
||||
self.host.contact_list.add(new_jid)
|
||||
|
|
@ -340,9 +340,9 @@ class Chat(urwid.WidgetWrap, QuickChat):
|
|||
def onFileSelected(self, filepath):
|
||||
self.host.removePopUp()
|
||||
#FIXME: check last_resource: what if self.target.resource exists ?
|
||||
last_resource = self.host.bridge.getLastResource(unicode(self.target.short), self.host.profile)
|
||||
last_resource = self.host.bridge.getLastResource(unicode(self.target.bare), self.host.profile)
|
||||
if last_resource:
|
||||
full_jid = JID("%s/%s" % (self.target.short, last_resource))
|
||||
full_jid = JID("%s/%s" % (self.target.bare, last_resource))
|
||||
else:
|
||||
full_jid = self.target
|
||||
progress_id = self.host.bridge.sendFile(full_jid, filepath, {}, self.host.profile)
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ class ContactList(urwid.WidgetWrap, QuickContactList):
|
|||
|
||||
def __contains__(self, jid):
|
||||
for group in self.groups:
|
||||
if jid.short in self.groups[group][1]:
|
||||
if jid.bare in self.groups[group][1]:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
|
@ -108,7 +108,7 @@ class ContactList(urwid.WidgetWrap, QuickContactList):
|
|||
|
||||
def putAlert(self, jid):
|
||||
"""Put an alert on the jid to get attention from user (e.g. for new message)"""
|
||||
self.alert_jid.add(jid.short)
|
||||
self.alert_jid.add(jid.bare)
|
||||
self.update()
|
||||
|
||||
def __groupClicked(self, group_wid):
|
||||
|
|
@ -153,7 +153,7 @@ class ContactList(urwid.WidgetWrap, QuickContactList):
|
|||
and not contact in self.alert_jid and contact != self.selected):
|
||||
continue
|
||||
show_icon, show_attr = const_SHOW_ICON.get(show,('','default'))
|
||||
contact_disp = ('alert' if contact in self.alert_jid else show_attr, nick or name or jid.node or jid.short)
|
||||
contact_disp = ('alert' if contact in self.alert_jid else show_attr, nick or name or jid.node or jid.bare)
|
||||
display = [ show_icon + " " , contact_disp]
|
||||
if self.show_status:
|
||||
status_disp = ('status',"\n " + status) if status else ""
|
||||
|
|
@ -180,7 +180,7 @@ class ContactList(urwid.WidgetWrap, QuickContactList):
|
|||
jid=JID(special)
|
||||
name = self.getCache(jid, 'name')
|
||||
nick = self.getCache(jid, 'nick')
|
||||
special_disp = ('alert' if special in self.alert_jid else 'default', nick or name or jid.node or jid.short)
|
||||
special_disp = ('alert' if special in self.alert_jid else 'default', nick or name or jid.node or jid.bare)
|
||||
display = [ " " , special_disp]
|
||||
header = '(*) ' if special in self.alert_jid else ''
|
||||
widget = sat_widgets.SelectableText(display,
|
||||
|
|
@ -233,7 +233,7 @@ class ContactList(urwid.WidgetWrap, QuickContactList):
|
|||
def replace(self, jid, groups=None, attributes=None):
|
||||
"""add a contact to the list if doesn't exist, else update it"""
|
||||
QuickContactList.replace(self, jid, groups, attributes)
|
||||
if jid.short in self.specials:
|
||||
if jid.bare in self.specials:
|
||||
return
|
||||
if not groups:
|
||||
groups = [None]
|
||||
|
|
@ -244,7 +244,7 @@ class ContactList(urwid.WidgetWrap, QuickContactList):
|
|||
for group in groups:
|
||||
if not self.groups.has_key(group):
|
||||
self.groups[group] = [True,set()] #[unfold,list_of_contacts]
|
||||
self.groups[group][1].add(jid.short)
|
||||
self.groups[group][1].add(jid.bare)
|
||||
self.update()
|
||||
|
||||
def remove(self, jid):
|
||||
|
|
@ -253,8 +253,8 @@ class ContactList(urwid.WidgetWrap, QuickContactList):
|
|||
groups_to_remove = []
|
||||
for group in self.groups:
|
||||
contacts = self.groups[group][1]
|
||||
if jid.short in contacts:
|
||||
contacts.remove(jid.short)
|
||||
if jid.bare in contacts:
|
||||
contacts.remove(jid.bare)
|
||||
if not len(contacts):
|
||||
groups_to_remove.append(group)
|
||||
for group in groups_to_remove:
|
||||
|
|
@ -275,7 +275,7 @@ class ContactList(urwid.WidgetWrap, QuickContactList):
|
|||
if None in self.groups:
|
||||
folded, group_jids = self.groups[None]
|
||||
for group_jid in group_jids:
|
||||
if JID(group_jid).short == special_jid.short:
|
||||
if JID(group_jid).bare == special_jid.bare:
|
||||
group_jids.remove(group_jid)
|
||||
break
|
||||
self.update()
|
||||
|
|
@ -286,5 +286,5 @@ class ContactList(urwid.WidgetWrap, QuickContactList):
|
|||
|
||||
def updatePresence(self, jid, show, priority, statuses):
|
||||
#XXX: for the moment, we ignore presence updates for special entities
|
||||
if jid.short not in self.specials:
|
||||
if jid.bare not in self.specials:
|
||||
QuickContactList.updatePresence(self, jid, show, priority, statuses)
|
||||
|
|
|
|||
|
|
@ -374,13 +374,13 @@ class PrimitivusApp(QuickApp, InputHistory):
|
|||
def newMessage(self, from_jid, to_jid, msg, _type, extra, profile):
|
||||
QuickApp.newMessage(self, from_jid, to_jid, msg, _type, extra, profile)
|
||||
|
||||
if not from_jid in self.contact_list and from_jid.short != self.profiles[profile]['whoami'].short:
|
||||
if not from_jid in self.contact_list and from_jid.bare != self.profiles[profile]['whoami'].bare:
|
||||
#XXX: needed to show entities which haven't sent any
|
||||
# presence information and which are not in roster
|
||||
#TODO: put these entities in a "not in roster" list
|
||||
self.contact_list.replace(from_jid)
|
||||
|
||||
if JID(self.contact_list.selected).short != from_jid.short:
|
||||
if JID(self.contact_list.selected).bare != from_jid.bare:
|
||||
self.contact_list.putAlert(from_jid)
|
||||
|
||||
def _dialogOkCb(self, widget, data):
|
||||
|
|
@ -518,7 +518,7 @@ class PrimitivusApp(QuickApp, InputHistory):
|
|||
self.removePopUp()
|
||||
jid=JID(edit.get_edit_text())
|
||||
if jid.is_valid():
|
||||
self.bridge.addContact(jid.short, profile_key=self.profile)
|
||||
self.bridge.addContact(jid.bare, profile_key=self.profile)
|
||||
else:
|
||||
message = _("'%s' is an invalid JID !") % jid
|
||||
error (message)
|
||||
|
|
@ -623,7 +623,7 @@ class PrimitivusApp(QuickApp, InputHistory):
|
|||
self.chat_wins[win].updateChatState(state)
|
||||
return
|
||||
|
||||
from_bare = JID(from_jid_s).short
|
||||
from_bare = JID(from_jid_s).bare
|
||||
if from_bare in self.chat_wins:
|
||||
self.chat_wins[from_bare].updateChatState(state)
|
||||
|
||||
|
|
|
|||
|
|
@ -254,7 +254,7 @@ class QuickApp(object):
|
|||
from_jid = JID(from_jid_s)
|
||||
to_jid = JID(to_jid_s)
|
||||
|
||||
from_me = from_jid.short == self.profiles[profile]['whoami'].short
|
||||
from_me = from_jid.bare == self.profiles[profile]['whoami'].bare
|
||||
win = to_jid if from_me else from_jid
|
||||
|
||||
if _type != "groupchat" and self.contact_list.getSpecial(win) == "MUC":
|
||||
|
|
@ -273,14 +273,14 @@ class QuickApp(object):
|
|||
self.newMessage(from_jid, to_jid, msg, _type, extra, profile)
|
||||
|
||||
def newMessage(self, from_jid, to_jid, msg, _type, extra, profile):
|
||||
from_me = from_jid.short == self.profiles[profile]['whoami'].short
|
||||
from_me = from_jid.bare == self.profiles[profile]['whoami'].bare
|
||||
win = to_jid if from_me else from_jid
|
||||
|
||||
self.current_action_ids = set()
|
||||
self.current_action_ids_cb = {}
|
||||
|
||||
timestamp = extra.get('archive')
|
||||
self.chat_wins[win.short].printMessage(from_jid, msg, profile, float(timestamp) if timestamp else '')
|
||||
self.chat_wins[win.bare].printMessage(from_jid, msg, profile, float(timestamp) if timestamp else '')
|
||||
|
||||
def sendMessage(self, to_jid, message, subject='', mess_type="auto", options={}, profile_key="@NONE@"):
|
||||
if to_jid.startswith(const_PRIVATE_PREFIX):
|
||||
|
|
@ -303,9 +303,9 @@ class QuickApp(object):
|
|||
return
|
||||
debug (_("presence update for %(jid)s (show=%(show)s, priority=%(priority)s, statuses=%(statuses)s) [profile:%(profile)s]") % {'jid':jabber_id, 'show':show, 'priority':priority, 'statuses':statuses, 'profile':profile})
|
||||
from_jid=JID(jabber_id)
|
||||
debug ("from_jid.short=%(from_jid)s whoami.short=%(whoami)s" % {'from_jid':from_jid.short, 'whoami':self.profiles[profile]['whoami'].short})
|
||||
debug ("from_jid.bare=%(from_jid)s whoami.bare=%(whoami)s" % {'from_jid':from_jid.bare, 'whoami':self.profiles[profile]['whoami'].bare})
|
||||
|
||||
if from_jid.short==self.profiles[profile]['whoami'].short:
|
||||
if from_jid.bare==self.profiles[profile]['whoami'].bare:
|
||||
if not type:
|
||||
self.setStatusOnline(True)
|
||||
elif type=="unavailable":
|
||||
|
|
@ -317,8 +317,8 @@ class QuickApp(object):
|
|||
if show != 'unavailable':
|
||||
|
||||
#FIXME: must be moved in a plugin
|
||||
if from_jid.short in self.profiles[profile]['watched'] and not from_jid.short in self.profiles[profile]['onlineContact']:
|
||||
self.showAlert(_("Watched jid [%s] is connected !") % from_jid.short)
|
||||
if from_jid.bare in self.profiles[profile]['watched'] and not from_jid.bare in self.profiles[profile]['onlineContact']:
|
||||
self.showAlert(_("Watched jid [%s] is connected !") % from_jid.bare)
|
||||
|
||||
self.profiles[profile]['onlineContact'].add(from_jid) #FIXME onlineContact is useless with CM, must be removed
|
||||
|
||||
|
|
@ -498,9 +498,9 @@ class QuickApp(object):
|
|||
def _subscribe_cb(self, answer, data):
|
||||
entity, profile = data
|
||||
if answer:
|
||||
self.bridge.subscription("subscribed", entity.short, profile_key = profile)
|
||||
self.bridge.subscription("subscribed", entity.bare, profile_key = profile)
|
||||
else:
|
||||
self.bridge.subscription("unsubscribed", entity.short, profile_key = profile)
|
||||
self.bridge.subscription("unsubscribed", entity.bare, profile_key = profile)
|
||||
|
||||
def subscribe(self, type, raw_jid, profile):
|
||||
"""Called when a subsciption management signal is received"""
|
||||
|
|
@ -509,13 +509,13 @@ class QuickApp(object):
|
|||
entity = JID(raw_jid)
|
||||
if type=="subscribed":
|
||||
# this is a subscription confirmation, we just have to inform user
|
||||
self.showDialog(_("The contact %s has accepted your subscription") % entity.short, _('Subscription confirmation'))
|
||||
self.showDialog(_("The contact %s has accepted your subscription") % entity.bare, _('Subscription confirmation'))
|
||||
elif type=="unsubscribed":
|
||||
# this is a subscription refusal, we just have to inform user
|
||||
self.showDialog(_("The contact %s has refused your subscription") % entity.short, _('Subscription refusal'), 'error')
|
||||
self.showDialog(_("The contact %s has refused your subscription") % entity.bare, _('Subscription refusal'), 'error')
|
||||
elif type=="subscribe":
|
||||
# this is a subscriptionn request, we have to ask for user confirmation
|
||||
answer = self.showDialog(_("The contact %s wants to subscribe to your presence.\nDo you accept ?") % entity.short, _('Subscription confirmation'), 'yes/no', answer_cb = self._subscribe_cb, answer_data=(entity, profile))
|
||||
answer = self.showDialog(_("The contact %s wants to subscribe to your presence.\nDo you accept ?") % entity.bare, _('Subscription confirmation'), 'yes/no', answer_cb = self._subscribe_cb, answer_data=(entity, profile))
|
||||
|
||||
def showDialog(self, message, title, type="info", answer_cb = None):
|
||||
raise NotImplementedError
|
||||
|
|
@ -539,7 +539,7 @@ class QuickApp(object):
|
|||
target = JID(jid)
|
||||
self.contact_list.remove(target)
|
||||
try:
|
||||
self.profiles[profile]['onlineContact'].remove(target.short)
|
||||
self.profiles[profile]['onlineContact'].remove(target.bare)
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
|
|
|
|||
|
|
@ -110,15 +110,15 @@ class QuickChat(object):
|
|||
if self.target.startswith(const_PRIVATE_PREFIX):
|
||||
target = unescapePrivate(self.target)
|
||||
else:
|
||||
target = self.target.short
|
||||
target = self.target.bare
|
||||
|
||||
self.host.bridge.getHistory(self.host.profiles[profile]['whoami'].short, target, 20, profile=profile, callback=onHistory, errback=onHistoryError)
|
||||
self.host.bridge.getHistory(self.host.profiles[profile]['whoami'].bare, target, 20, profile=profile, callback=onHistory, errback=onHistoryError)
|
||||
|
||||
def _get_nick(self, jid):
|
||||
"""Return nick of this jid when possible"""
|
||||
if self.target.startswith(const_PRIVATE_PREFIX):
|
||||
unescaped = unescapePrivate(self.target)
|
||||
if jid.startswith(const_PRIVATE_PREFIX) or unescaped.short == jid.short:
|
||||
if jid.startswith(const_PRIVATE_PREFIX) or unescaped.bare == jid.bare:
|
||||
return unescaped.resource
|
||||
return jid.resource if self.type == "group" else (self.host.contact_list.getCache(jid,'nick') or self.host.contact_list.getCache(jid,'name') or jid.node)
|
||||
|
||||
|
|
@ -126,7 +126,7 @@ class QuickChat(object):
|
|||
"""Print message in chat window. Must be implemented by child class"""
|
||||
jid=JID(from_jid)
|
||||
nick = self._get_nick(jid)
|
||||
mymess = (jid.resource == self.nick) if self.type == "group" else (jid.short == self.host.profiles[profile]['whoami'].short) #mymess = True if message comes from local user
|
||||
mymess = (jid.resource == self.nick) if self.type == "group" else (jid.bare == self.host.profiles[profile]['whoami'].bare) #mymess = True if message comes from local user
|
||||
if msg.startswith('/me '):
|
||||
self.printInfo('* %s %s' % (nick, msg[4:]),type='me', timestamp=timestamp)
|
||||
return
|
||||
|
|
|
|||
|
|
@ -30,10 +30,10 @@ class QuickChatList(dict):
|
|||
|
||||
def __getitem__(self, to_jid):
|
||||
target = JID(to_jid)
|
||||
if not target.short in self:
|
||||
if not target.bare in self:
|
||||
#we have to create the chat win
|
||||
self[target.short] = self.createChat(target)
|
||||
return dict.__getitem__(self, target.short)
|
||||
self[target.bare] = self.createChat(target)
|
||||
return dict.__getitem__(self, target.bare)
|
||||
|
||||
def createChat(self, target):
|
||||
raise NotImplementedError
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ class QuickContactList(object):
|
|||
|
||||
def getCache(self, jid, name):
|
||||
try:
|
||||
jid_cache = self._cache[jid.short]
|
||||
jid_cache = self._cache[jid.bare]
|
||||
if name == 'status': #XXX: we get the first status for 'status' key
|
||||
return jid_cache['statuses'].get('default','')
|
||||
return jid_cache[name]
|
||||
|
|
@ -42,7 +42,7 @@ class QuickContactList(object):
|
|||
return None
|
||||
|
||||
def setCache(self, jid, name, value):
|
||||
jid_cache = self._cache.setdefault(jid.short, {})
|
||||
jid_cache = self._cache.setdefault(jid.bare, {})
|
||||
jid_cache[name] = value
|
||||
|
||||
def __contains__(self, jid):
|
||||
|
|
@ -60,7 +60,7 @@ class QuickContactList(object):
|
|||
def remove(self, jid):
|
||||
"""remove a contact from the list"""
|
||||
try:
|
||||
del self.specials[jid.short]
|
||||
del self.specials[jid.bare]
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
|
|
@ -70,7 +70,7 @@ class QuickContactList(object):
|
|||
|
||||
def getSpecial(self, jid):
|
||||
"""Return special type of jid, or None if it's not special"""
|
||||
return self.specials.get(jid.short)
|
||||
return self.specials.get(jid.bare)
|
||||
|
||||
def setSpecial(self, jid, _type, show=False):
|
||||
"""Set entity as a special
|
||||
|
|
@ -78,7 +78,7 @@ class QuickContactList(object):
|
|||
@param _type: special type (e.g.: "MUC")
|
||||
@param show: True to display the dialog to chat with this entity
|
||||
"""
|
||||
self.specials[jid.short] = _type
|
||||
self.specials[jid.bare] = _type
|
||||
|
||||
def updatePresence(self, jid, show, priority, statuses):
|
||||
"""Update entity's presence status
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ class QuickContactManagement(object):
|
|||
self.__contactlist = {}
|
||||
|
||||
def __contains__(self, entity):
|
||||
return entity.short in self.__contactlist
|
||||
return entity.bare in self.__contactlist
|
||||
|
||||
def clear(self):
|
||||
"""Clear all the contact list"""
|
||||
|
|
@ -38,13 +38,13 @@ class QuickContactManagement(object):
|
|||
|
||||
def add(self, entity):
|
||||
"""Add contact to the list, update resources"""
|
||||
if not self.__contactlist.has_key(entity.short):
|
||||
self.__contactlist[entity.short] = {'resources':[]}
|
||||
if not self.__contactlist.has_key(entity.bare):
|
||||
self.__contactlist[entity.bare] = {'resources':[]}
|
||||
if not entity.resource:
|
||||
return
|
||||
if entity.resource in self.__contactlist[entity.short]['resources']:
|
||||
self.__contactlist[entity.short]['resources'].remove(entity.resource)
|
||||
self.__contactlist[entity.short]['resources'].append(entity.resource)
|
||||
if entity.resource in self.__contactlist[entity.bare]['resources']:
|
||||
self.__contactlist[entity.bare]['resources'].remove(entity.resource)
|
||||
self.__contactlist[entity.bare]['resources'].append(entity.resource)
|
||||
|
||||
def getContFromGroup(self, group):
|
||||
"""Return all contacts which are in given group"""
|
||||
|
|
@ -60,28 +60,28 @@ class QuickContactManagement(object):
|
|||
@param entity: jid of the contact
|
||||
@param name: name of the attribute
|
||||
@return: asked attribute"""
|
||||
if self.__contactlist.has_key(entity.short):
|
||||
if self.__contactlist.has_key(entity.bare):
|
||||
if name == 'status': #FIXME: for the moment, we only use the first status
|
||||
if self.__contactlist[entity.short]['statuses']:
|
||||
return self.__contactlist[entity.short]['statuses'].values()[0]
|
||||
if self.__contactlist[entity.short].has_key(name):
|
||||
return self.__contactlist[entity.short][name]
|
||||
if self.__contactlist[entity.bare]['statuses']:
|
||||
return self.__contactlist[entity.bare]['statuses'].values()[0]
|
||||
if self.__contactlist[entity.bare].has_key(name):
|
||||
return self.__contactlist[entity.bare][name]
|
||||
else:
|
||||
debug(_('Trying to get attribute for an unknown contact'))
|
||||
return None
|
||||
|
||||
def isConnected(self, entity):
|
||||
"""Tell if the contact is online"""
|
||||
return self.__contactlist.has_key(entity.short)
|
||||
return self.__contactlist.has_key(entity.bare)
|
||||
|
||||
def remove(self, entity):
|
||||
"""remove resource. If no more resource is online or is no resource is specified, contact is deleted"""
|
||||
try:
|
||||
if entity.resource:
|
||||
self.__contactlist[entity.short]['resources'].remove(entity.resource)
|
||||
if not entity.resource or not self.__contactlist[entity.short]['resources']:
|
||||
self.__contactlist[entity.bare]['resources'].remove(entity.resource)
|
||||
if not entity.resource or not self.__contactlist[entity.bare]['resources']:
|
||||
#no more resource available: the contact seems really disconnected
|
||||
del self.__contactlist[entity.short]
|
||||
del self.__contactlist[entity.bare]
|
||||
except KeyError:
|
||||
error(_('INTERNAL ERROR: Key error'))
|
||||
raise
|
||||
|
|
@ -92,11 +92,11 @@ class QuickContactManagement(object):
|
|||
@param key: name of the attribute
|
||||
@param value: value of the attribute
|
||||
"""
|
||||
if self.__contactlist.has_key(entity.short):
|
||||
self.__contactlist[entity.short][key] = value
|
||||
if self.__contactlist.has_key(entity.bare):
|
||||
self.__contactlist[entity.bare][key] = value
|
||||
else:
|
||||
debug (_('Trying to update an unknown contact: %s'), entity.short)
|
||||
debug (_('Trying to update an unknown contact: %s'), entity.bare)
|
||||
|
||||
def get_full(self, entity):
|
||||
return entity.short+'/'+self.__contactlist[entity.short]['resources'][-1]
|
||||
return entity.bare+'/'+self.__contactlist[entity.bare]['resources'][-1]
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ from os.path import exists, splitext
|
|||
|
||||
def escapePrivate(ori_jid):
|
||||
"""Escape a private jid"""
|
||||
return JID(const_PRIVATE_PREFIX + ori_jid.short + '@' + ori_jid.resource)
|
||||
return JID(const_PRIVATE_PREFIX + ori_jid.bare + '@' + ori_jid.resource)
|
||||
|
||||
def unescapePrivate(escaped_jid):
|
||||
if not escaped_jid.startswith(const_PRIVATE_PREFIX):
|
||||
|
|
|
|||
|
|
@ -199,7 +199,7 @@ class Chat(wx.Frame, QuickChat):
|
|||
|
||||
def onEnterPressed(self, event):
|
||||
"""Behaviour when enter pressed in send line."""
|
||||
self.host.sendMessage(self.target.short if self.type == 'group' else self.target,
|
||||
self.host.sendMessage(self.target.bare if self.type == 'group' else self.target,
|
||||
event.GetString(),
|
||||
mess_type="groupchat" if self.type == 'group' else "chat",
|
||||
profile_key=self.host.profile)
|
||||
|
|
@ -257,9 +257,9 @@ class Chat(wx.Frame, QuickChat):
|
|||
if filename:
|
||||
debug(_("filename: %s"),filename)
|
||||
#FIXME: check last_resource: what if self.target.resource exists ?
|
||||
last_resource = self.host.bridge.getLastResource(unicode(self.target.short), self.host.profile)
|
||||
last_resource = self.host.bridge.getLastResource(unicode(self.target.bare), self.host.profile)
|
||||
if last_resource:
|
||||
full_jid = JID("%s/%s" % (self.target.short, last_resource))
|
||||
full_jid = JID("%s/%s" % (self.target.bare, last_resource))
|
||||
else:
|
||||
full_jid = self.target
|
||||
id = self.host.bridge.sendFile(full_jid, filename, {}, self.host.profile)
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ class ContactList(wx.SimpleHtmlListBox, QuickContactList):
|
|||
@return: list of indexes"""
|
||||
result=[]
|
||||
for i in range(self.GetCount()):
|
||||
if (type(entity) == JID and type(self.GetClientData(i)) == JID and self.GetClientData(i).short == entity.short) or\
|
||||
if (type(entity) == JID and type(self.GetClientData(i)) == JID and self.GetClientData(i).bare == entity.bare) or\
|
||||
self.GetClientData(i) == entity:
|
||||
result.append(i)
|
||||
return result
|
||||
|
|
@ -136,7 +136,7 @@ class ContactList(wx.SimpleHtmlListBox, QuickContactList):
|
|||
</td>
|
||||
</table>
|
||||
""" % (avatar,
|
||||
escape(nick or name or jid.node or jid.short),
|
||||
escape(nick or name or jid.node or jid.bare),
|
||||
show_html,
|
||||
escape(status))
|
||||
|
||||
|
|
|
|||
|
|
@ -339,10 +339,10 @@ class MainWindow(wx.Frame, QuickApp):
|
|||
|
||||
def onContactActivated(self, jid):
|
||||
debug (_("onContactActivated: %s"), jid)
|
||||
if self.chat_wins[jid.short].IsShown():
|
||||
self.chat_wins[jid.short].Hide()
|
||||
if self.chat_wins[jid.bare].IsShown():
|
||||
self.chat_wins[jid.bare].Hide()
|
||||
else:
|
||||
self.chat_wins[jid.short].Show()
|
||||
self.chat_wins[jid.bare].Show()
|
||||
|
||||
def onConnectRequest(self, e):
|
||||
self.bridge.connect(self.profile)
|
||||
|
|
@ -394,7 +394,7 @@ class MainWindow(wx.Frame, QuickApp):
|
|||
if dlg.ShowModal() == wx.ID_OK:
|
||||
jid=JID(dlg.GetValue())
|
||||
if jid.is_valid():
|
||||
self.bridge.addContact(jid.short, profile_key=self.profile)
|
||||
self.bridge.addContact(jid.bare, profile_key=self.profile)
|
||||
else:
|
||||
error (_("'%s' is an invalid JID !"), jid)
|
||||
#TODO: notice the user
|
||||
|
|
@ -413,14 +413,14 @@ class MainWindow(wx.Frame, QuickApp):
|
|||
dlg.Destroy()
|
||||
return
|
||||
|
||||
dlg = wx.MessageDialog(self, _("Are you sure you want to delete %s from your roster list ?") % target.short,
|
||||
dlg = wx.MessageDialog(self, _("Are you sure you want to delete %s from your roster list ?") % target.bare,
|
||||
_('Contact suppression'),
|
||||
wx.YES_NO | wx.ICON_QUESTION
|
||||
)
|
||||
|
||||
if dlg.ShowModal() == wx.ID_YES:
|
||||
info(_("Unsubscribing %s presence"), target.short)
|
||||
self.bridge.delContact(target.short, profile_key=self.profile)
|
||||
info(_("Unsubscribing %s presence"), target.bare)
|
||||
self.bridge.delContact(target.bare, profile_key=self.profile)
|
||||
|
||||
dlg.Destroy()
|
||||
|
||||
|
|
@ -435,7 +435,7 @@ class MainWindow(wx.Frame, QuickApp):
|
|||
dlg.ShowModal()
|
||||
dlg.Destroy()
|
||||
return
|
||||
_id = self.bridge.getCard(target.short, profile_key=self.profile)
|
||||
_id = self.bridge.getCard(target.bare, profile_key=self.profile)
|
||||
self.current_action_ids.add(_id)
|
||||
self.current_action_ids_cb[_id] = self.onProfileReceived
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ class JID(unicode):
|
|||
return self
|
||||
|
||||
def __parse(self):
|
||||
"""find node domaine and resource"""
|
||||
"""find node domain and resource"""
|
||||
node_end = self.find('@')
|
||||
if node_end < 0:
|
||||
node_end = 0
|
||||
|
|
@ -38,11 +38,11 @@ class JID(unicode):
|
|||
self.domain = self[(node_end + 1) if node_end else 0:domain_end]
|
||||
self.resource = self[domain_end + 1:]
|
||||
if not node_end:
|
||||
self.short = self
|
||||
self.bare = self
|
||||
else:
|
||||
self.short = self.node + '@' + self.domain
|
||||
self.bare = self.node + '@' + self.domain
|
||||
|
||||
def is_valid(self):
|
||||
"""return True if the jid is xmpp compliant"""
|
||||
#FIXME: always return True for the moment
|
||||
return True
|
||||
#TODO: implement real check, according to RFCs
|
||||
return self.domain != ""
|
||||
|
|
|
|||
Loading…
Reference in a new issue