Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/advanced.py2
-rw-r--r--src/chat_control.py20
-rw-r--r--src/common/GnuPG.py4
-rw-r--r--src/common/GnuPGInterface.py8
-rw-r--r--src/common/atom.py2
-rw-r--r--src/common/commands.py2
-rw-r--r--src/common/config.py44
-rw-r--r--src/common/connection.py14
-rw-r--r--src/common/connection_handlers.py102
-rw-r--r--src/common/events.py22
-rw-r--r--src/common/helpers.py24
-rw-r--r--src/common/nslookup.py8
-rw-r--r--src/common/optparser.py38
-rw-r--r--src/common/passwords.py2
-rw-r--r--src/common/pep.py80
-rw-r--r--src/common/proxy65_manager.py8
-rw-r--r--src/common/socks5.py64
-rw-r--r--src/common/xmpp/auth.py6
-rw-r--r--src/common/xmpp/auth_nb.py8
-rw-r--r--src/common/xmpp/browser.py10
-rw-r--r--src/common/xmpp/client.py28
-rw-r--r--src/common/xmpp/client_nb.py28
-rw-r--r--src/common/xmpp/commands.py24
-rw-r--r--src/common/xmpp/debug.py6
-rw-r--r--src/common/xmpp/dispatcher.py22
-rw-r--r--src/common/xmpp/dispatcher_nb.py26
-rw-r--r--src/common/xmpp/features_nb.py4
-rw-r--r--src/common/xmpp/idlequeue.py16
-rw-r--r--src/common/xmpp/protocol.py4
-rw-r--r--src/common/xmpp/roster.py14
-rw-r--r--src/common/xmpp/session.py14
-rw-r--r--src/common/xmpp/simplexml.py6
-rw-r--r--src/common/xmpp/transports.py4
-rw-r--r--src/common/xmpp/transports_nb.py8
-rw-r--r--src/common/zeroconf/connection_handlers_zeroconf.py30
-rw-r--r--src/common/zeroconf/connection_zeroconf.py2
-rw-r--r--src/common/zeroconf/roster_zeroconf.py20
-rw-r--r--src/common/zeroconf/zeroconf_avahi.py2
-rw-r--r--src/config.py50
-rw-r--r--src/conversation_textview.py4
-rw-r--r--src/dialogs.py26
-rw-r--r--src/disco.py38
-rw-r--r--src/filetransfers_window.py54
-rwxr-xr-xsrc/gajim.py102
-rw-r--r--src/gajim_themes_window.py2
-rw-r--r--src/groupchat_control.py23
-rw-r--r--src/gtkgui_helpers.py2
-rw-r--r--src/history_window.py2
-rw-r--r--src/message_window.py4
-rw-r--r--src/music_track_listener.py8
-rw-r--r--src/notify.py4
-rw-r--r--src/osx/growl/Growl.py4
-rw-r--r--src/profile_window.py6
-rw-r--r--src/remote_control.py2
-rw-r--r--src/roster_window.py76
-rw-r--r--src/search_window.py4
-rw-r--r--src/systray.py4
-rw-r--r--src/tooltips.py40
-rw-r--r--src/vcard.py8
-rw-r--r--test/lib/mock.py8
60 files changed, 597 insertions, 600 deletions
diff --git a/src/advanced.py b/src/advanced.py
index eba6d8fad..91a706bbc 100644
--- a/src/advanced.py
+++ b/src/advanced.py
@@ -144,7 +144,7 @@ class AdvancedConfigurationWindow(object):
self.desc_label.set_text(_('(None)'))
def remember_option(self, option, oldval, newval):
- if self.changed_opts.has_key(option):
+ if option in self.changed_opts:
self.changed_opts[option] = (self.changed_opts[option][0], newval)
else:
self.changed_opts[option] = (oldval, newval)
diff --git a/src/chat_control.py b/src/chat_control.py
index 1c3ec68f4..aabcee9d2 100644
--- a/src/chat_control.py
+++ b/src/chat_control.py
@@ -764,7 +764,7 @@ class ChatControlBase(MessageControl):
if not jid:
jid = self.contact.jid
- if gajim.interface.instances.has_key('logs'):
+ if 'logs' in gajim.interface.instances:
gajim.interface.instances['logs'].window.present()
gajim.interface.instances['logs'].open_history(jid, self.account)
else:
@@ -1190,9 +1190,9 @@ class ChatControl(ChatControlBase):
if isinstance(self.contact, GC_Contact):
return
- if self.contact.mood.has_key('mood'):
+ if 'mood' in self.contact.mood:
mood = self.contact.mood['mood'].strip()
- if self.contact.mood.has_key('text'):
+ if 'text' in self.contact.mood:
text = self.contact.mood['text'].strip()
if mood is not None:
@@ -1230,11 +1230,11 @@ class ChatControl(ChatControlBase):
if isinstance(self.contact, GC_Contact):
return
- if self.contact.activity.has_key('activity'):
+ if 'activity' in self.contact.activity:
activity = self.contact.activity['activity'].strip()
- if self.contact.activity.has_key('subactivity'):
+ if 'subactivity' in self.contact.activity:
subactivity = self.contact.activity['subactivity'].strip()
- if self.contact.activity.has_key('text'):
+ if 'text' in self.contact.activity:
text = self.contact.activity['text'].strip()
if activity is not None:
@@ -1280,15 +1280,15 @@ class ChatControl(ChatControlBase):
if isinstance(self.contact, GC_Contact):
return
- if self.contact.tune.has_key('artist'):
+ if 'artist' in self.contact.tune:
artist = self.contact.tune['artist'].strip()
if HAVE_MARKUP_TOOLTIPS:
artist = gobject.markup_escape_text(artist)
- if self.contact.tune.has_key('title'):
+ if 'title' in self.contact.tune:
title = self.contact.tune['title'].strip()
if HAVE_MARKUP_TOOLTIPS:
title = gobject.markup_escape_text(title)
- if self.contact.tune.has_key('source'):
+ if 'source' in self.contact.tune:
source = self.contact.tune['source'].strip()
if HAVE_MARKUP_TOOLTIPS:
source = gobject.markup_escape_text(source)
@@ -1396,7 +1396,7 @@ class ChatControl(ChatControlBase):
size = '32', icon_name = show)
img_16 = gajim.interface.roster.get_appropriate_state_images(jid,
icon_name = show)
- if img_32.has_key(show) and img_32[show].get_pixbuf():
+ if show in img_32 and img_32[show].get_pixbuf():
# we have 32x32! use it!
banner_image = img_32[show]
use_size_32 = True
diff --git a/src/common/GnuPG.py b/src/common/GnuPG.py
index 1aad663bd..ea93db95c 100644
--- a/src/common/GnuPG.py
+++ b/src/common/GnuPG.py
@@ -140,7 +140,7 @@ if gajim.HAVE_GPG:
try: proc.wait()
except IOError: pass
- if resp.has_key('GOOD_PASSPHRASE') or resp.has_key('SIG_CREATED'):
+ if 'GOOD_PASSPHRASE' in resp or 'SIG_CREATED' in resp:
return self._stripHeaderFooter(output)
return 'BAD_PASSPHRASE'
@@ -168,7 +168,7 @@ if gajim.HAVE_GPG:
except IOError: pass
keyid = ''
- if resp.has_key('GOODSIG'):
+ if 'GOODSIG' in resp:
keyid = resp['GOODSIG'].split()[0]
return keyid
diff --git a/src/common/GnuPGInterface.py b/src/common/GnuPGInterface.py
index f798d785b..c026d6d6c 100644
--- a/src/common/GnuPGInterface.py
+++ b/src/common/GnuPGInterface.py
@@ -342,14 +342,14 @@ class GnuPG:
if attach_fhs is None: attach_fhs = {}
for std in _stds:
- if not attach_fhs.has_key(std) \
+ if std not in attach_fhs \
and std not in create_fhs:
attach_fhs.setdefault(std, getattr(sys, std))
handle_passphrase = 0
if self.passphrase is not None \
- and not attach_fhs.has_key('passphrase') \
+ and 'passphrase' not in attach_fhs \
and 'passphrase' not in create_fhs:
handle_passphrase = 1
create_fhs.append('passphrase')
@@ -373,7 +373,7 @@ class GnuPG:
process = Process()
for fh_name in create_fhs + attach_fhs.keys():
- if not _fd_modes.has_key(fh_name):
+ if fh_name not in _fd_modes:
raise KeyError, \
"unrecognized filehandle name '%s'; must be one of %s" \
% (fh_name, _fd_modes.keys())
@@ -381,7 +381,7 @@ class GnuPG:
for fh_name in create_fhs:
# make sure the user doesn't specify a filehandle
# to be created *and* attached
- if attach_fhs.has_key(fh_name):
+ if fh_name in attach_fhs:
raise ValueError, \
"cannot have filehandle '%s' in both create_fhs and attach_fhs" \
% fh_name
diff --git a/src/common/atom.py b/src/common/atom.py
index ff9765b27..d8a5847cf 100644
--- a/src/common/atom.py
+++ b/src/common/atom.py
@@ -124,7 +124,7 @@ class OldEntry(xmpp.Node, object):
''' Get the uri the entry points to (entry's first link element with rel='alternate'
or without rel attribute). '''
for element in self.getTags('link'):
- if element.attrs.has_key('rel') and element.attrs['rel']<>'alternate': continue
+ if 'rel' in element.attrs and element.attrs['rel']<>'alternate': continue
try:
return element.attrs['href']
except AttributeError:
diff --git a/src/common/commands.py b/src/common/commands.py
index 4cb43bef5..c40431dfa 100644
--- a/src/common/commands.py
+++ b/src/common/commands.py
@@ -166,7 +166,7 @@ def find_current_groupchats(account):
continue
room_jid = gc_control.room_jid
nick = gc_control.nick
- if gajim.gc_connected[acct].has_key(room_jid) and \
+ if room_jid in gajim.gc_connected[acct] and \
gajim.gc_connected[acct][room_jid]:
rooms.append((room_jid, nick,))
return rooms
diff --git a/src/common/config.py b/src/common/config.py
index 0a8cff983..0001090d9 100644
--- a/src/common/config.py
+++ b/src/common/config.py
@@ -518,7 +518,7 @@ class Config:
return None
def set(self, optname, value):
- if not self.__options.has_key(optname):
+ if optname not in self.__options:
# raise RuntimeError, 'option %s does not exist' % optname
return
opt = self.__options[optname]
@@ -532,35 +532,35 @@ class Config:
def get(self, optname = None):
if not optname:
return self.__options.keys()
- if not self.__options.has_key(optname):
+ if optname not in self.__options:
return None
return self.__options[optname][OPT_VAL]
def get_desc(self, optname):
- if not self.__options.has_key(optname):
+ if optname not in self.__options:
return None
if len(self.__options[optname]) > OPT_DESC:
return self.__options[optname][OPT_DESC]
def get_restart(self, optname):
- if not self.__options.has_key(optname):
+ if optname not in self.__options:
return None
if len(self.__options[optname]) > OPT_RESTART:
return self.__options[optname][OPT_RESTART]
def add_per(self, typename, name): # per_group_of_option
- if not self.__options_per_key.has_key(typename):
+ if typename not in self.__options_per_key:
# raise RuntimeError, 'option %s does not exist' % typename
return
opt = self.__options_per_key[typename]
- if opt[1].has_key(name):
+ if name in opt[1]:
# we already have added group name before
return 'you already have added %s before' % name
opt[1][name] = copy.deepcopy(opt[0])
def del_per(self, typename, name, subname = None): # per_group_of_option
- if not self.__options_per_key.has_key(typename):
+ if typename not in self.__options_per_key:
# raise RuntimeError, 'option %s does not exist' % typename
return
@@ -568,21 +568,21 @@ class Config:
if subname is None:
del opt[1][name]
# if subname is specified, delete the item in the group.
- elif opt[1][name].has_key(subname):
+ elif subname in opt[1][name]:
del opt[1][name][subname]
def set_per(self, optname, key, subname, value): # per_group_of_option
- if not self.__options_per_key.has_key(optname):
+ if optname not in self.__options_per_key:
# raise RuntimeError, 'option %s does not exist' % optname
return
if not key:
return
dict = self.__options_per_key[optname][1]
- if not dict.has_key(key):
+ if key not in dict:
# raise RuntimeError, '%s is not a key of %s' % (key, dict)
self.add_per(optname, key)
obj = dict[key]
- if not obj.has_key(subname):
+ if subname not in obj:
# raise RuntimeError, '%s is not a key of %s' % (subname, obj)
return
subobj = obj[subname]
@@ -593,53 +593,53 @@ class Config:
subobj[OPT_VAL] = value
def get_per(self, optname, key = None, subname = None): # per_group_of_option
- if not self.__options_per_key.has_key(optname):
+ if optname not in self.__options_per_key:
return None
dict = self.__options_per_key[optname][1]
if not key:
return dict.keys()
- if not dict.has_key(key):
- if self.__options_per_key.has_key(optname) \
- and self.__options_per_key[optname][0].has_key(subname):
+ if key not in dict:
+ if optname in self.__options_per_key \
+ and subname in self.__options_per_key[optname][0]:
return self.__options_per_key \
[optname][0][subname][1]
return None
obj = dict[key]
if not subname:
return obj
- if not obj.has_key(subname):
+ if subname not in obj:
return None
return obj[subname][OPT_VAL]
def get_desc_per(self, optname, key = None, subname = None):
- if not self.__options_per_key.has_key(optname):
+ if optname not in self.__options_per_key:
return None
dict = self.__options_per_key[optname][1]
if not key:
return None
- if not dict.has_key(key):
+ if key not in dict:
return None
obj = dict[key]
if not subname:
return None
- if not obj.has_key(subname):
+ if subname not in obj:
return None
if len(obj[subname]) > OPT_DESC:
return obj[subname][OPT_DESC]
return None
def get_restart_per(self, optname, key = None, subname = None):
- if not self.__options_per_key.has_key(optname):
+ if optname not in self.__options_per_key:
return False
dict = self.__options_per_key[optname][1]
if not key:
return False
- if not dict.has_key(key):
+ if key not in dict:
return False
obj = dict[key]
if not subname:
return False
- if not obj.has_key(subname):
+ if subname not in obj:
return False
if len(obj[subname]) > OPT_RESTART:
return obj[subname][OPT_RESTART]
diff --git a/src/common/connection.py b/src/common/connection.py
index eae94c2f9..20e1fe491 100644
--- a/src/common/connection.py
+++ b/src/common/connection.py
@@ -181,7 +181,7 @@ class Connection(ConnectionHandlers):
# END __init__
def put_event(self, ev):
- if gajim.handlers.has_key(ev[0]):
+ if ev[0] in gajim.handlers:
gajim.handlers[ev[0]](self.name, ev[1])
def dispatch(self, event, data):
@@ -362,7 +362,7 @@ class Connection(ConnectionHandlers):
for child in data.getTag('query').getTag('list').getChildren():
dict_item = child.getAttrs()
childs = []
- if dict_item.has_key('type'):
+ if 'type' in dict_item:
for scnd_child in child.getChildren():
childs += [scnd_child.getName()]
rules.append({'action':dict_item['action'],
@@ -1322,9 +1322,9 @@ class Connection(ConnectionHandlers):
self.new_account_info['password'] = field.value
else:
# Get username and password and put them in new_account_info
- if form.has_key('username'):
+ if 'username' in form:
self.new_account_info['name'] = form['username']
- if form.has_key('password'):
+ if 'password' in form:
self.new_account_info['password'] = form['password']
self.new_account_form = form
self.new_account(self.name, self.new_account_info)
@@ -1484,7 +1484,7 @@ class Connection(ConnectionHandlers):
for data in tags_list[tag]:
jid = data['jid']
dict_ = {'jid': jid, 'tag': tag}
- if data.has_key('order'):
+ if 'order' in data:
dict_['order'] = data['order']
iq3.addChild(name = 'meta', attrs = dict_)
self.connection.send(iq)
@@ -1530,7 +1530,7 @@ class Connection(ConnectionHandlers):
self.connection.send(p)
# last date/time in history to avoid duplicate
- if not self.last_history_time.has_key(room_jid):
+ if room_jid not in self.last_history_time:
# Not in memory, get it from DB
last_log = None
# Do not check if we are not logging for this room
@@ -1644,7 +1644,7 @@ class Connection(ConnectionHandlers):
for jid in users_dict:
item_tag = item.addChild('item', {'jid': jid,
'affiliation': users_dict[jid]['affiliation']})
- if users_dict[jid].has_key('reason') and users_dict[jid]['reason']:
+ if 'reason' in users_dict[jid] and users_dict[jid]['reason']:
item_tag.setTagData('reason', users_dict[jid]['reason'])
self.connection.send(iq)
diff --git a/src/common/connection_handlers.py b/src/common/connection_handlers.py
index fb2a7db08..d0089c142 100644
--- a/src/common/connection_handlers.py
+++ b/src/common/connection_handlers.py
@@ -76,13 +76,13 @@ class ConnectionBytestream:
self.files_props = {}
def is_transfer_stopped(self, file_props):
- if file_props.has_key('error') and file_props['error'] != 0:
+ if 'error' in file_props and file_props['error'] != 0:
return True
- if file_props.has_key('completed') and file_props['completed']:
+ if 'completed' in file_props and file_props['completed']:
return True
- if file_props.has_key('connected') and file_props['connected'] == False:
+ if 'connected' in file_props and file_props['connected'] == False:
return True
- if not file_props.has_key('stopped') or not file_props['stopped']:
+ if 'stopped' not in file_props or not file_props['stopped']:
return False
return True
@@ -133,18 +133,18 @@ class ConnectionBytestream:
gajim.socks5queue.remove_file_props(self.name, sid)
if remove_from_list:
- if self.files_props.has_key('sid'):
+ if 'sid' in self.files_props:
del(self.files_props['sid'])
def disconnect_transfer(self, file_props):
if file_props is None:
return
- if file_props.has_key('hash'):
+ if 'hash' in file_props:
gajim.socks5queue.remove_sender(file_props['hash'])
- if file_props.has_key('streamhosts'):
+ if 'streamhosts' in file_props:
for host in file_props['streamhosts']:
- if host.has_key('idx') and host['idx'] > 0:
+ if 'idx' in host and host['idx'] > 0:
gajim.socks5queue.remove_receiver(host['idx'])
gajim.socks5queue.remove_sender(host['idx'])
@@ -273,7 +273,7 @@ class ConnectionBytestream:
iq.setAttr('id', file_props['request-id'])
si = iq.setTag('si')
si.setNamespace(common.xmpp.NS_SI)
- if file_props.has_key('offset') and file_props['offset']:
+ if 'offset' in file_props and file_props['offset']:
file_tag = si.setTag('file')
file_tag.setNamespace(common.xmpp.NS_FILE)
range_tag = file_tag.setTag('range')
@@ -309,7 +309,7 @@ class ConnectionBytestream:
file_tag.setAttr('name', file_props['name'])
file_tag.setAttr('size', file_props['size'])
desc = file_tag.setTag('desc')
- if file_props.has_key('desc'):
+ if 'desc' in file_props:
desc.setData(file_props['desc'])
file_tag.setTag('range')
feature = si.setTag('feature')
@@ -323,7 +323,7 @@ class ConnectionBytestream:
def _result_socks5_sid(self, sid, hash_id):
''' store the result of sha message from auth. '''
- if not self.files_props.has_key(sid):
+ if sid not in self.files_props:
return
file_props = self.files_props[sid]
file_props['hash'] = hash_id
@@ -381,7 +381,7 @@ class ConnectionBytestream:
gajim.proxy65_manager.error_cb(frm, query)
jid = helpers.get_jid_from_iq(iq_obj)
id = id[3:]
- if not self.files_props.has_key(id):
+ if id not in self.files_props:
return
file_props = self.files_props[id]
file_props['error'] = -4
@@ -410,13 +410,13 @@ class ConnectionBytestream:
host_dict[attr] = item.getAttr(attr)
streamhosts.append(host_dict)
if file_props is None:
- if self.files_props.has_key(sid):
+ if sid in self.files_props:
file_props = self.files_props[sid]
file_props['fast'] = streamhosts
if file_props['type'] == 's': # FIXME: remove fast xmlns
# only psi do this
- if file_props.has_key('streamhosts'):
+ if 'streamhosts' in file_props:
file_props['streamhosts'].extend(streamhosts)
else:
file_props['streamhosts'] = streamhosts
@@ -444,11 +444,11 @@ class ConnectionBytestream:
return
frm = helpers.get_full_jid_from_iq(iq_obj)
id = real_id[3:]
- if self.files_props.has_key(id):
+ if id in self.files_props:
file_props = self.files_props[id]
if file_props['streamhost-used']:
for host in file_props['proxyhosts']:
- if host['initiator'] == frm and host.has_key('idx'):
+ if host['initiator'] == frm and 'idx' in host:
gajim.socks5queue.activate_proxy(host['idx'])
raise common.xmpp.NodeProcessed
@@ -464,7 +464,7 @@ class ConnectionBytestream:
except: # this bytestream result is not what we need
pass
id = real_id[3:]
- if self.files_props.has_key(id):
+ if id in self.files_props:
file_props = self.files_props[id]
else:
raise common.xmpp.NodeProcessed
@@ -472,10 +472,10 @@ class ConnectionBytestream:
# proxy approves the activate query
if real_id[:3] == 'au_':
id = real_id[3:]
- if not file_props.has_key('streamhost-used') or \
+ if 'streamhost-used' not in file_props or \
file_props['streamhost-used'] is False:
raise common.xmpp.NodeProcessed
- if not file_props.has_key('proxyhosts'):
+ if 'proxyhosts' not in file_props:
raise common.xmpp.NodeProcessed
for host in file_props['proxyhosts']:
if host['initiator'] == frm and \
@@ -484,26 +484,26 @@ class ConnectionBytestream:
break
raise common.xmpp.NodeProcessed
jid = streamhost.getAttr('jid')
- if file_props.has_key('streamhost-used') and \
+ if 'streamhost-used' in file_props and \
file_props['streamhost-used'] is True:
raise common.xmpp.NodeProcessed
if real_id[:3] == 'au_':
- if file.has_key('stopped') and file_props['stopped']:
+ if 'stopped' in file and file_props['stopped']:
self.remove_transfer(file_props)
else:
gajim.socks5queue.send_file(file_props, self.name)
raise common.xmpp.NodeProcessed
proxy = None
- if file_props.has_key('proxyhosts'):
+ if 'proxyhosts' in file_props:
for proxyhost in file_props['proxyhosts']:
if proxyhost['jid'] == jid:
proxy = proxyhost
if proxy is not None:
file_props['streamhost-used'] = True
- if not file_props.has_key('streamhosts'):
+ if 'streamhosts' not in file_props:
file_props['streamhosts'] = []
file_props['streamhosts'].append(proxy)
file_props['is_a_proxy'] = True
@@ -514,11 +514,11 @@ class ConnectionBytestream:
raise common.xmpp.NodeProcessed
else:
- if file_props.has_key('stopped') and file_props['stopped']:
+ if 'stopped' in file_props and file_props['stopped']:
self.remove_transfer(file_props)
else:
gajim.socks5queue.send_file(file_props, self.name)
- if file_props.has_key('fast'):
+ if 'fast' in file_props:
fasts = file_props['fast']
if len(fasts) > 0:
self._connect_error(frm, fasts[0]['id'], file_props['sid'],
@@ -529,14 +529,14 @@ class ConnectionBytestream:
def _siResultCB(self, con, iq_obj):
gajim.log.debug('_siResultCB')
id = iq_obj.getAttr('id')
- if not self.files_props.has_key(id):
+ if id not in self.files_props:
# no such jid
return
file_props = self.files_props[id]
if file_props is None:
# file properties for jid is none
return
- if file_props.has_key('request-id'):
+ if 'request-id' in file_props:
# we have already sent streamhosts info
return
file_props['receiver'] = helpers.get_full_jid_from_iq(iq_obj)
@@ -603,7 +603,7 @@ class ConnectionBytestream:
if profile != common.xmpp.NS_FILE:
return
id = iq_obj.getAttr('id')
- if not self.files_props.has_key(id):
+ if id not in self.files_props:
# no such jid
return
file_props = self.files_props[id]
@@ -804,13 +804,13 @@ class ConnectionDisco:
attr = {}
for key in i.getAttrs().keys():
attr[key] = i.getAttr(key)
- if attr.has_key('category') and \
+ if 'category' in attr and \
attr['category'] in ('gateway', 'headline') and \
- attr.has_key('type'):
+ 'type' in attr:
transport_type = attr['type']
- if attr.has_key('category') and \
+ if 'category' in attr and \
attr['category'] == 'conference' and \
- attr.has_key('type') and attr['type'] == 'text':
+ 'type' in attr and attr['type'] == 'text':
is_muc = True
identities.append(attr)
elif i.getName() == 'feature':
@@ -851,7 +851,7 @@ class ConnectionDisco:
type_ = transport_type or 'jabber'
self.muc_jid[type_] = jid
if transport_type:
- if self.available_transports.has_key(transport_type):
+ if transport_type in self.available_transports:
self.available_transports[transport_type].append(jid)
else:
self.available_transports[transport_type] = [jid]
@@ -887,7 +887,7 @@ class ConnectionVcard:
for info in node.getChildren():
name = info.getName()
if name in ('ADR', 'TEL', 'EMAIL'): # we can have several
- if not dict.has_key(name):
+ if name not in dict:
dict[name] = []
entry = {}
for c in info.getChildren():
@@ -949,12 +949,12 @@ class ConnectionVcard:
os.remove(path_to_file)
return None
vcard = self.node_to_dict(card)
- if vcard.has_key('PHOTO'):
+ if 'PHOTO' in vcard:
if not isinstance(vcard['PHOTO'], dict):
del vcard['PHOTO']
- elif vcard['PHOTO'].has_key('SHA'):
+ elif 'SHA' in vcard['PHOTO']:
cached_sha = vcard['PHOTO']['SHA']
- if self.vcard_shas.has_key(jid) and self.vcard_shas[jid] != \
+ if jid in self.vcard_shas and self.vcard_shas[jid] != \
cached_sha:
# user change his vcard so don't use the cached one
return {}
@@ -1012,8 +1012,8 @@ class ConnectionVcard:
our_jid = gajim.get_jid_from_account(self.name)
# Add the sha of the avatar
- if vcard.has_key('PHOTO') and isinstance(vcard['PHOTO'], dict) and \
- vcard['PHOTO'].has_key('BINVAL'):
+ if 'PHOTO' in vcard and isinstance(vcard['PHOTO'], dict) and \
+ 'BINVAL' in vcard['PHOTO']:
photo = vcard['PHOTO']['BINVAL']
photo_decoded = base64.decodestring(photo)
gajim.interface.save_avatar_files(our_jid, photo_decoded)
@@ -1111,7 +1111,7 @@ class ConnectionVcard:
order = 0
if order is not None:
data['order'] = order
- if meta_list.has_key(tag):
+ if tag in meta_list:
meta_list[tag].append(data)
else:
meta_list[tag] = [data]
@@ -1168,8 +1168,8 @@ class ConnectionVcard:
card = vc.getChildren()[0]
vcard = self.node_to_dict(card)
photo_decoded = None
- if vcard.has_key('PHOTO') and isinstance(vcard['PHOTO'], dict) and \
- vcard['PHOTO'].has_key('BINVAL'):
+ if 'PHOTO' in vcard and isinstance(vcard['PHOTO'], dict) and \
+ 'BINVAL' in vcard['PHOTO']:
photo = vcard['PHOTO']['BINVAL']
try:
photo_decoded = base64.decodestring(photo)
@@ -1201,12 +1201,12 @@ class ConnectionVcard:
if frm_jid == our_jid and avatar_sha != self.vcard_sha:
gajim.interface.save_avatar_files(frm, photo_decoded, puny_nick)
elif frm_jid != our_jid and (not os.path.exists(avatar_file) or \
- not self.vcard_shas.has_key(frm_jid) or \
+ frm_jid not in self.vcard_shas or \
avatar_sha != self.vcard_shas[frm_jid]):
gajim.interface.save_avatar_files(frm, photo_decoded, puny_nick)
if avatar_sha:
self.vcard_shas[frm_jid] = avatar_sha
- elif self.vcard_shas.has_key(frm):
+ elif frm in self.vcard_shas:
del self.vcard_shas[frm]
else:
for ext in ('.jpeg', '.png', '_notif_size_bw.png',
@@ -1861,7 +1861,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
return
# Ignore message from room in which we are not
- if not self.last_history_time.has_key(jid):
+ if jid not in self.last_history_time:
return
self.dispatch('GC_MSG', (frm, msgtxt, tim, has_timestamp, msg.getXHTML(),
@@ -2110,7 +2110,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
self.automatically_added.remove(jid_stripped)
else:
# detect a subscription loop
- if not self.subscribed_events.has_key(jid_stripped):
+ if jid_stripped not in self.subscribed_events:
self.subscribed_events[jid_stripped] = []
self.subscribed_events[jid_stripped].append(time_time())
block = False
@@ -2130,7 +2130,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
elif ptype == 'unsubscribed':
gajim.log.debug(_('we are now unsubscribed from %s') % who)
# detect a unsubscription loop
- if not self.subscribed_events.has_key(jid_stripped):
+ if jid_stripped not in self.subscribed_events:
self.subscribed_events[jid_stripped] = []
self.subscribed_events[jid_stripped].append(time_time())
block = False
@@ -2161,10 +2161,10 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
del self.sessions[jid_stripped][sess.thread_id]
if avatar_sha is not None and ptype != 'error':
- if not self.vcard_shas.has_key(jid_stripped):
+ if jid_stripped not in self.vcard_shas:
cached_vcard = self.get_cached_vcard(jid_stripped)
- if cached_vcard and cached_vcard.has_key('PHOTO') and \
- cached_vcard['PHOTO'].has_key('SHA'):
+ if cached_vcard and 'PHOTO' in cached_vcard and \
+ 'SHA' in cached_vcard['PHOTO']:
self.vcard_shas[jid_stripped] = cached_vcard['PHOTO']['SHA']
else:
self.vcard_shas[jid_stripped] = ''
@@ -2335,7 +2335,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
priority = gajim.get_priority(self.name, sshow)
our_jid = helpers.parse_jid(gajim.get_jid_from_account(self.name))
vcard = self.get_cached_vcard(our_jid)
- if vcard and vcard.has_key('PHOTO') and vcard['PHOTO'].has_key('SHA'):
+ if vcard and 'PHOTO' in vcard and 'SHA' in vcard['PHOTO']:
self.vcard_sha = vcard['PHOTO']['SHA']
p = common.xmpp.Presence(typ = None, priority = priority, show = sshow)
p = self.add_sha(p)
diff --git a/src/common/events.py b/src/common/events.py
index 26e47fadf..cb819d594 100644
--- a/src/common/events.py
+++ b/src/common/events.py
@@ -87,7 +87,7 @@ class Events:
listener(event_list)
def change_account_name(self, old_name, new_name):
- if self._events.has_key(old_name):
+ if old_name in self._events:
self._events[new_name] = self._events[old_name]
del self._events[old_name]
@@ -107,10 +107,10 @@ class Events:
def add_event(self, account, jid, event):
# No such account before ?
- if not self._events.has_key(account):
+ if account not in self._events:
self._events[account] = {jid: [event]}
# no such jid before ?
- elif not self._events[account].has_key(jid):
+ elif jid not in self._events[account]:
self._events[account][jid] = [event]
else:
self._events[account][jid].append(event)
@@ -122,9 +122,9 @@ class Events:
'''if event is not specified, remove all events from this jid,
optionally only from given type
return True if no such event found'''
- if not self._events.has_key(account):
+ if account not in self._events:
return True
- if not self._events[account].has_key(jid):
+ if jid not in self._events[account]:
return True
if event: # remove only one event
if event in self._events[account][jid]:
@@ -157,9 +157,9 @@ class Events:
del self._events[account][jid]
def change_jid(self, account, old_jid, new_jid):
- if not self._events[account].has_key(old_jid):
+ if old_jid not in self._events[account]:
return
- if self._events[account].has_key(new_jid):
+ if new_jid in self._events[account]:
self._events[account][new_jid] += self._events[account][old_jid]
else:
self._events[account][new_jid] = self._events[account][old_jid]
@@ -173,7 +173,7 @@ class Events:
{jid1: [], jid2: []}
if jid is given, returns all events from the given jid in a list: []
optionally only from given type'''
- if not self._events.has_key(account):
+ if account not in self._events:
return []
if not jid:
events_list = {} # list of events
@@ -185,7 +185,7 @@ class Events:
if events:
events_list[jid_] = events
return events_list
- if not self._events[account].has_key(jid):
+ if jid not in self._events[account]:
return []
events_list = [] # list of events
for ev in self._events[account][jid]:
@@ -214,14 +214,14 @@ class Events:
else:
accounts = self._events.keys()
for acct in accounts:
- if not self._events.has_key(acct):
+ if acct not in self._events:
continue
if jid:
jids = [jid]
else:
jids = self._events[acct].keys()
for j in jids:
- if not self._events[acct].has_key(j):
+ if j not in self._events[acct]:
continue
for event in self._events[acct][j]:
if types and event.type_ not in types:
diff --git a/src/common/helpers.py b/src/common/helpers.py
index ecccd5029..d445d7aa6 100644
--- a/src/common/helpers.py
+++ b/src/common/helpers.py
@@ -242,7 +242,7 @@ def get_contact_dict_for_account(account):
jid)
contacts_dict[jid] = contact
name = contact.name
- if contacts_dict.has_key(name):
+ if name in contacts_dict:
contact1 = contacts_dict[name]
del contacts_dict[name]
contacts_dict['%s (%s)' % (name, contact1.jid)] = contact1
@@ -619,11 +619,11 @@ def get_icon_name_to_show(contact, account = None):
if account and gajim.events.get_nb_roster_events(account,
contact.get_full_jid()):
return 'event'
- if account and gajim.interface.minimized_controls.has_key(account) and \
+ if account and account in gajim.interface.minimized_controls and \
contact.jid in gajim.interface.minimized_controls[account] and gajim.interface.\
minimized_controls[account][contact.jid].get_nb_unread_pm() > 0:
return 'event'
- if account and gajim.gc_connected[account].has_key(contact.jid):
+ if account and contact.jid in gajim.gc_connected[account]:
if gajim.gc_connected[account][contact.jid]:
return 'muc_active'
else:
@@ -787,7 +787,7 @@ def get_os_info():
(2, 5, 2): '2003',
(2, 6, 0): 'Vista',
}
- if win_version.has_key(ver_format):
+ if ver_format in win_version:
return 'Windows' + ' ' + win_version[ver_format]
else:
return 'Windows'
@@ -1175,7 +1175,7 @@ def prepare_and_validate_gpg_keyID(account, jid, keyID):
elif keyID:
public_keys = gajim.connections[account].ask_gpg_keys()
# Assign the corresponding key, if we have it in our keyring
- if public_keys.has_key(keyID):
+ if keyID in public_keys:
for u in gajim.contacts.get_contacts(account, jid):
u.keyID = keyID
keys_str = gajim.config.get_per('accounts', account, 'attached_gpg_keys')
@@ -1192,11 +1192,11 @@ def sort_identities_func(i1, i2):
return -1
if cat1 > cat2:
return 1
- if i1.has_key('type'):
+ if 'type' in i1:
type1 = i1['type']
else:
type1 = ''
- if i2.has_key('type'):
+ if 'type' in i2:
type2 = i2['type']
else:
type2 = ''
@@ -1204,11 +1204,11 @@ def sort_identities_func(i1, i2):
return -1
if type1 > type2:
return 1
- if i1.has_key('xml:lang'):
+ if 'xml:lang' in i1:
lang1 = i1['xml:lang']
else:
lang1 = ''
- if i2.has_key('xml:lang'):
+ if 'xml:lang' in i2:
lang2 = i2['xml:lang']
else:
lang2 = ''
@@ -1234,15 +1234,15 @@ def compute_caps_hash(identities, features, dataforms=[], hash_method='sha-1'):
identities.sort(cmp=sort_identities_func)
for i in identities:
c = i['category']
- if i.has_key('type'):
+ if 'type' in i:
type_ = i['type']
else:
type_ = ''
- if i.has_key('xml:lang'):
+ if 'xml:lang' in i:
lang = i['xml:lang']
else:
lang = ''
- if i.has_key('name'):
+ if 'name' in i:
name = i['name']
else:
name = ''
diff --git a/src/common/nslookup.py b/src/common/nslookup.py
index c36565dc3..df629f9da 100644
--- a/src/common/nslookup.py
+++ b/src/common/nslookup.py
@@ -150,9 +150,9 @@ class Resolver:
result_list = self.parse_srv_result(host, result)
# practically it is impossible to be the opposite, but who knows :)
- if not self.resolved_hosts.has_key(host):
+ if host not in self.resolved_hosts:
self.resolved_hosts[host] = result_list
- if self.handlers.has_key(host):
+ if host in self.handlers:
for callback in self.handlers[host]:
callback(host, result_list)
del(self.handlers[host])
@@ -169,11 +169,11 @@ class Resolver:
# empty host, return empty list of srv records
on_ready([])
return
- if self.resolved_hosts.has_key(host):
+ if host in self.resolved_hosts:
# host is already resolved, return cached values
on_ready(host, self.resolved_hosts[host])
return
- if self.handlers.has_key(host):
+ if host in self.handlers:
# host is about to be resolved by another connection,
# attach our callback
self.handlers[host].append(on_ready)
diff --git a/src/common/optparser.py b/src/common/optparser.py
index 52cb72937..86098d0b8 100644
--- a/src/common/optparser.py
+++ b/src/common/optparser.py
@@ -199,14 +199,14 @@ class OptionsParser:
def update_config_x_to_09(self):
# Var name that changed:
# avatar_width /height -> chat_avatar_width / height
- if self.old_values.has_key('avatar_width'):
+ if 'avatar_width' in self.old_values:
gajim.config.set('chat_avatar_width', self.old_values['avatar_width'])
- if self.old_values.has_key('avatar_height'):
+ if 'avatar_height' in self.old_values:
gajim.config.set('chat_avatar_height', self.old_values['avatar_height'])
- if self.old_values.has_key('use_dbus'):
+ if 'use_dbus' in self.old_values:
gajim.config.set('remote_control', self.old_values['use_dbus'])
# always_compact_view -> always_compact_view_chat / _gc
- if self.old_values.has_key('always_compact_view'):
+ if 'always_compact_view' in self.old_values:
gajim.config.set('always_compact_view_chat',
self.old_values['always_compact_view'])
gajim.config.set('always_compact_view_gc',
@@ -269,19 +269,19 @@ class OptionsParser:
con.close()
def update_config_09_to_010(self):
- if self.old_values.has_key('usetabbedchat') and not \
+ if 'usetabbedchat' in self.old_values and not \
self.old_values['usetabbedchat']:
gajim.config.set('one_message_window', 'never')
- if self.old_values.has_key('autodetect_browser_mailer') and \
+ if 'autodetect_browser_mailer' in self.old_values and \
self.old_values['autodetect_browser_mailer'] is True:
gajim.config.set('autodetect_browser_mailer', False)
- if self.old_values.has_key('useemoticons') and \
+ if 'useemoticons' in self.old_values and \
not self.old_values['useemoticons']:
gajim.config.set('emoticons_theme', '')
- if self.old_values.has_key('always_compact_view_chat') and \
+ if 'always_compact_view_chat' in self.old_values and \
self.old_values['always_compact_view_chat'] != 'False':
gajim.config.set('always_hide_chat_buttons', True)
- if self.old_values.has_key('always_compact_view_gc') and \
+ if 'always_compact_view_gc' in self.old_values and \
self.old_values['always_compact_view_gc'] != 'False':
gajim.config.set('always_hide_groupchat_buttons', True)
@@ -306,14 +306,14 @@ class OptionsParser:
gajim.config.set('version', '0.10')
def update_config_to_01011(self):
- if self.old_values.has_key('print_status_in_muc') and \
+ if 'print_status_in_muc' in self.old_values and \
self.old_values['print_status_in_muc'] in (True, False):
gajim.config.set('print_status_in_muc', 'in_and_out')
gajim.config.set('version', '0.10.1.1')
def update_config_to_01012(self):
# See [6456]
- if self.old_values.has_key('emoticons_theme') and \
+ if 'emoticons_theme' in self.old_values and \
self.old_values['emoticons_theme'] == 'Disabled':
gajim.config.set('emoticons_theme', '')
gajim.config.set('version', '0.10.1.2')
@@ -387,7 +387,7 @@ class OptionsParser:
def update_config_to_01016(self):
'''#2494 : Now we play gc_received_message sound even if
notify_on_all_muc_messages is false. Keep precedent behaviour.'''
- if self.old_values.has_key('notify_on_all_muc_messages') and \
+ if 'notify_on_all_muc_messages' in self.old_values and \
self.old_values['notify_on_all_muc_messages'] == 'False' and \
gajim.config.get_per('soundevents', 'muc_message_received', 'enabled'):
gajim.config.set_per('soundevents',\
@@ -397,43 +397,43 @@ class OptionsParser:
def update_config_to_01017(self):
'''trayicon_notification_on_new_messages ->
trayicon_notification_on_events '''
- if self.old_values.has_key('trayicon_notification_on_new_messages'):
+ if 'trayicon_notification_on_new_messages' in self.old_values:
gajim.config.set('trayicon_notification_on_events',
self.old_values['trayicon_notification_on_new_messages'])
gajim.config.set('version', '0.10.1.7')
def update_config_to_01018(self):
'''chat_state_notifications -> outgoing_chat_state_notifications'''
- if self.old_values.has_key('chat_state_notifications'):
+ if 'chat_state_notifications' in self.old_values:
gajim.config.set('outgoing_chat_state_notifications',
self.old_values['chat_state_notifications'])
gajim.config.set('version', '0.10.1.8')
def update_config_to_01101(self):
'''fill time_stamp from before_time and after_time'''
- if self.old_values.has_key('before_time'):
+ if 'before_time' in self.old_values:
gajim.config.set('time_stamp', '%s%%X%s ' % (
self.old_values['before_time'], self.old_values['after_time']))
gajim.config.set('version', '0.11.0.1')
def update_config_to_01102(self):
'''fill time_stamp from before_time and after_time'''
- if self.old_values.has_key('ft_override_host_to_send'):
+ if 'ft_override_host_to_send' in self.old_values:
gajim.config.set('ft_add_hosts_to_send',
self.old_values['ft_override_host_to_send'])
gajim.config.set('version', '0.11.0.2')
def update_config_to_01111(self):
'''always_hide_chatbuttons -> compact_view'''
- if self.old_values.has_key('always_hide_groupchat_buttons') and \
- self.old_values.has_key('always_hide_chat_buttons'):
+ if 'always_hide_groupchat_buttons' in self.old_values and \
+ 'always_hide_chat_buttons' in self.old_values:
gajim.config.set('compact_view', self.old_values['always_hide_groupchat_buttons'] and \
self.old_values['always_hide_chat_buttons'])
gajim.config.set('version', '0.11.1.1')
def update_config_to_01112(self):
'''gtk+ theme is renamed to default'''
- if self.old_values.has_key('roster_theme') and \
+ if 'roster_theme' in self.old_values and \
self.old_values['roster_theme'] == 'gtk+':
gajim.config.set('roster_theme', _('default'))
gajim.config.set('version', '0.11.1.2')
diff --git a/src/common/passwords.py b/src/common/passwords.py
index 2acd536cc..e6e66b593 100644
--- a/src/common/passwords.py
+++ b/src/common/passwords.py
@@ -101,7 +101,7 @@ class GnomePasswordStorage(PasswordStorage):
return
token = 'gnomekeyring:%i' % auth_token
gajim.config.set_per('accounts', account_name, 'password', token)
- if gajim.connections.has_key(account_name):
+ if account_name in gajim.connections:
gajim.connections[account_name].password = password
storage = None
diff --git a/src/common/pep.py b/src/common/pep.py
index 93e853c35..a3b3ac48c 100644
--- a/src/common/pep.py
+++ b/src/common/pep.py
@@ -155,35 +155,35 @@ def user_mood(items, name, jid):
if jid == gajim.get_jid_from_account(name):
acc = gajim.connections[name]
if has_child:
- if acc.mood.has_key('mood'):
+ if 'mood' in acc.mood:
del acc.mood['mood']
- if acc.mood.has_key('text'):
+ if 'text' in acc.mood:
del acc.mood['text']
if mood is not None:
acc.mood['mood'] = mood
if text is not None:
acc.mood['text'] = text
elif retract:
- if acc.mood.has_key('mood'):
+ if 'mood' in acc.mood:
del acc.mood['mood']
- if acc.mood.has_key('text'):
+ if 'text' in acc.mood:
del acc.mood['text']
(user, resource) = gajim.get_room_and_nick_from_fjid(jid)
for contact in gajim.contacts.get_contacts(name, user):
if has_child:
- if contact.mood.has_key('mood'):
+ if 'mood' in contact.mood:
del contact.mood['mood']
- if contact.mood.has_key('text'):
+ if 'text' in contact.mood:
del contact.mood['text']
if mood is not None:
contact.mood['mood'] = mood
if text is not None:
contact.mood['text'] = text
elif retract:
- if contact.mood.has_key('mood'):
+ if 'mood' in contact.mood:
del contact.mood['mood']
- if contact.mood.has_key('text'):
+ if 'text' in contact.mood:
del contact.mood['text']
if jid == gajim.get_jid_from_account(name):
@@ -223,15 +223,15 @@ def user_tune(items, name, jid):
if jid == gajim.get_jid_from_account(name):
acc = gajim.connections[name]
if has_child:
- if acc.tune.has_key('artist'):
+ if 'artist' in acc.tune:
del acc.tune['artist']
- if acc.tune.has_key('title'):
+ if 'title' in acc.tune:
del acc.tune['title']
- if acc.tune.has_key('source'):
+ if 'source' in acc.tune:
del acc.tune['source']
- if acc.tune.has_key('track'):
+ if 'track' in acc.tune:
del acc.tune['track']
- if acc.tune.has_key('length'):
+ if 'length' in acc.tune:
del acc.tune['length']
if artist is not None:
acc.tune['artist'] = artist
@@ -244,29 +244,29 @@ def user_tune(items, name, jid):
if length is not None:
acc.tune['length'] = length
elif retract:
- if acc.tune.has_key('artist'):
+ if 'artist' in acc.tune:
del acc.tune['artist']
- if acc.tune.has_key('title'):
+ if 'title' in acc.tune:
del acc.tune['title']
- if acc.tune.has_key('source'):
+ if 'source' in acc.tune:
del acc.tune['source']
- if acc.tune.has_key('track'):
+ if 'track' in acc.tune:
del acc.tune['track']
- if acc.tune.has_key('length'):
+ if 'length' in acc.tune:
del acc.tune['length']
(user, resource) = gajim.get_room_and_nick_from_fjid(jid)
for contact in gajim.contacts.get_contacts(name, user):
if has_child:
- if contact.tune.has_key('artist'):
+ if 'artist' in contact.tune:
del contact.tune['artist']
- if contact.tune.has_key('title'):
+ if 'title' in contact.tune:
del contact.tune['title']
- if contact.tune.has_key('source'):
+ if 'source' in contact.tune:
del contact.tune['source']
- if contact.tune.has_key('track'):
+ if 'track' in contact.tune:
del contact.tune['track']
- if contact.tune.has_key('length'):
+ if 'length' in contact.tune:
del contact.tune['length']
if artist is not None:
contact.tune['artist'] = artist
@@ -279,15 +279,15 @@ def user_tune(items, name, jid):
if length is not None:
contact.tune['length'] = length
elif retract:
- if contact.tune.has_key('artist'):
+ if 'artist' in contact.tune:
del contact.tune['artist']
- if contact.tune.has_key('title'):
+ if 'title' in contact.tune:
del contact.tune['title']
- if contact.tune.has_key('source'):
+ if 'source' in contact.tune:
del contact.tune['source']
- if contact.tune.has_key('track'):
+ if 'track' in contact.tune:
del contact.tune['track']
- if contact.tune.has_key('length'):
+ if 'length' in contact.tune:
del contact.tune['length']
if jid == gajim.get_jid_from_account(name):
@@ -324,11 +324,11 @@ def user_activity(items, name, jid):
if jid == gajim.get_jid_from_account(name):
acc = gajim.connections[name]
if has_child:
- if acc.activity.has_key('activity'):
+ if 'activity' in acc.activity:
del acc.activity['activity']
- if acc.activity.has_key('subactivity'):
+ if 'subactivity' in acc.activity:
del acc.activity['subactivity']
- if acc.activity.has_key('text'):
+ if 'text' in acc.activity:
del acc.activity['text']
if activity is not None:
acc.activity['activity'] = activity
@@ -337,21 +337,21 @@ def user_activity(items, name, jid):
if text is not None:
acc.activity['text'] = text
elif retract:
- if acc.activity.has_key('activity'):
+ if 'activity' in acc.activity:
del acc.activity['activity']
- if acc.activity.has_key('subactivity'):
+ if 'subactivity' in acc.activity:
del acc.activity['subactivity']
- if acc.activity.has_key('text'):
+ if 'text' in acc.activity:
del acc.activity['text']
(user, resource) = gajim.get_room_and_nick_from_fjid(jid)
for contact in gajim.contacts.get_contacts(name, user):
if has_child:
- if contact.activity.has_key('activity'):
+ if 'activity' in contact.activity:
del contact.activity['activity']
- if contact.activity.has_key('subactivity'):
+ if 'subactivity' in contact.activity:
del contact.activity['subactivity']
- if contact.activity.has_key('text'):
+ if 'text' in contact.activity:
del contact.activity['text']
if activity is not None:
contact.activity['activity'] = activity
@@ -360,11 +360,11 @@ def user_activity(items, name, jid):
if text is not None:
contact.activity['text'] = text
elif retract:
- if contact.activity.has_key('activity'):
+ if 'activity' in contact.activity:
del contact.activity['activity']
- if contact.activity.has_key('subactivity'):
+ if 'subactivity' in contact.activity:
del contact.activity['subactivity']
- if contact.activity.has_key('text'):
+ if 'text' in contact.activity:
del contact.activity['text']
if jid == gajim.get_jid_from_account(name):
diff --git a/src/common/proxy65_manager.py b/src/common/proxy65_manager.py
index db21da0ae..4782c13fa 100644
--- a/src/common/proxy65_manager.py
+++ b/src/common/proxy65_manager.py
@@ -52,7 +52,7 @@ class Proxy65Manager:
def resolve(self, proxy, connection, sender_jid, default=None):
''' start '''
- if self.proxies.has_key(proxy):
+ if proxy in self.proxies:
resolver = self.proxies[proxy]
else:
# proxy is being ressolved for the first time
@@ -68,7 +68,7 @@ class Proxy65Manager:
resolver.disconnect(connection)
def resolve_result(self, proxy, query):
- if not self.proxies.has_key(proxy):
+ if proxy not in self.proxies:
return
jid = None
for item in query.getChildren():
@@ -88,11 +88,11 @@ class Proxy65Manager:
break
def get_default_for_name(self, account):
- if self.default_proxies.has_key(account):
+ if account in self.default_proxies:
return self.default_proxies[account]
def get_proxy(self, proxy, account):
- if self.proxies.has_key(proxy):
+ if proxy in self.proxies:
resolver = self.proxies[proxy]
if resolver.state == S_FINISHED:
return (resolver.host, resolver.port, resolver.jid)
diff --git a/src/common/socks5.py b/src/common/socks5.py
index 6802f7ed8..c2af094c4 100644
--- a/src/common/socks5.py
+++ b/src/common/socks5.py
@@ -89,15 +89,15 @@ class SocksQueue:
return self.listener
def send_success_reply(self, file_props, streamhost):
- if file_props.has_key('streamhost-used') and \
+ if 'streamhost-used' in file_props and \
file_props['streamhost-used'] is True:
- if file_props.has_key('proxyhosts'):
+ if 'proxyhosts' in file_props:
for proxy in file_props['proxyhosts']:
if proxy == streamhost:
self.on_success(streamhost)
return 2
return 0
- if file_props.has_key('streamhosts'):
+ if 'streamhosts' in file_props:
for host in file_props['streamhosts']:
if streamhost['state'] == 1:
return 0
@@ -123,7 +123,7 @@ class SocksQueue:
''' called when there is a host connected to one of the
senders's streamhosts. Stop othere attempts for connections '''
for host in file_props['streamhosts']:
- if host != streamhost and host.has_key('idx'):
+ if host != streamhost and 'idx' in host:
if host['state'] == 1:
# remove current
self.remove_receiver(streamhost['idx'])
@@ -147,7 +147,7 @@ class SocksQueue:
# boolean, indicates that there are hosts, which are not tested yet
unused_hosts = False
for host in file_props['streamhosts']:
- if host.has_key('idx'):
+ if 'idx' in host:
if host['state'] >= 0:
return
elif host['state'] == -2:
@@ -161,7 +161,7 @@ class SocksQueue:
host['idx'] = receiver.queue_idx
# we still have chances to connect
return
- if not file_props.has_key('received-len') or file_props['received-len'] == 0:
+ if 'received-len' not in file_props or file_props['received-len'] == 0:
# there are no other streamhosts and transfer hasn't started
self._connection_refused(streamhost, file_props, receiver.queue_idx)
else:
@@ -176,12 +176,12 @@ class SocksQueue:
return
streamhost['state'] = -1
self.remove_receiver(idx, False)
- if file_props.has_key('streamhosts'):
+ if 'streamhosts' in file_props:
for host in file_props['streamhosts']:
if host['state'] != -1:
return
# failure_cb exists - this means that it has never been called
- if file_props.has_key('failure_cb') and file_props['failure_cb']:
+ if 'failure_cb' in file_props and file_props['failure_cb']:
file_props['failure_cb'](streamhost['initiator'], streamhost['id'],
file_props['sid'], code = 404)
del(file_props['failure_cb'])
@@ -204,8 +204,8 @@ class SocksQueue:
def get_file_from_sender(self, file_props, account):
if file_props is None:
return
- if file_props.has_key('hash') and \
- self.senders.has_key(file_props['hash']):
+ if 'hash' in file_props and \
+ file_props['hash'] in self.senders:
sender = self.senders[file_props['hash']]
sender.account = account
@@ -213,12 +213,12 @@ class SocksQueue:
self.process_result(result, sender)
def result_sha(self, sha_str, idx):
- if self.sha_handlers.has_key(sha_str):
+ if sha_str in self.sha_handlers:
props = self.sha_handlers[sha_str]
props[0](props[1], idx)
def activate_proxy(self, idx):
- if not self.readers.has_key(idx):
+ if idx not in self.readers:
return
reader = self.readers[idx]
if reader.file_props['type'] != 's':
@@ -244,8 +244,8 @@ class SocksQueue:
self.process_result(result, reader)
def send_file(self, file_props, account):
- if file_props.has_key('hash') and \
- self.senders.has_key(file_props['hash']):
+ if 'hash' in file_props and \
+ file_props['hash'] in self.senders:
sender = self.senders[file_props['hash']]
file_props['streamhost-used'] = True
sender.account = account
@@ -264,17 +264,17 @@ class SocksQueue:
It is identified by account name and sid
'''
if file_props is None or \
- file_props.has_key('sid') is False:
+ ('sid' in file_props) is False:
return
_id = file_props['sid']
- if not self.files_props.has_key(account):
+ if account not in self.files_props:
self.files_props[account] = {}
self.files_props[account][_id] = file_props
def remove_file_props(self, account, sid):
- if self.files_props.has_key(account):
+ if account in self.files_props:
fl_props = self.files_props[account]
- if fl_props.has_key(sid):
+ if sid in fl_props:
del(fl_props[sid])
if len(self.files_props) == 0:
@@ -282,15 +282,15 @@ class SocksQueue:
def get_file_props(self, account, sid):
''' get fil_prop by account name and session id '''
- if self.files_props.has_key(account):
+ if account in self.files_props:
fl_props = self.files_props[account]
- if fl_props.has_key(sid):
+ if sid in fl_props:
return fl_props[sid]
return None
def on_connection_accepted(self, sock):
sock_hash = sock.__hash__()
- if not self.senders.has_key(sock_hash):
+ if sock_hash not in self.senders:
self.senders[sock_hash] = Socks5Sender(self.idlequeue,
sock_hash, self, sock[0], sock[1][0], sock[1][1])
self.connected += 1
@@ -305,7 +305,7 @@ class SocksQueue:
return
if result in (0, -1) and self.complete_transfer_cb is not None:
account = actor.account
- if account is None and actor.file_props.has_key('tt_account'):
+ if account is None and 'tt_account' in actor.file_props:
account = actor.file_props['tt_account']
self.complete_transfer_cb(account, actor.file_props)
elif self.progress_transfer_cb is not None:
@@ -315,7 +315,7 @@ class SocksQueue:
''' Remove reciver from the list and decrease
the number of active connections with 1'''
if idx != -1:
- if self.readers.has_key(idx):
+ if idx in self.readers:
reader = self.readers[idx]
self.idlequeue.unplug_idle(reader.fd)
self.idlequeue.remove_timeout(reader.fd)
@@ -330,7 +330,7 @@ class SocksQueue:
''' Remove sender from the list of senders and decrease the
number of active connections with 1'''
if idx != -1:
- if self.senders.has_key(idx):
+ if idx in self.senders:
if do_disconnect:
self.senders[idx].disconnect()
return
@@ -369,7 +369,7 @@ class Socks5:
if self.file is None:
try:
self.file = open(self.file_props['file-name'],'rb')
- if self.file_props.has_key('offset') and self.file_props['offset']:
+ if 'offset' in self.file_props and self.file_props['offset']:
self.size = self.file_props['offset']
self.file.seek(self.size)
self.file_props['received-len'] = self.size
@@ -390,12 +390,12 @@ class Socks5:
''' Test if file is already open and return its fd,
or just open the file and return the fd.
'''
- if self.file_props.has_key('fd'):
+ if 'fd' in self.file_props:
fd = self.file_props['fd']
else:
offset = 0
opt = 'wb'
- if self.file_props.has_key('offset') and self.file_props['offset']:
+ if 'offset' in self.file_props and self.file_props['offset']:
offset = self.file_props['offset']
opt = 'ab'
fd = open(self.file_props['file-name'], opt)
@@ -406,7 +406,7 @@ class Socks5:
return fd
def rem_fd(self, fd):
- if self.file_props.has_key('fd'):
+ if 'fd' in self.file_props:
del(self.file_props['fd'])
try:
fd.close()
@@ -488,7 +488,7 @@ class Socks5:
''' read file contents from socket and write them to file ''', \
self.file_props['type'], self.file_props['sid']
if self.file_props is None or \
- self.file_props.has_key('file-name') is False:
+ ('file-name' in self.file_props) is False:
self.file_props['error'] = -2
return None
fd = None
@@ -545,7 +545,7 @@ class Socks5:
self.file_props['stalled'] = False
if fd is None and self.file_props['stalled'] is False:
return None
- if self.file_props.has_key('received-len'):
+ if 'received-len' in self.file_props:
if self.file_props['received-len'] != 0:
return self.file_props['received-len']
return None
@@ -647,7 +647,7 @@ class Socks5:
def _get_sha1_auth(self):
''' get sha of sid + Initiator jid + Target jid '''
- if self.file_props.has_key('is_a_proxy'):
+ if 'is_a_proxy' in self.file_props:
del(self.file_props['is_a_proxy'])
return sha.new('%s%s%s' % (self.sid, self.file_props['proxy_sender'],
self.file_props['proxy_receiver'])).hexdigest()
@@ -880,7 +880,7 @@ class Socks5Receiver(Socks5, IdleObject):
# no activity for foo seconds
if self.file_props['stalled'] == False:
self.file_props['stalled'] = True
- if not self.file_props.has_key('received-len'):
+ if 'received-len' not in self.file_props:
self.file_props['received-len'] = 0
self.queue.process_result(-1, self)
if READ_TIMEOUT > 0:
diff --git a/src/common/xmpp/auth.py b/src/common/xmpp/auth.py
index 77666c48d..698f09015 100644
--- a/src/common/xmpp/auth.py
+++ b/src/common/xmpp/auth.py
@@ -102,7 +102,7 @@ class SASL(PlugIn):
self.password=password
def plugin(self,owner):
- if not self._owner.Dispatcher.Stream._document_attrs.has_key('version'): self.startsasl='not-supported'
+ if 'version' not in self._owner.Dispatcher.Stream._document_attrs: self.startsasl='not-supported'
elif self._owner.Dispatcher.Stream.features:
try: self.FeaturesHandler(self._owner.Dispatcher,self._owner.Dispatcher.Stream.features)
except NodeProcessed: pass
@@ -177,7 +177,7 @@ class SASL(PlugIn):
key,value=pair.split('=', 1)
if value[:1]=='"' and value[-1:]=='"': value=value[1:-1]
chal[key]=value
- if chal.has_key('qop') and chal['qop']=='auth':
+ if 'qop' in chal and chal['qop']=='auth':
resp={}
resp['username']=self.username
resp['realm']=self._owner.Server
@@ -201,7 +201,7 @@ class SASL(PlugIn):
########################################3333
node=Node('response',attrs={'xmlns':NS_SASL},payload=[base64.encodestring(sasl_data[:-1]).replace('\r','').replace('\n','')])
self._owner.send(node.__str__())
- elif chal.has_key('rspauth'): self._owner.send(Node('response',attrs={'xmlns':NS_SASL}).__str__())
+ elif 'rspauth' in chal: self._owner.send(Node('response',attrs={'xmlns':NS_SASL}).__str__())
else:
self.startsasl='failure'
self.DEBUG('Failed SASL authentification: unknown challenge','error')
diff --git a/src/common/xmpp/auth_nb.py b/src/common/xmpp/auth_nb.py
index 06ea8239d..89065367c 100644
--- a/src/common/xmpp/auth_nb.py
+++ b/src/common/xmpp/auth_nb.py
@@ -100,7 +100,7 @@ class SASL(PlugIn):
self.on_sasl = on_sasl
self.realm = None
def plugin(self,owner):
- if not self._owner.Dispatcher.Stream._document_attrs.has_key('version'):
+ if 'version' not in self._owner.Dispatcher.Stream._document_attrs:
self.startsasl='not-supported'
elif self._owner.Dispatcher.Stream.features:
try:
@@ -212,9 +212,9 @@ class SASL(PlugIn):
payload=response).__str__())
raise NodeProcessed
chal = challenge_splitter(data)
- if not self.realm and chal.has_key('realm'):
+ if not self.realm and 'realm' in chal:
self.realm = chal['realm']
- if chal.has_key('qop') and ((type(chal['qop']) == str and \
+ if 'qop' in chal and ((type(chal['qop']) == str and \
chal['qop'] =='auth') or (type(chal['qop']) == list and 'auth' in \
chal['qop'])):
resp={}
@@ -248,7 +248,7 @@ class SASL(PlugIn):
node=Node('response', attrs={'xmlns':NS_SASL},
payload=[base64.encodestring(sasl_data[:-1]).replace('\r','').replace('\n','')])
self._owner.send(node.__str__())
- elif chal.has_key('rspauth'):
+ elif 'rspauth' in chal:
self._owner.send(Node('response', attrs={'xmlns':NS_SASL}).__str__())
else:
self.startsasl='failure'
diff --git a/src/common/xmpp/browser.py b/src/common/xmpp/browser.py
index 7d89a95bd..04c562f25 100644
--- a/src/common/xmpp/browser.py
+++ b/src/common/xmpp/browser.py
@@ -104,7 +104,7 @@ class Browser(PlugIn):
Set returns '' or None as the key
get returns '' or None as the key or None as the dict.
Used internally."""
- if self._handlers.has_key(jid): cur=self._handlers[jid]
+ if jid in self._handlers: cur=self._handlers[jid]
elif set:
self._handlers[jid]={}
cur=self._handlers[jid]
@@ -112,11 +112,11 @@ class Browser(PlugIn):
if node is None: node=[None]
else: node=node.replace('/',' /').split('/')
for i in node:
- if i<>'' and cur.has_key(i): cur=cur[i]
+ if i<>'' and i in cur: cur=cur[i]
elif set and i<>'': cur[i]={dict:cur,str:i}; cur=cur[i]
- elif set or cur.has_key(''): return cur,''
+ elif set or '' in cur: return cur,''
else: return None,None
- if cur.has_key(1) or set: return cur,1
+ if 1 in cur or set: return cur,1
raise "Corrupted data"
def setDiscoHandler(self,handler,node='',jid=''):
@@ -211,7 +211,7 @@ class Browser(PlugIn):
# {'ids':[{},{},{},{}], 'features':[fe,at,ur,es], 'xdata':DataForm}
for id in dt['ids']: q.addChild('identity',id)
for feature in dt['features']: q.addChild('feature',{'var':feature})
- if dt.has_key('xdata'): q.addChild(node=dt['xdata'])
+ if 'xdata' in dt: q.addChild(node=dt['xdata'])
conn.send(rep)
raise NodeProcessed
diff --git a/src/common/xmpp/client.py b/src/common/xmpp/client.py
index 8d6bfa9cc..539a1481f 100644
--- a/src/common/xmpp/client.py
+++ b/src/common/xmpp/client.py
@@ -62,15 +62,15 @@ class PlugIn:
if self.DBG_LINE not in owner.debug_flags:
owner.debug_flags.append(self.DBG_LINE)
self.DEBUG('Plugging %s into %s'%(self,self._owner),'start')
- if owner.__dict__.has_key(self.__class__.__name__):
+ if self.__class__.__name__ in owner.__dict__:
return self.DEBUG('Plugging ignored: another instance already plugged.','error')
self._old_owners_methods=[]
for method in self._exported_methods:
- if owner.__dict__.has_key(method.__name__):
+ if method.__name__ in owner.__dict__:
self._old_owners_methods.append(owner.__dict__[method.__name__])
owner.__dict__[method.__name__]=method
owner.__dict__[self.__class__.__name__]=self
- if self.__class__.__dict__.has_key('plugin'): return self.plugin(owner)
+ if 'plugin' in self.__class__.__dict__: return self.plugin(owner)
def PlugOut(self):
""" Unregister all our staff from main instance and detach from it. """
@@ -79,7 +79,7 @@ class PlugIn:
for method in self._exported_methods: del self._owner.__dict__[method.__name__]
for method in self._old_owners_methods: self._owner.__dict__[method.__name__]=method
del self._owner.__dict__[self.__class__.__name__]
- if self.__class__.__dict__.has_key('plugout'): return self.plugout()
+ if 'plugout' in self.__class__.__dict__: return self.plugout()
del self._owner
def DEBUG(self,text,severity='info'):
@@ -130,7 +130,7 @@ class CommonClient:
self.disconnect_handlers.reverse()
for i in self.disconnect_handlers: i()
self.disconnect_handlers.reverse()
- if self.__dict__.has_key('TLS'): self.TLS.PlugOut()
+ if 'TLS' in self.__dict__: self.TLS.PlugOut()
def DisconnectHandler(self):
""" Default disconnect handler. Just raises an IOError.
@@ -150,11 +150,11 @@ class CommonClient:
""" Example of reconnection method. In fact, it can be used to batch connection and auth as well. """
handlerssave=self.Dispatcher.dumpHandlers()
self.Dispatcher.PlugOut()
- if self.__dict__.has_key('NonSASL'): self.NonSASL.PlugOut()
- if self.__dict__.has_key('SASL'): self.SASL.PlugOut()
- if self.__dict__.has_key('TLS'): self.TLS.PlugOut()
- if self.__dict__.has_key('HTTPPROXYsocket'): self.HTTPPROXYsocket.PlugOut()
- if self.__dict__.has_key('TCPsocket'): self.TCPsocket.PlugOut()
+ if 'NonSASL' in self.__dict__: self.NonSASL.PlugOut()
+ if 'SASL' in self.__dict__: self.SASL.PlugOut()
+ if 'TLS' in self.__dict__: self.TLS.PlugOut()
+ if 'HTTPPROXYsocket' in self.__dict__: self.HTTPPROXYsocket.PlugOut()
+ if 'TCPsocket' in self.__dict__: self.TCPsocket.PlugOut()
if not self.connect(server=self._Server,proxy=self._Proxy): return
if not self.auth(self._User,self._Password,self._Resource): return
self.Dispatcher.restoreHandlers(handlerssave)
@@ -188,7 +188,7 @@ class CommonClient:
dispatcher.Dispatcher().PlugIn(self)
while self.Dispatcher.Stream._document_attrs is None:
if not self.Process(1): return
- if self.Dispatcher.Stream._document_attrs.has_key('version') and self.Dispatcher.Stream._document_attrs['version']=='1.0':
+ if 'version' in self.Dispatcher.Stream._document_attrs and self.Dispatcher.Stream._document_attrs['version']=='1.0':
while not self.Dispatcher.Stream.features and self.Process(): pass # If we get version 1.0 stream the features tag MUST BE presented
return self.connected
@@ -205,7 +205,7 @@ class Client(CommonClient):
Returns '' or 'tcp' or 'tls', depending on the result."""
if not CommonClient.connect(self,server,proxy,secure,use_srv) or secure<>None and not secure: return self.connected
transports.TLS().PlugIn(self)
- if not self.Dispatcher.Stream._document_attrs.has_key('version') or not self.Dispatcher.Stream._document_attrs['version']=='1.0': return self.connected
+ if 'version' not in self.Dispatcher.Stream._document_attrs or not self.Dispatcher.Stream._document_attrs['version']=='1.0': return self.connected
while not self.Dispatcher.Stream.features and self.Process(): pass # If we get version 1.0 stream the features tag MUST BE presented
if not self.Dispatcher.Stream.features.getTag('starttls'): return self.connected # TLS not supported by server
while not self.TLS.starttls and self.Process(): pass
@@ -218,7 +218,7 @@ class Client(CommonClient):
random one or library name used. """
self._User,self._Password,self._Resource=user,password,resource
while not self.Dispatcher.Stream._document_attrs and self.Process(): pass
- if self.Dispatcher.Stream._document_attrs.has_key('version') and self.Dispatcher.Stream._document_attrs['version']=='1.0':
+ if 'version' in self.Dispatcher.Stream._document_attrs and self.Dispatcher.Stream._document_attrs['version']=='1.0':
while not self.Dispatcher.Stream.features and self.Process(): pass # If we get version 1.0 stream the features tag MUST BE presented
if sasl: auth.SASL(user,password).PlugIn(self)
if not sasl or self.SASL.startsasl=='not-supported':
@@ -238,7 +238,7 @@ class Client(CommonClient):
def initRoster(self):
""" Plug in the roster. """
- if not self.__dict__.has_key('Roster'): roster.Roster().PlugIn(self)
+ if 'Roster' not in self.__dict__: roster.Roster().PlugIn(self)
def getRoster(self):
""" Return the Roster instance, previously plugging it in and
diff --git a/src/common/xmpp/client_nb.py b/src/common/xmpp/client_nb.py
index 8393ff160..67c7f6a3e 100644
--- a/src/common/xmpp/client_nb.py
+++ b/src/common/xmpp/client_nb.py
@@ -77,21 +77,21 @@ class NBCommonClient(CommonClient):
self.DEBUG(self.DBG,'Disconnect detected','stop')
for i in reversed(self.disconnect_handlers):
i()
- if self.__dict__.has_key('NonBlockingRoster'):
+ if 'NonBlockingRoster' in self.__dict__:
self.NonBlockingRoster.PlugOut()
- if self.__dict__.has_key('NonBlockingBind'):
+ if 'NonBlockingBind' in self.__dict__:
self.NonBlockingBind.PlugOut()
- if self.__dict__.has_key('NonBlockingNonSASL'):
+ if 'NonBlockingNonSASL' in self.__dict__:
self.NonBlockingNonSASL.PlugOut()
- if self.__dict__.has_key('SASL'):
+ if 'SASL' in self.__dict__:
self.SASL.PlugOut()
- if self.__dict__.has_key('NonBlockingTLS'):
+ if 'NonBlockingTLS' in self.__dict__:
self.NonBlockingTLS.PlugOut()
- if self.__dict__.has_key('NBHTTPPROXYsocket'):
+ if 'NBHTTPPROXYsocket' in self.__dict__:
self.NBHTTPPROXYsocket.PlugOut()
- if self.__dict__.has_key('NBSOCKS5PROXYsocket'):
+ if 'NBSOCKS5PROXYsocket' in self.__dict__:
self.NBSOCKS5PROXYsocket.PlugOut()
- if self.__dict__.has_key('NonBlockingTcp'):
+ if 'NonBlockingTcp' in self.__dict__:
self.NonBlockingTcp.PlugOut()
def reconnectAndReauth(self):
@@ -106,7 +106,7 @@ class NBCommonClient(CommonClient):
self._Server, self._Proxy, self._Ssl = server , proxy, ssl
self.on_stream_start = on_stream_start
if proxy:
- if proxy.has_key('type'):
+ if 'type' in proxy:
type_ = proxy['type']
if type_ == 'socks5':
self.socket = transports_nb.NBSOCKS5PROXYsocket(
@@ -164,7 +164,7 @@ class NBCommonClient(CommonClient):
self.Dispatcher.Stream._document_attrs is None:
return
self.onreceive(None)
- if self.Dispatcher.Stream._document_attrs.has_key('version') and \
+ if 'version' in self.Dispatcher.Stream._document_attrs and \
self.Dispatcher.Stream._document_attrs['version'] == '1.0':
self.onreceive(self._on_receive_stream_features)
return
@@ -219,7 +219,7 @@ class NonBlockingClient(NBCommonClient):
transports_nb.NonBlockingTLS().PlugIn(self)
if not self.Connection: # ssl error, stream is closed
return True
- if not self.Dispatcher.Stream._document_attrs.has_key('version') or \
+ if 'version' not in self.Dispatcher.Stream._document_attrs or \
not self.Dispatcher.Stream._document_attrs['version']=='1.0':
self._is_connected()
return
@@ -273,7 +273,7 @@ class NonBlockingClient(NBCommonClient):
def _on_start_sasl(self, data=None):
if data:
self.Dispatcher.ProcessNonBlocking(data)
- if not self.__dict__.has_key('SASL'):
+ if 'SASL' not in self.__dict__:
# SASL is pluged out, possible disconnect
return
if self.SASL.startsasl == 'in-process':
@@ -307,13 +307,13 @@ class NonBlockingClient(NBCommonClient):
def initRoster(self):
''' Plug in the roster. '''
- if not self.__dict__.has_key('NonBlockingRoster'):
+ if 'NonBlockingRoster' not in self.__dict__:
roster_nb.NonBlockingRoster().PlugIn(self)
def getRoster(self, on_ready = None):
''' Return the Roster instance, previously plugging it in and
requesting roster from server if needed. '''
- if self.__dict__.has_key('NonBlockingRoster'):
+ if 'NonBlockingRoster' in self.__dict__:
return self.NonBlockingRoster.getRoster(on_ready)
return None
diff --git a/src/common/xmpp/commands.py b/src/common/xmpp/commands.py
index 8dd7863c4..3e5658738 100644
--- a/src/common/xmpp/commands.py
+++ b/src/common/xmpp/commands.py
@@ -78,13 +78,13 @@ class Commands(PlugIn):
except:
conn.send(Error(request,ERR_BAD_REQUEST))
raise NodeProcessed
- if self._handlers.has_key(jid):
- if self._handlers[jid].has_key(node):
+ if jid in self._handlers:
+ if node in self._handlers[jid]:
self._handlers[jid][node]['execute'](conn,request)
else:
conn.send(Error(request,ERR_ITEM_NOT_FOUND))
raise NodeProcessed
- elif self._handlers[''].has_key(node):
+ elif node in self._handlers['']:
self._handlers[''][node]['execute'](conn,request)
else:
conn.send(Error(request,ERR_ITEM_NOT_FOUND))
@@ -105,7 +105,7 @@ class Commands(PlugIn):
items = []
jid = str(request.getTo())
# Get specific jid based results
- if self._handlers.has_key(jid):
+ if jid in self._handlers:
for each in self._handlers[jid].keys():
items.append((jid,each))
else:
@@ -133,10 +133,10 @@ class Commands(PlugIn):
# We must:
# Add item into disco
# Add item into command list
- if not self._handlers.has_key(jid):
+ if jid not in self._handlers:
self._handlers[jid]={}
self._browser.setDiscoHandler(self._DiscoHandler,node=NS_COMMANDS,jid=jid)
- if self._handlers[jid].has_key(name):
+ if name in self._handlers[jid]:
raise NameError,'Command Exists'
else:
self._handlers[jid][name]={'disco':cmddisco,'execute':cmdexecute}
@@ -149,9 +149,9 @@ class Commands(PlugIn):
# We must:
# Remove item from disco
# Remove item from command list
- if not self._handlers.has_key(jid):
+ if jid not in self._handlers:
raise NameError,'Jid not found'
- if not self._handlers[jid].has_key(name):
+ if name not in self._handlers[jid]:
raise NameError, 'Command not found'
else:
#Do disco removal here
@@ -164,9 +164,9 @@ class Commands(PlugIn):
# This gets the command object with name
# We must:
# Return item that matches this name
- if not self._handlers.has_key(jid):
+ if jid not in self._handlers:
raise NameError,'Jid not found'
- elif not self._handlers[jid].has_key(name):
+ elif name not in self._handlers[jid]:
raise NameError,'Command not found'
else:
return self._handlers[jid][name]
@@ -229,10 +229,10 @@ class Command_Handler_Prototype(PlugIn):
action = None
if action is None: action = 'execute'
# Check session is in session list
- if self.sessions.has_key(session):
+ if session in self.sessions:
if self.sessions[session]['jid']==request.getFrom():
# Check action is vaild
- if self.sessions[session]['actions'].has_key(action):
+ if action in self.sessions[session]['actions']:
# Execute next action
self.sessions[session]['actions'][action](conn,request)
else:
diff --git a/src/common/xmpp/debug.py b/src/common/xmpp/debug.py
index fa1e52c29..9954f3433 100644
--- a/src/common/xmpp/debug.py
+++ b/src/common/xmpp/debug.py
@@ -46,7 +46,7 @@ import os
import types
-if os.environ.has_key('TERM'):
+if 'TERM' in os.environ:
colors_enabled=True
else:
colors_enabled=False
@@ -377,10 +377,10 @@ class Debug:
def Show(self, flag, msg, prefix=''):
msg=msg.replace('\r','\\r').replace('\n','\\n').replace('><','>\n <')
if not colors_enabled: pass
- elif self.colors.has_key(prefix): msg=self.colors[prefix]+msg+color_none
+ elif prefix in self.colors: msg=self.colors[prefix]+msg+color_none
else: msg=color_none+msg
if not colors_enabled: prefixcolor=''
- elif self.colors.has_key(flag): prefixcolor=self.colors[flag]
+ elif flag in self.colors: prefixcolor=self.colors[flag]
else: prefixcolor=color_none
if prefix=='error':
diff --git a/src/common/xmpp/dispatcher.py b/src/common/xmpp/dispatcher.py
index 060185706..e2ae23c1e 100644
--- a/src/common/xmpp/dispatcher.py
+++ b/src/common/xmpp/dispatcher.py
@@ -175,9 +175,9 @@ class Dispatcher(PlugIn):
if not xmlns: xmlns=self._owner.defaultNamespace
self.DEBUG('Registering handler %s for "%s" type->%s ns->%s(%s)'%(handler,name,typ,ns,xmlns), 'info')
if not typ and not ns: typ='default'
- if not self.handlers.has_key(xmlns): self.RegisterNamespace(xmlns,'warn')
- if not self.handlers[xmlns].has_key(name): self.RegisterProtocol(name,Protocol,xmlns,'warn')
- if not self.handlers[xmlns][name].has_key(typ+ns): self.handlers[xmlns][name][typ+ns]=[]
+ if xmlns not in self.handlers: self.RegisterNamespace(xmlns,'warn')
+ if name not in self.handlers[xmlns]: self.RegisterProtocol(name,Protocol,xmlns,'warn')
+ if typ+ns not in self.handlers[xmlns][name]: self.handlers[xmlns][name][typ+ns]=[]
if makefirst: self.handlers[xmlns][name][typ+ns].insert(0,{'func':handler,'system':system})
else: self.handlers[xmlns][name][typ+ns].append({'func':handler,'system':system})
@@ -190,8 +190,8 @@ class Dispatcher(PlugIn):
""" Unregister handler. "typ" and "ns" must be specified exactly the same as with registering."""
if not xmlns: xmlns=self._owner.defaultNamespace
if not typ and not ns: typ='default'
- if not self.handlers[xmlns].has_key(name): return
- if not self.handlers[xmlns][name].has_key(typ+ns): return
+ if name not in self.handlers[xmlns]: return
+ if typ+ns not in self.handlers[xmlns][name]: return
for pack in self.handlers[xmlns][name][typ+ns]:
if handler==pack['func']: break
else: pack=None
@@ -264,10 +264,10 @@ class Dispatcher(PlugIn):
if name=='features': session.Stream.features=stanza
xmlns=stanza.getNamespace()
- if not self.handlers.has_key(xmlns):
+ if xmlns not in self.handlers:
self.DEBUG("Unknown namespace: " + xmlns,'warn')
xmlns='unknown'
- if not self.handlers[xmlns].has_key(name):
+ if name not in self.handlers[xmlns]:
self.DEBUG("Unknown stanza: " + name,'warn')
name='unknown'
else:
@@ -283,17 +283,17 @@ class Dispatcher(PlugIn):
session.DEBUG("Dispatching %s stanza with type->%s props->%s id->%s"%(name,typ,stanza.props,ID),'ok')
list=['default'] # we will use all handlers:
- if self.handlers[xmlns][name].has_key(typ): list.append(typ) # from very common...
+ if typ in self.handlers[xmlns][name]: list.append(typ) # from very common...
for prop in stanza.props:
- if self.handlers[xmlns][name].has_key(prop): list.append(prop)
- if typ and self.handlers[xmlns][name].has_key(typ+prop): list.append(typ+prop) # ...to very particular
+ if prop in self.handlers[xmlns][name]: list.append(prop)
+ if typ and typ+prop in self.handlers[xmlns][name]: list.append(typ+prop) # ...to very particular
chain=self.handlers[xmlns]['default']['default']
for key in list:
if key: chain = chain + self.handlers[xmlns][name][key]
output=''
- if session._expected.has_key(ID):
+ if ID in session._expected:
user=0
if type(session._expected[ID])==type(()):
cb,args=session._expected[ID]
diff --git a/src/common/xmpp/dispatcher_nb.py b/src/common/xmpp/dispatcher_nb.py
index 8265a0d6e..ab865157d 100644
--- a/src/common/xmpp/dispatcher_nb.py
+++ b/src/common/xmpp/dispatcher_nb.py
@@ -193,11 +193,11 @@ class Dispatcher(PlugIn):
(handler, name, typ, ns, xmlns), 'info')
if not typ and not ns:
typ='default'
- if not self.handlers.has_key(xmlns):
+ if xmlns not in self.handlers:
self.RegisterNamespace(xmlns,'warn')
- if not self.handlers[xmlns].has_key(name):
+ if name not in self.handlers[xmlns]:
self.RegisterProtocol(name,Protocol,xmlns,'warn')
- if not self.handlers[xmlns][name].has_key(typ+ns):
+ if typ+ns not in self.handlers[xmlns][name]:
self.handlers[xmlns][name][typ+ns]=[]
if makefirst:
self.handlers[xmlns][name][typ+ns].insert(0,{'func':handler,'system':system})
@@ -216,11 +216,11 @@ class Dispatcher(PlugIn):
xmlns=self._owner.defaultNamespace
if not typ and not ns:
typ='default'
- if not self.handlers.has_key(xmlns):
+ if xmlns not in self.handlers:
return
- if not self.handlers[xmlns].has_key(name):
+ if name not in self.handlers[xmlns]:
return
- if not self.handlers[xmlns][name].has_key(typ+ns):
+ if typ+ns not in self.handlers[xmlns][name]:
return
for pack in self.handlers[xmlns][name][typ+ns]:
if handler==pack['func']:
@@ -306,10 +306,10 @@ class Dispatcher(PlugIn):
session.Stream.features=stanza
xmlns=stanza.getNamespace()
- if not self.handlers.has_key(xmlns):
+ if xmlns not in self.handlers:
self.DEBUG("Unknown namespace: " + xmlns, 'warn')
xmlns='unknown'
- if not self.handlers[xmlns].has_key(name):
+ if name not in self.handlers[xmlns]:
self.DEBUG("Unknown stanza: " + name, 'warn')
name='unknown'
else:
@@ -325,17 +325,17 @@ class Dispatcher(PlugIn):
session.DEBUG("Dispatching %s stanza with type->%s props->%s id->%s"%(name,typ,stanza.props,ID),'ok')
list=['default'] # we will use all handlers:
- if self.handlers[xmlns][name].has_key(typ): list.append(typ) # from very common...
+ if typ in self.handlers[xmlns][name]: list.append(typ) # from very common...
for prop in stanza.props:
- if self.handlers[xmlns][name].has_key(prop): list.append(prop)
- if typ and self.handlers[xmlns][name].has_key(typ+prop): list.append(typ+prop) # ...to very particular
+ if prop in self.handlers[xmlns][name]: list.append(prop)
+ if typ and typ+prop in self.handlers[xmlns][name]: list.append(typ+prop) # ...to very particular
chain=self.handlers[xmlns]['default']['default']
for key in list:
if key: chain = chain + self.handlers[xmlns][name][key]
output=''
- if session._expected.has_key(ID):
+ if ID in session._expected:
user=0
if type(session._expected[ID]) == type(()):
cb,args = session._expected[ID]
@@ -372,7 +372,7 @@ class Dispatcher(PlugIn):
self._owner.remove_timeout()
if self._expected[self._witid] is None:
return
- if self.on_responses.has_key(self._witid):
+ if self._witid in self.on_responses:
i = self._witid # copy id cause it can change in resp() call
self._owner.onreceive(None)
resp, args = self.on_responses[self._witid]
diff --git a/src/common/xmpp/features_nb.py b/src/common/xmpp/features_nb.py
index ac1737948..a7a8b0849 100644
--- a/src/common/xmpp/features_nb.py
+++ b/src/common/xmpp/features_nb.py
@@ -236,13 +236,13 @@ def setPrivacyList(disp, listname, tags):
iq = Iq('set', NS_PRIVACY, xmlns = '')
list_query = iq.getTag('query').setTag('list', {'name': listname})
for item in tags:
- if item.has_key('type') and item.has_key('value'):
+ if 'type' in item and 'value' in item:
item_tag = list_query.setTag('item', {'action': item['action'],
'order': item['order'], 'type': item['type'], 'value': item['value']})
else:
item_tag = list_query.setTag('item', {'action': item['action'],
'order': item['order']})
- if item.has_key('child'):
+ if 'child' in item:
for child_tag in item['child']:
item_tag.setTag(child_tag)
_on_default_response(disp, iq, None)
diff --git a/src/common/xmpp/idlequeue.py b/src/common/xmpp/idlequeue.py
index b3be0e755..085902580 100644
--- a/src/common/xmpp/idlequeue.py
+++ b/src/common/xmpp/idlequeue.py
@@ -53,14 +53,14 @@ class IdleQueue:
self.selector = select.poll()
def remove_timeout(self, fd):
- if self.read_timeouts.has_key(fd):
+ if fd in self.read_timeouts:
del(self.read_timeouts[fd])
def set_alarm(self, alarm_cb, seconds):
''' set up a new alarm, to be called after alarm_cb sec. '''
alarm_time = self.current_time() + seconds
# almost impossible, but in case we have another alarm_cb at this time
- if self.alarms.has_key(alarm_time):
+ if alarm_time in self.alarms:
self.alarms[alarm_time].append(alarm_cb)
else:
self.alarms[alarm_time] = [alarm_cb]
@@ -76,7 +76,7 @@ class IdleQueue:
for fd, timeout in self.read_timeouts.items():
if timeout > current_time:
continue
- if self.queue.has_key(fd):
+ if fd in self.queue:
self.queue[fd].read_timeout()
else:
self.remove_timeout(fd)
@@ -91,7 +91,7 @@ class IdleQueue:
def plug_idle(self, obj, writable = True, readable = True):
if obj.fd == -1:
return
- if self.queue.has_key(obj.fd):
+ if obj.fd in self.queue:
self.unplug_idle(obj.fd)
self.queue[obj.fd] = obj
if writable:
@@ -111,7 +111,7 @@ class IdleQueue:
self.selector.register(fd, flags)
def unplug_idle(self, fd):
- if self.queue.has_key(fd):
+ if fd in self.queue:
del(self.queue[fd])
self.remove_idle(fd)
@@ -187,11 +187,11 @@ class SelectIdleQueue(IdleQueue):
''' this method is called when we unplug a new idle object.
Remove descriptor from read/write/error lists
'''
- if self.read_fds.has_key(fd):
+ if fd in self.read_fds:
del(self.read_fds[fd])
- if self.write_fds.has_key(fd):
+ if fd in self.write_fds:
del(self.write_fds[fd])
- if self.error_fds.has_key(fd):
+ if fd in self.error_fds:
del(self.error_fds[fd])
def process(self):
diff --git a/src/common/xmpp/protocol.py b/src/common/xmpp/protocol.py
index 720781f68..04bec8a58 100644
--- a/src/common/xmpp/protocol.py
+++ b/src/common/xmpp/protocol.py
@@ -321,7 +321,7 @@ class Protocol(Node):
if not node and xmlns: self.setNamespace(xmlns)
if self['to']: self.setTo(self['to'])
if self['from']: self.setFrom(self['from'])
- if node and type(self)==type(node) and self.__class__==node.__class__ and self.attrs.has_key('id'): del self.attrs['id']
+ if node and type(self)==type(node) and self.__class__==node.__class__ and 'id' in self.attrs: del self.attrs['id']
self.timestamp=None
for d in self.getTags('delay',namespace=NS_DELAY2):
try:
@@ -598,7 +598,7 @@ class ErrorNode(Node):
""" Create new error node object.
Mandatory parameter: name - name of error condition.
Optional parameters: code, typ, text. Used for backwards compartibility with older jabber protocol."""
- if ERRORS.has_key(name):
+ if name in ERRORS:
cod,type,txt=ERRORS[name]
ns=name.split()[0]
else: cod,ns,type,txt='500',NS_STANZAS,'cancel',''
diff --git a/src/common/xmpp/roster.py b/src/common/xmpp/roster.py
index 3ec9952bb..3f1f48f62 100644
--- a/src/common/xmpp/roster.py
+++ b/src/common/xmpp/roster.py
@@ -71,15 +71,15 @@ class Roster(PlugIn):
for item in stanza.getTag('query').getTags('item'):
jid=item.getAttr('jid')
if item.getAttr('subscription')=='remove':
- if self._data.has_key(jid): del self._data[jid]
+ if jid in self._data: del self._data[jid]
return
self.DEBUG('Setting roster item %s...'%jid,'ok')
- if not self._data.has_key(jid): self._data[jid]={}
+ if jid not in self._data: self._data[jid]={}
self._data[jid]['name']=item.getAttr('name')
self._data[jid]['ask']=item.getAttr('ask')
self._data[jid]['subscription']=item.getAttr('subscription')
self._data[jid]['groups']=[]
- if not self._data[jid].has_key('resources'): self._data[jid]['resources']={}
+ if 'resources' not in self._data[jid]: self._data[jid]['resources']={}
for group in item.getTags('group'): self._data[jid]['groups'].append(group.getData())
self._data[self._owner.User+'@'+self._owner.Server]={'resources':{},'name':None,'ask':None,'subscription':None,'groups':None,}
self.set=1
@@ -92,7 +92,7 @@ class Roster(PlugIn):
# If no from attribue, it's from server
jid=self._owner.Server
jid=JID(jid)
- if not self._data.has_key(jid.getStripped()): self._data[jid.getStripped()]={'name':None,'ask':None,'subscription':'none','groups':['Not in roster'],'resources':{}}
+ if jid.getStripped() not in self._data: self._data[jid.getStripped()]={'name':None,'ask':None,'subscription':'none','groups':['Not in roster'],'resources':{}}
if type(self._data[jid.getStripped()]['resources'])!=type(dict()):
self._data[jid.getStripped()]['resources']={}
item=self._data[jid.getStripped()]
@@ -106,7 +106,7 @@ class Roster(PlugIn):
if pres.getTag('priority'): res['priority']=pres.getPriority()
if not pres.getTimestamp(): pres.setTimestamp()
res['timestamp']=pres.getTimestamp()
- elif typ=='unavailable' and item['resources'].has_key(jid.getResource()): del item['resources'][jid.getResource()]
+ elif typ=='unavailable' and jid.getResource() in item['resources']: del item['resources'][jid.getResource()]
# Need to handle type='error' also
def _getItemData(self,jid,dataname):
@@ -117,7 +117,7 @@ class Roster(PlugIn):
""" Return specific jid's resource representation in internal format. Used internally. """
if jid.find('/')+1:
jid,resource=jid.split('/',1)
- if self._data[jid]['resources'].has_key(resource): return self._data[jid]['resources'][resource][dataname]
+ if resource in self._data[jid]['resources']: return self._data[jid]['resources'][resource][dataname]
elif self._data[jid]['resources'].keys():
lastpri=-129
for r in self._data[jid]['resources'].keys():
@@ -176,7 +176,7 @@ class Roster(PlugIn):
return self._data[item]
def getItem(self,item):
""" Get the contact in the internal format (or None if JID 'item' is not in roster)."""
- if self._data.has_key(item): return self._data[item]
+ if item in self._data: return self._data[item]
def Subscribe(self,jid):
""" Send subscription request to JID 'jid'."""
self._owner.send(Presence(jid,'subscribe'))
diff --git a/src/common/xmpp/session.py b/src/common/xmpp/session.py
index 174a6a981..3d49d16a5 100644
--- a/src/common/xmpp/session.py
+++ b/src/common/xmpp/session.py
@@ -213,10 +213,10 @@ class Session:
def _catch_stream_id(self,ns=None,tag='stream',attrs={}):
""" This callback is used to detect the stream namespace of incoming stream. Used internally. """
- if not attrs.has_key('id') or not attrs['id']:
+ if 'id' not in attrs or not attrs['id']:
return self.terminate_stream(STREAM_INVALID_XML)
self.ID=attrs['id']
- if not attrs.has_key('version'): self._owner.Dialback(self)
+ if 'version' not in attrs: self._owner.Dialback(self)
def _stream_open(self,ns=None,tag='stream',attrs={}):
""" This callback is used to handle opening stream tag of the incoming stream.
@@ -228,23 +228,23 @@ class Session:
text+=' to="%s"'%self.peer
else:
text+=' id="%s"'%self.ID
- if not attrs.has_key('to'): text+=' from="%s"'%self._owner.servernames[0]
+ if 'to' not in attrs: text+=' from="%s"'%self._owner.servernames[0]
else: text+=' from="%s"'%attrs['to']
- if attrs.has_key('xml:lang'): text+=' xml:lang="%s"'%attrs['xml:lang']
+ if 'xml:lang' in attrs: text+=' xml:lang="%s"'%attrs['xml:lang']
if self.xmlns: xmlns=self.xmlns
else: xmlns=NS_SERVER
text+=' xmlns:db="%s" xmlns:stream="%s" xmlns="%s"'%(NS_DIALBACK,NS_STREAMS,xmlns)
- if attrs.has_key('version') or self.TYP=='client': text+=' version="1.0"'
+ if 'version' in attrs or self.TYP=='client': text+=' version="1.0"'
self.sendnow(text+'>')
self.set_stream_state(STREAM__OPENED)
if self.TYP=='client': return
if tag<>'stream': return self.terminate_stream(STREAM_INVALID_XML)
if ns<>NS_STREAMS: return self.terminate_stream(STREAM_INVALID_NAMESPACE)
if self.Stream.xmlns<>self.xmlns: return self.terminate_stream(STREAM_BAD_NAMESPACE_PREFIX)
- if not attrs.has_key('to'): return self.terminate_stream(STREAM_IMPROPER_ADDRESSING)
+ if 'to' not in attrs: return self.terminate_stream(STREAM_IMPROPER_ADDRESSING)
if attrs['to'] not in self._owner.servernames: return self.terminate_stream(STREAM_HOST_UNKNOWN)
self.ourname=attrs['to'].lower()
- if self.TYP=='server' and attrs.has_key('version'):
+ if self.TYP=='server' and 'version' in attrs:
# send features
features=Node('stream:features')
if NS_TLS in self.waiting_features:
diff --git a/src/common/xmpp/simplexml.py b/src/common/xmpp/simplexml.py
index ad72521cb..0e4d3219f 100644
--- a/src/common/xmpp/simplexml.py
+++ b/src/common/xmpp/simplexml.py
@@ -217,7 +217,7 @@ class Node(object):
if namespace and namespace<>node.getNamespace(): continue
if node.getName() == name:
for key in attrs.keys():
- if not node.attrs.has_key(key) or node.attrs[key]<>attrs[key]: break
+ if key not in node.attrs or node.attrs[key]<>attrs[key]: break
else: nodes.append(node)
if one and nodes: return nodes[0]
if not one: return nodes
@@ -228,7 +228,7 @@ class Node(object):
if namespace is not None and namespace!=node.getNamespace(): continue
if node.getName() == name:
for key in attrs.keys():
- if not node.attrs.has_key(key) or \
+ if key not in node.attrs or \
node.attrs[key]!=attrs[key]: break
else:
yield node
@@ -273,7 +273,7 @@ class Node(object):
except: self.addChild(tag,attrs,payload=[ustr(val)])
def has_attr(self,key):
""" Checks if node have attribute "key"."""
- return self.attrs.has_key(key)
+ return key in self.attrs
def __getitem__(self,item):
""" Returns node's attribute "item" value. """
return self.getAttr(item)
diff --git a/src/common/xmpp/transports.py b/src/common/xmpp/transports.py
index 0747b130b..fe460fe14 100644
--- a/src/common/xmpp/transports.py
+++ b/src/common/xmpp/transports.py
@@ -194,7 +194,7 @@ class HTTPPROXYsocket(TCPsocket):
'Pragma: no-cache',
'Host: %s:%s'%self._server,
'User-Agent: HTTPPROXYsocket/v0.1']
- if self._proxy.has_key('user') and self._proxy.has_key('password'):
+ if 'user' in self._proxy and 'password' in self._proxy:
credentials = '%s:%s'%(self._proxy['user'],self._proxy['password'])
credentials = base64.encodestring(credentials).strip()
connector.append('Proxy-Authorization: Basic '+credentials)
@@ -231,7 +231,7 @@ class TLS(PlugIn):
If 'now' in false then starts encryption as soon as TLS feature is
declared by the server (if it were already declared - it is ok).
"""
- if owner.__dict__.has_key('TLS'): return # Already enabled.
+ if 'TLS' in owner.__dict__: return # Already enabled.
PlugIn.PlugIn(self,owner)
DBG_LINE='TLS'
if now: return self._startSSL()
diff --git a/src/common/xmpp/transports_nb.py b/src/common/xmpp/transports_nb.py
index 3287054bb..cf144e1c0 100644
--- a/src/common/xmpp/transports_nb.py
+++ b/src/common/xmpp/transports_nb.py
@@ -676,7 +676,7 @@ class NonBlockingTLS(PlugIn):
If 'now' in false then starts encryption as soon as TLS feature is
declared by the server (if it were already declared - it is ok).
'''
- if owner.__dict__.has_key('NonBlockingTLS'):
+ if 'NonBlockingTLS' in owner.__dict__:
return # Already enabled.
PlugIn.PlugIn(self, owner)
DBG_LINE='NonBlockingTLS'
@@ -704,7 +704,7 @@ class NonBlockingTLS(PlugIn):
''' Unregisters TLS handler's from owner's dispatcher. Take note that encription
can not be stopped once started. You can only break the connection and start over.'''
# if dispatcher is not plugged we cannot (un)register handlers
- if self._owner.__dict__.has_key('Dispatcher'):
+ if 'Dispatcher' in self._owner.__dict__:
self._owner.UnregisterHandler('features', self.FeaturesHandler,xmlns=NS_STREAMS)
self._owner.Dispatcher.PlugOut()
self._owner = None
@@ -906,7 +906,7 @@ class NBHTTPPROXYsocket(NonBlockingTcp):
'Pragma: no-cache',
'Host: %s:%s'%self.server,
'User-Agent: HTTPPROXYsocket/v0.1']
- if self.proxy.has_key('user') and self.proxy.has_key('password'):
+ if 'user' in self.proxy and 'password' in self.proxy:
credentials = '%s:%s' % ( self.proxy['user'], self.proxy['password'])
credentials = base64.encodestring(credentials).strip()
connector.append('Proxy-Authorization: Basic '+credentials)
@@ -988,7 +988,7 @@ class NBSOCKS5PROXYsocket(NonBlockingTcp):
def _on_tcp_connect(self):
self.DEBUG('Proxy server contacted, performing authentification', 'start')
- if self.proxy.has_key('user') and self.proxy.has_key('password'):
+ if 'user' in self.proxy and 'password' in self.proxy:
to_send = '\x05\x02\x00\x02'
else:
to_send = '\x05\x01\x00'
diff --git a/src/common/zeroconf/connection_handlers_zeroconf.py b/src/common/zeroconf/connection_handlers_zeroconf.py
index e724e8651..ce71e2fcd 100644
--- a/src/common/zeroconf/connection_handlers_zeroconf.py
+++ b/src/common/zeroconf/connection_handlers_zeroconf.py
@@ -146,7 +146,7 @@ class ConnectionBytestream(connection_handlers.ConnectionBytestream):
file_tag.setAttr('name', file_props['name'])
file_tag.setAttr('size', file_props['size'])
desc = file_tag.setTag('desc')
- if file_props.has_key('desc'):
+ if 'desc' in file_props:
desc.setData(file_props['desc'])
file_tag.setTag('range')
feature = si.setTag('feature')
@@ -180,11 +180,11 @@ class ConnectionBytestream(connection_handlers.ConnectionBytestream):
host_dict[attr] = item.getAttr(attr)
streamhosts.append(host_dict)
if file_props is None:
- if self.files_props.has_key(sid):
+ if sid in self.files_props:
file_props = self.files_props[sid]
file_props['fast'] = streamhosts
if file_props['type'] == 's':
- if file_props.has_key('streamhosts'):
+ if 'streamhosts' in file_props:
file_props['streamhosts'].extend(streamhosts)
else:
file_props['streamhosts'] = streamhosts
@@ -209,11 +209,11 @@ class ConnectionBytestream(connection_handlers.ConnectionBytestream):
return
frm = unicode(iq_obj.getFrom())
id = real_id[3:]
- if self.files_props.has_key(id):
+ if id in self.files_props:
file_props = self.files_props[id]
if file_props['streamhost-used']:
for host in file_props['proxyhosts']:
- if host['initiator'] == frm and host.has_key('idx'):
+ if host['initiator'] == frm and 'idx' in host:
gajim.socks5queue.activate_proxy(host['idx'])
raise common.xmpp.NodeProcessed
@@ -229,7 +229,7 @@ class ConnectionBytestream(connection_handlers.ConnectionBytestream):
except: # this bytestream result is not what we need
pass
id = real_id[3:]
- if self.files_props.has_key(id):
+ if id in self.files_props:
file_props = self.files_props[id]
else:
raise common.xmpp.NodeProcessed
@@ -237,10 +237,10 @@ class ConnectionBytestream(connection_handlers.ConnectionBytestream):
# proxy approves the activate query
if real_id[:3] == 'au_':
id = real_id[3:]
- if not file_props.has_key('streamhost-used') or \
+ if 'streamhost-used' not in file_props or \
file_props['streamhost-used'] is False:
raise common.xmpp.NodeProcessed
- if not file_props.has_key('proxyhosts'):
+ if 'proxyhosts' not in file_props:
raise common.xmpp.NodeProcessed
for host in file_props['proxyhosts']:
if host['initiator'] == frm and \
@@ -249,7 +249,7 @@ class ConnectionBytestream(connection_handlers.ConnectionBytestream):
break
raise common.xmpp.NodeProcessed
jid = streamhost.getAttr('jid')
- if file_props.has_key('streamhost-used') and \
+ if 'streamhost-used' in file_props and \
file_props['streamhost-used'] is True:
raise common.xmpp.NodeProcessed
@@ -258,14 +258,14 @@ class ConnectionBytestream(connection_handlers.ConnectionBytestream):
raise common.xmpp.NodeProcessed
proxy = None
- if file_props.has_key('proxyhosts'):
+ if 'proxyhosts' in file_props:
for proxyhost in file_props['proxyhosts']:
if proxyhost['jid'] == jid:
proxy = proxyhost
if proxy != None:
file_props['streamhost-used'] = True
- if not file_props.has_key('streamhosts'):
+ if 'streamhosts' not in file_props:
file_props['streamhosts'] = []
file_props['streamhosts'].append(proxy)
file_props['is_a_proxy'] = True
@@ -277,7 +277,7 @@ class ConnectionBytestream(connection_handlers.ConnectionBytestream):
else:
gajim.socks5queue.send_file(file_props, self.name)
- if file_props.has_key('fast'):
+ if 'fast' in file_props:
fasts = file_props['fast']
if len(fasts) > 0:
self._connect_error(frm, fasts[0]['id'], file_props['sid'],
@@ -289,14 +289,14 @@ class ConnectionBytestream(connection_handlers.ConnectionBytestream):
gajim.log.debug('_siResultCB')
self.peerhost = con._owner.Connection._sock.getsockname()
id = iq_obj.getAttr('id')
- if not self.files_props.has_key(id):
+ if id not in self.files_props:
# no such jid
return
file_props = self.files_props[id]
if file_props is None:
# file properties for jid is none
return
- if file_props.has_key('request-id'):
+ if 'request-id' in file_props:
# we have already sent streamhosts info
return
file_props['receiver'] = unicode(iq_obj.getFrom())
@@ -362,7 +362,7 @@ class ConnectionBytestream(connection_handlers.ConnectionBytestream):
if profile != common.xmpp.NS_FILE:
return
id = iq_obj.getAttr('id')
- if not self.files_props.has_key(id):
+ if id not in self.files_props:
# no such jid
return
file_props = self.files_props[id]
diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py
index 3f1e8536a..d78dd11ba 100644
--- a/src/common/zeroconf/connection_zeroconf.py
+++ b/src/common/zeroconf/connection_zeroconf.py
@@ -135,7 +135,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf):
# END __init__
def dispatch(self, event, data):
- if gajim.handlers.has_key(event):
+ if event in gajim.handlers:
gajim.handlers[event](self.name, data)
def _reconnect(self):
diff --git a/src/common/zeroconf/roster_zeroconf.py b/src/common/zeroconf/roster_zeroconf.py
index ad1aca81c..6d17967dd 100644
--- a/src/common/zeroconf/roster_zeroconf.py
+++ b/src/common/zeroconf/roster_zeroconf.py
@@ -44,7 +44,7 @@ class Roster:
old_data = self._data.copy()
self.update_roster()
for key in old_data.keys():
- if self._data.has_key(key):
+ if key in self._data:
if old_data[key] != self._data[key]:
diffs[key] = self._data[key]['status']
#print 'roster_zeroconf.py: diffs:' + str(diffs)
@@ -68,16 +68,16 @@ class Roster:
self._data[jid]['host'] = host
self._data[jid]['port'] = port
txt_dict = self.zeroconf.txt_array_to_dict(txt)
- if txt_dict.has_key('status'):
+ if 'status' in txt_dict:
status = txt_dict['status']
else:
status = ''
if not status:
status = 'avail'
nm = ''
- if txt_dict.has_key('1st'):
+ if '1st' in txt_dict:
nm = txt_dict['1st']
- if txt_dict.has_key('last'):
+ if 'last' in txt_dict:
if nm != '':
nm += ' '
nm += txt_dict['last']
@@ -88,19 +88,19 @@ class Roster:
if status == 'avail':
status = 'online'
self._data[jid]['txt_dict'] = txt_dict
- if not self._data[jid]['txt_dict'].has_key('msg'):
+ if 'msg' not in self._data[jid]['txt_dict']:
self._data[jid]['txt_dict']['msg'] = ''
self._data[jid]['status'] = status
self._data[jid]['show'] = status
def delItem(self, jid):
#print 'roster_zeroconf.py: delItem %s' % jid
- if self._data.has_key(jid):
+ if jid in self._data:
del self._data[jid]
def getItem(self, jid):
#print 'roster_zeroconf.py: getItem: %s' % jid
- if self._data.has_key(jid):
+ if jid in self._data:
return self._data[jid]
def __getitem__(self,jid):
@@ -128,15 +128,15 @@ class Roster:
return self._data[jid]['groups']
def getName(self, jid):
- if self._data.has_key(jid):
+ if jid in self._data:
return self._data[jid]['name']
def getStatus(self, jid):
- if self._data.has_key(jid):
+ if jid in self._data:
return self._data[jid]['status']
def getMessage(self, jid):
- if self._data.has_key(jid):
+ if jid in self._data:
return self._data[jid]['txt_dict']['msg']
def getShow(self, jid):
diff --git a/src/common/zeroconf/zeroconf_avahi.py b/src/common/zeroconf/zeroconf_avahi.py
index 77dab5cfb..4952c286d 100644
--- a/src/common/zeroconf/zeroconf_avahi.py
+++ b/src/common/zeroconf/zeroconf_avahi.py
@@ -243,7 +243,7 @@ class Zeroconf:
txt['txtvers'] = 1
# replace gajim's show messages with compatible ones
- if self.txt.has_key('status'):
+ if 'status' in self.txt:
txt['status'] = self.replace_show(self.txt['status'])
else:
txt['status'] = 'avail'
diff --git a/src/config.py b/src/config.py
index a55290812..45cf7581e 100644
--- a/src/config.py
+++ b/src/config.py
@@ -1122,7 +1122,7 @@ class PreferencesWindow:
helpers.play_sound(snd_event_config_name)
def on_open_advanced_editor_button_clicked(self, widget, data = None):
- if gajim.interface.instances.has_key('advanced_config'):
+ if 'advanced_config' in gajim.interface.instances:
gajim.interface.instances['advanced_config'].window.present()
else:
gajim.interface.instances['advanced_config'] = \
@@ -1165,7 +1165,7 @@ class ManageProxiesWindow:
self.xml.get_widget('proxytype_combobox').set_active(0)
def on_manage_proxies_window_destroy(self, widget):
- if gajim.interface.instances.has_key('accounts'):
+ if 'accounts' in gajim.interface.instances:
gajim.interface.instances['accounts'].\
update_proxy_list()
del gajim.interface.instances['manage_proxies']
@@ -1376,7 +1376,7 @@ class AccountsWindow:
def check_resend_relog(self):
if self.need_relogin and self.current_account == gajim.ZEROCONF_ACC_NAME:
- if gajim.connections.has_key(gajim.ZEROCONF_ACC_NAME):
+ if gajim.ZEROCONF_ACC_NAME in gajim.connections:
gajim.connections[gajim.ZEROCONF_ACC_NAME].update_details()
return
@@ -1524,7 +1524,7 @@ class AccountsWindow:
# Personal tab
gpg_key_label = self.xml.get_widget('gpg_key_label2')
- if gajim.connections.has_key(gajim.ZEROCONF_ACC_NAME) and \
+ if gajim.ZEROCONF_ACC_NAME in gajim.connections and \
gajim.connections[gajim.ZEROCONF_ACC_NAME].gpg:
self.xml.get_widget('gpg_choose_button2').set_sensitive(True)
self.init_account_gpg()
@@ -1651,7 +1651,7 @@ class AccountsWindow:
def on_add_button_clicked(self, widget):
'''When add button is clicked: open an account information window'''
- if gajim.interface.instances.has_key('account_creation_wizard'):
+ if 'account_creation_wizard' in gajim.interface.instances:
gajim.interface.instances['account_creation_wizard'].window.present()
else:
gajim.interface.instances['account_creation_wizard'] = \
@@ -1683,7 +1683,7 @@ class AccountsWindow:
break
# Detect if we have opened windows for this account
def remove(account):
- if gajim.interface.instances[account].has_key('remove_account'):
+ if 'remove_account' in gajim.interface.instances[account]:
gajim.interface.instances[account]['remove_account'].window.\
present()
else:
@@ -1972,7 +1972,7 @@ class AccountsWindow:
gajim.config.set_per('accounts', self.current_account, 'proxy', proxy)
def on_manage_proxies_button1_clicked(self, widget):
- if gajim.interface.instances.has_key('manage_proxies'):
+ if 'manage_proxies' in gajim.interface.instances:
gajim.interface.instances['manage_proxies'].window.present()
else:
gajim.interface.instances['manage_proxies'] = ManageProxiesWindow()
@@ -2026,7 +2026,7 @@ class AccountsWindow:
custom_port)
def on_gpg_choose_button_clicked(self, widget, data = None):
- if gajim.connections.has_key(self.current_account) and \
+ if self.current_account in gajim.connections and \
gajim.connections[self.current_account].gpg:
secret_keys = gajim.connections[self.current_account].\
ask_gpg_secrete_keys()
@@ -2085,14 +2085,14 @@ class AccountsWindow:
self.on_checkbutton_toggled(widget, 'use_gpg_agent')
def on_edit_details_button1_clicked(self, widget):
- if not gajim.interface.instances.has_key(self.current_account):
+ if self.current_account not in gajim.interface.instances:
dialogs.ErrorDialog(_('No such account available'),
_('You must create your account before editing your personal '
'information.'))
return
# show error dialog if account is newly created (not in gajim.connections)
- if not gajim.connections.has_key(self.current_account) or \
+ if self.current_account not in gajim.connections or \
gajim.connections[self.current_account].connected < 2:
dialogs.ErrorDialog(_('You are not connected to the server'),
_('Without a connection, you can not edit your personal information.'))
@@ -2128,7 +2128,7 @@ class AccountsWindow:
def on_enable_zeroconf_checkbutton2_toggled(self, widget):
# don't do anything if there is an account with the local name but is a
# normal account
- if gajim.connections.has_key(gajim.ZEROCONF_ACC_NAME) and not \
+ if gajim.ZEROCONF_ACC_NAME in gajim.connections and not \
gajim.connections[gajim.ZEROCONF_ACC_NAME].is_zeroconf:
gajim.connections[gajim.ZEROCONF_ACC_NAME].dispatch('ERROR',
(_('Account Local already exists.'),
@@ -2264,7 +2264,7 @@ class FakeDataForm(gtk.Table, object):
def _draw_table(self):
'''Draw the table'''
nbrow = 0
- if self.infos.has_key('instructions'):
+ if 'instructions' in self.infos:
nbrow = 1
self.resize(rows = nbrow, columns = 2)
label = gtk.Label(self.infos['instructions'])
@@ -2314,7 +2314,7 @@ class ServiceRegistrationWindow:
table = self.xml.get_widget('table')
table.attach(self.data_form_widget, 0, 2, 0, 1)
else:
- if infos.has_key('registered'):
+ if 'registered' in infos:
self.window.set_title(_('Edit %s') % service)
else:
self.window.set_title(_('Register to %s') % service)
@@ -2336,9 +2336,9 @@ class ServiceRegistrationWindow:
form, True) # True is for is_form
else:
infos = self.data_form_widget.get_infos()
- if infos.has_key('instructions'):
+ if 'instructions' in infos:
del infos['instructions']
- if infos.has_key('registered'):
+ if 'registered' in infos:
del infos['registered']
gajim.connections[self.account].register_agent(self.service, infos)
@@ -2500,13 +2500,13 @@ class GroupchatConfigWindow:
tv = self.affiliation_treeview[affiliation]
model = tv.get_model()
reason = ''
- if users_dict[jid].has_key('reason'):
+ if 'reason' in users_dict[jid]:
reason = users_dict[jid]['reason']
nick = ''
- if users_dict[jid].has_key('nick'):
+ if 'nick' in users_dict[jid]:
nick = users_dict[jid]['nick']
role = ''
- if users_dict[jid].has_key('role'):
+ if 'role' in users_dict[jid]:
role = users_dict[jid]['role']
model.append((jid, reason, nick, role))
@@ -2527,8 +2527,8 @@ class GroupchatConfigWindow:
jid = model[iter][0].decode('utf-8')
actual_jid_list.append(jid)
if jid not in self.start_users_dict[affiliation] or \
- (affiliation == 'outcast' and self.start_users_dict[affiliation]\
- [jid].has_key('reason') and self.start_users_dict[affiliation][jid]\
+ (affiliation == 'outcast' and 'reason' in self.start_users_dict[affiliation]\
+ [jid] and self.start_users_dict[affiliation][jid]\
['reason'] != model[iter][1].decode('utf-8')):
users_dict[jid] = {'affiliation': affiliation}
if affiliation == 'outcast':
@@ -2549,7 +2549,7 @@ class RemoveAccountWindow:
and do removing of the account given'''
def on_remove_account_window_destroy(self, widget):
- if gajim.interface.instances.has_key(self.account):
+ if self.account in gajim.interface.instances:
del gajim.interface.instances[self.account]['remove_account']
def on_cancel_button_clicked(self, widget):
@@ -2635,7 +2635,7 @@ class RemoveAccountWindow:
gajim.interface.roster.regroup = False
gajim.interface.roster.setup_and_draw_roster()
gajim.interface.roster.set_actions_menu_needs_rebuild()
- if gajim.interface.instances.has_key('accounts'):
+ if 'accounts' in gajim.interface.instances:
gajim.interface.instances['accounts'].init_accounts()
self.window.destroy()
@@ -3231,7 +3231,7 @@ class AccountCreationWizardWindow:
proxies_combobox.set_active(0)
def on_manage_proxies_button_clicked(self, widget):
- if gajim.interface.instances.has_key('manage_proxies'):
+ if 'manage_proxies' in gajim.interface.instances:
gajim.interface.instances['manage_proxies'].window.present()
else:
gajim.interface.instances['manage_proxies'] = \
@@ -3341,7 +3341,7 @@ class AccountCreationWizardWindow:
gobject.source_remove(self.update_progressbar_timeout_id)
def on_advanced_button_clicked(self, widget):
- if gajim.interface.instances.has_key('accounts'):
+ if 'accounts' in gajim.interface.instances:
gajim.interface.instances['accounts'].window.present()
else:
gajim.interface.instances['accounts'] = AccountsWindow()
@@ -3462,7 +3462,7 @@ class AccountCreationWizardWindow:
gajim.gajim_optional_features[self.account] = []
gajim.caps_hash[self.account] = ''
# refresh accounts window
- if gajim.interface.instances.has_key('accounts'):
+ if 'accounts' in gajim.interface.instances:
gajim.interface.instances['accounts'].init_accounts()
# refresh roster
if len(gajim.connections) >= 2: # Do not merge accounts if only one exists
diff --git a/src/conversation_textview.py b/src/conversation_textview.py
index 0f32968e0..a5d5e84de 100644
--- a/src/conversation_textview.py
+++ b/src/conversation_textview.py
@@ -409,7 +409,7 @@ class ConversationTextview:
self.smooth_scroll_timer.cancel()
def show_xep0184_warning(self, id):
- if self.xep0184_marks.has_key(id):
+ if id in self.xep0184_marks:
return
buffer = self.tv.get_buffer()
@@ -444,7 +444,7 @@ class ConversationTextview:
buffer.end_user_action()
def hide_xep0184_warning(self, id):
- if not self.xep0184_marks.has_key(id):
+ if id not in self.xep0184_marks:
return
if self.xep0184_shown[id] == NOT_SHOWN:
diff --git a/src/dialogs.py b/src/dialogs.py
index 875a005f4..b8ed950dd 100644
--- a/src/dialogs.py
+++ b/src/dialogs.py
@@ -392,8 +392,7 @@ class ChangeActivityDialog:
if 'activity' in con.activity \
and con.activity['activity'] in pep.ACTIVITIES:
if 'subactivity' in con.activity \
- and pep.ACTIVITIES[con.activity['activity']].has_key(
- con.activity['subactivity']):
+ and con.activity['subactivity'] in pep.ACTIVITIES[con.activity['activity']]:
subactivity = con.activity['subactivity']
else:
subactivity = 'other'
@@ -691,7 +690,7 @@ class AddNewContactWindow:
location = gajim.interface.instances[self.account]
else:
location = gajim.interface.instances
- if location.has_key('add_contact'):
+ if 'add_contact' in location:
location['add_contact'].window.present()
# An instance is already opened
return
@@ -721,7 +720,7 @@ _('Please fill in the data of the contact you want to add in account %s') %accou
type_ = gajim.get_transport_name_from_jid(j, False)
if not type_:
continue
- if self.agents.has_key(type_):
+ if type_ in self.agents:
self.agents[type_].append(j)
else:
self.agents[type_] = [j]
@@ -757,7 +756,7 @@ _('Please fill in the data of the contact you want to add in account %s') %accou
continue
imgs = gajim.interface.roster.transports_state_images
img = None
- if imgs['16'].has_key(type_) and imgs['16'][type_].has_key('online'):
+ if type_ in imgs['16'] and 'online' in imgs['16'][type_]:
img = imgs['16'][type_]['online']
if type_ in uf_type:
liststore.append([uf_type[type_], img.get_pixbuf(), type_])
@@ -1620,7 +1619,7 @@ class SubscriptionRequestWindow:
def on_contact_info_activate(self, widget):
'''ask vcard'''
- if gajim.interface.instances[self.account]['infos'].has_key(self.jid):
+ if self.jid in gajim.interface.instances[self.account]['infos']:
gajim.interface.instances[self.account]['infos'][self.jid].window.present()
else:
contact = gajim.contacts.create_contact(jid=self.jid, name='',
@@ -1963,7 +1962,7 @@ class NewChatDialog(InputDialog):
_('Please make sure you are connected with "%s".') % self.account)
return
- if self.completion_dict.has_key(jid):
+ if jid in self.completion_dict:
jid = self.completion_dict[jid].jid
else:
try:
@@ -2343,7 +2342,7 @@ class SingleMessageWindow:
sender_list = [self.to_entry.get_text().decode('utf-8')]
for to_whom_jid in sender_list:
- if self.completion_dict.has_key(to_whom_jid):
+ if to_whom_jid in self.completion_dict:
to_whom_jid = self.completion_dict[to_whom_jid].jid
subject = self.subject_entry.get_text().decode('utf-8')
@@ -2608,7 +2607,7 @@ class PrivacyListWindow:
self.list_of_rules_combobox.get_model().clear()
self.global_rules = {}
for rule in rules:
- if rule.has_key('type'):
+ if 'type' in rule:
text_item = _('Order: %(order)s, action: %(action)s, type: %(type)s'
', value: %(value)s') % {'order': rule['order'],
'action': rule['action'], 'type': rule['type'],
@@ -2666,13 +2665,13 @@ class PrivacyListWindow:
if self.active_rule != '':
rule_info = self.global_rules[self.active_rule]
self.edit_order_spinbutton.set_value(int(rule_info['order']))
- if rule_info.has_key('type'):
+ if 'type' in rule_info:
if rule_info['type'] == 'jid':
self.edit_type_jabberid_radiobutton.set_active(True)
self.edit_type_jabberid_entry.set_text(rule_info['value'])
elif rule_info['type'] == 'group':
self.edit_type_group_radiobutton.set_active(True)
- if self.list_of_groups.has_key(rule_info['value']):
+ if rule_info['value'] in self.list_of_groups:
self.edit_type_group_combobox.set_active(
self.list_of_groups[rule_info['value']])
else:
@@ -2915,7 +2914,7 @@ class PrivacyListsWindow:
_('You must enter a name to create a privacy list.'))
return
key_name = 'privacy_list_%s' % name
- if gajim.interface.instances[self.account].has_key(key_name):
+ if key_name in gajim.interface.instances[self.account]:
gajim.interface.instances[self.account][key_name].window.present()
else:
gajim.interface.instances[self.account][key_name] = \
@@ -2929,8 +2928,7 @@ class PrivacyListsWindow:
name = self.privacy_lists_save[
self.list_of_privacy_lists_combobox.get_active()]
key_name = 'privacy_list_%s' % name
- if gajim.interface.instances[self.account].has_key(
- key_name):
+ if key_name in gajim.interface.instances[self.account]:
gajim.interface.instances[self.account][key_name].window.present()
else:
gajim.interface.instances[self.account][key_name] = \
diff --git a/src/disco.py b/src/disco.py
index b881d6200..be51419a4 100644
--- a/src/disco.py
+++ b/src/disco.py
@@ -318,7 +318,7 @@ class ServicesCache:
'''Get info for an agent.'''
addr = get_agent_address(jid, node)
# Check the cache
- if self._info.has_key(addr):
+ if addr in self._info:
args = self._info[addr] + args
cb(jid, node, *args)
return
@@ -330,7 +330,7 @@ class ServicesCache:
cb = Closure(cb, userargs = args, remove = self._clean_closure,
removeargs = cbkey)
# Are we already fetching this?
- if self._cbs.has_key(cbkey):
+ if cbkey in self._cbs:
self._cbs[cbkey].append(cb)
else:
self._cbs[cbkey] = [cb]
@@ -340,7 +340,7 @@ class ServicesCache:
'''Get a list of items in an agent.'''
addr = get_agent_address(jid, node)
# Check the cache
- if self._items.has_key(addr):
+ if addr in self._items:
args = (self._items[addr],) + args
cb(jid, node, *args)
return
@@ -352,7 +352,7 @@ class ServicesCache:
cb = Closure(cb, userargs = args, remove = self._clean_closure,
removeargs = cbkey)
# Are we already fetching this?
- if self._cbs.has_key(cbkey):
+ if cbkey in self._cbs:
self._cbs[cbkey].append(cb)
else:
self._cbs[cbkey] = [cb]
@@ -367,11 +367,11 @@ class ServicesCache:
# Call callbacks
cbkey = ('info', addr)
- if self._cbs.has_key(cbkey):
+ if cbkey in self._cbs:
for cb in self._cbs[cbkey]:
cb(jid, node, identities, features, data)
# clean_closure may have beaten us to it
- if self._cbs.has_key(cbkey):
+ if cbkey in self._cbs:
del self._cbs[cbkey]
def agent_items(self, jid, node, items):
@@ -383,11 +383,11 @@ class ServicesCache:
# Call callbacks
cbkey = ('items', addr)
- if self._cbs.has_key(cbkey):
+ if cbkey in self._cbs:
for cb in self._cbs[cbkey]:
cb(jid, node, items)
# clean_closure may have beaten us to it
- if self._cbs.has_key(cbkey):
+ if cbkey in self._cbs:
del self._cbs[cbkey]
def agent_info_error(self, jid):
@@ -397,11 +397,11 @@ class ServicesCache:
# Call callbacks
cbkey = ('info', addr)
- if self._cbs.has_key(cbkey):
+ if cbkey in self._cbs:
for cb in self._cbs[cbkey]:
cb(jid, '', 0, 0, 0)
# clean_closure may have beaten us to it
- if self._cbs.has_key(cbkey):
+ if cbkey in self._cbs:
del self._cbs[cbkey]
def agent_items_error(self, jid):
@@ -411,11 +411,11 @@ class ServicesCache:
# Call callbacks
cbkey = ('items', addr)
- if self._cbs.has_key(cbkey):
+ if cbkey in self._cbs:
for cb in self._cbs[cbkey]:
cb(jid, '', 0)
# clean_closure may have beaten us to it
- if self._cbs.has_key(cbkey):
+ if cbkey in self._cbs:
del self._cbs[cbkey]
# object is needed so that @property works
@@ -636,7 +636,7 @@ _('Without a connection, you can not browse available services'))
# Update the window list
if self.jid:
old_addr = get_agent_address(self.jid, self.node)
- if gajim.interface.instances[self.account]['disco'].has_key(old_addr):
+ if old_addr in gajim.interface.instances[self.account]['disco']:
del gajim.interface.instances[self.account]['disco'][old_addr]
addr = get_agent_address(jid, node)
gajim.interface.instances[self.account]['disco'][addr] = self
@@ -810,7 +810,7 @@ class AgentBrowser:
def _set_title(self, jid, node, identities, features, data):
'''Set the window title based on agent info.'''
# Set the banner and window title
- if identities[0].has_key('name'):
+ if 'name' in identities[0]:
name = identities[0]['name']
self.window._set_window_banner_text(self._get_agent_address(), name)
@@ -992,7 +992,7 @@ _('This service does not contain any items to browse.'))
def _update_item(self, iter, jid, node, item):
'''Called when an item should be updated in the model. The result of a
disco#items query. (seldom)'''
- if item.has_key('name'):
+ if 'name' in item:
self.model[iter][2] = item['name']
def _update_info(self, iter, jid, node, identities, features, data):
@@ -1238,7 +1238,7 @@ class ToplevelAgentBrowser(AgentBrowser):
if not iter:
return
service = model[iter][0].decode('utf-8')
- if gajim.interface.instances[self.account]['search'].has_key(service):
+ if service in gajim.interface.instances[self.account]['search']:
gajim.interface.instances[self.account]['search'][service].present()
else:
gajim.interface.instances[self.account]['search'][service] = \
@@ -1283,7 +1283,7 @@ class ToplevelAgentBrowser(AgentBrowser):
if not iter:
return
service = model[iter][0].decode('utf-8')
- if not gajim.interface.instances[self.account].has_key('join_gc'):
+ if 'join_gc' not in gajim.interface.instances[self.account]:
try:
dialogs.JoinGroupchatWindow(self.account, service)
except GajimGeneralException:
@@ -1459,7 +1459,7 @@ class ToplevelAgentBrowser(AgentBrowser):
def _add_item(self, jid, node, item, force):
# Row text
addr = get_agent_address(jid, node)
- if item.has_key('name'):
+ if 'name' in item:
descr = "<b>%s</b>\n%s" % (item['name'], addr)
else:
descr = "<b>%s</b>" % addr
@@ -1488,7 +1488,7 @@ class ToplevelAgentBrowser(AgentBrowser):
def _update_item(self, iter, jid, node, item):
addr = get_agent_address(jid, node)
- if item.has_key('name'):
+ if 'name' in item:
descr = "<b>%s</b>\n%s" % (item['name'], addr)
else:
descr = "<b>%s</b>" % addr
diff --git a/src/filetransfers_window.py b/src/filetransfers_window.py
index e0dc80dc5..8b24a2598 100644
--- a/src/filetransfers_window.py
+++ b/src/filetransfers_window.py
@@ -148,7 +148,7 @@ class FileTransfersWindow:
''' show a dialog saying that file (file_props) has been transferred'''
def on_open(widget, file_props):
dialog.destroy()
- if not file_props.has_key('file-name'):
+ if 'file-name' not in file_props:
return
(path, file) = os.path.split(file_props['file-name'])
if os.path.exists(path) and os.path.isdir(path):
@@ -296,15 +296,15 @@ _('Connection with peer cannot be established.'))
def show_file_request(self, account, contact, file_props):
''' show dialog asking for comfirmation and store location of new
file requested by a contact'''
- if file_props is None or not file_props.has_key('name'):
+ if file_props is None or 'name' not in file_props:
return
sec_text = '\t' + _('File: %s') % file_props['name']
- if file_props.has_key('size'):
+ if 'size' in file_props:
sec_text += '\n\t' + _('Size: %s') % \
helpers.convert_bytes(file_props['size'])
- if file_props.has_key('mime-type'):
+ if 'mime-type' in file_props:
sec_text += '\n\t' + _('Type: %s') % file_props['mime-type']
- if file_props.has_key('desc'):
+ if 'desc' in file_props:
sec_text += '\n\t' + _('Description: %s') % file_props['desc']
prim_text = _('%s wants to send you a file:') % contact.jid
dialog, dialog2 = None, None
@@ -460,10 +460,10 @@ _('Connection with peer cannot be established.'))
def _remove_transfer(self, iter, sid, file_props):
self.model.remove(iter)
- if file_props.has_key('tt_account'):
+ if 'tt_account' in file_props:
# file transfer is set
account = file_props['tt_account']
- if gajim.connections.has_key(account):
+ if account in gajim.connections:
# there is a connection to the account
gajim.connections[account].remove_transfer(file_props)
if file_props['type'] == 'r': # we receive a file
@@ -486,7 +486,7 @@ _('Connection with peer cannot be established.'))
def set_progress(self, typ, sid, transfered_size, iter = None):
''' change the progress of a transfer with new transfered size'''
- if not self.files_props[typ].has_key(sid):
+ if sid not in self.files_props[typ]:
return
file_props = self.files_props[typ][sid]
full_size = int(file_props['size'])
@@ -509,7 +509,7 @@ _('Connection with peer cannot be established.'))
# Kb/s
# remaining time
- if file_props.has_key('offset') and file_props['offset']:
+ if 'offset' in file_props and file_props['offset']:
transfered_size -= file_props['offset']
full_size -= file_props['offset']
@@ -536,11 +536,11 @@ _('Connection with peer cannot be established.'))
status = 'download'
else:
status = 'upload'
- if file_props.has_key('paused') and file_props['paused'] == True:
+ if 'paused' in file_props and file_props['paused'] == True:
status = 'pause'
- elif file_props.has_key('stalled') and file_props['stalled'] == True:
+ elif 'stalled' in file_props and file_props['stalled'] == True:
status = 'waiting'
- if file_props.has_key('connected') and file_props['connected'] == False:
+ if 'connected' in file_props and file_props['connected'] == False:
status = 'stop'
self.model.set(iter, 0, self.images[status])
if transfered_size == full_size:
@@ -608,7 +608,7 @@ _('Connection with peer cannot be established.'))
self.model.set(iter, 1, text_labels, 2, text_props, C_SID,
file_props['type'] + file_props['sid'])
self.set_progress(file_props['type'], file_props['sid'], 0, iter)
- if file_props.has_key('started') and file_props['started'] is False:
+ if 'started' in file_props and file_props['started'] is False:
status = 'waiting'
elif file_props['type'] == 'r':
status = 'download'
@@ -660,33 +660,33 @@ _('Connection with peer cannot be established.'))
self.on_open_folder_menuitem_activate(widget)
def is_transfer_paused(self, file_props):
- if file_props.has_key('stopped') and file_props['stopped']:
+ if 'stopped' in file_props and file_props['stopped']:
return False
- if file_props.has_key('completed') and file_props['completed']:
+ if 'completed' in file_props and file_props['completed']:
return False
- if not file_props.has_key('disconnect_cb'):
+ if 'disconnect_cb' not in file_props:
return False
return file_props['paused']
def is_transfer_active(self, file_props):
- if file_props.has_key('stopped') and file_props['stopped']:
+ if 'stopped' in file_props and file_props['stopped']:
return False
- if file_props.has_key('completed') and file_props['completed']:
+ if 'completed' in file_props and file_props['completed']:
return False
- if not file_props.has_key('started') or not file_props['started']:
+ if 'started' not in file_props or not file_props['started']:
return False
- if not file_props.has_key('paused'):
+ if 'paused' not in file_props:
return True
return not file_props['paused']
def is_transfer_stopped(self, file_props):
- if file_props.has_key('error') and file_props['error'] != 0:
+ if 'error' in file_props and file_props['error'] != 0:
return True
- if file_props.has_key('completed') and file_props['completed']:
+ if 'completed' in file_props and file_props['completed']:
return True
- if file_props.has_key('connected') and file_props['connected'] == False:
+ if 'connected' in file_props and file_props['connected'] == False:
return True
- if not file_props.has_key('stopped') or not file_props['stopped']:
+ if 'stopped' not in file_props or not file_props['stopped']:
return False
return True
@@ -831,10 +831,10 @@ _('Connection with peer cannot be established.'))
s_iter = selected[1]
sid = self.model[s_iter][C_SID].decode('utf-8')
file_props = self.files_props[sid[0]][sid[1:]]
- if not file_props.has_key('tt_account'):
+ if 'tt_account' not in file_props:
return
account = file_props['tt_account']
- if not gajim.connections.has_key(account):
+ if account not in gajim.connections:
return
gajim.connections[account].disconnect_transfer(file_props)
self.set_status(file_props['type'], file_props['sid'], 'stop')
@@ -941,7 +941,7 @@ _('Connection with peer cannot be established.'))
s_iter = selected[1]
sid = self.model[s_iter][C_SID].decode('utf-8')
file_props = self.files_props[sid[0]][sid[1:]]
- if not file_props.has_key('file-name'):
+ if 'file-name' not in file_props:
return
(path, file) = os.path.split(file_props['file-name'])
if os.path.exists(path) and os.path.isdir(path):
diff --git a/src/gajim.py b/src/gajim.py
index b037c8e7b..4a83f9fcf 100755
--- a/src/gajim.py
+++ b/src/gajim.py
@@ -585,7 +585,7 @@ class Interface:
sid = id
if len(id) > 3 and id[2] == '_':
sid = id[3:]
- if ft.files_props['s'].has_key(sid):
+ if sid in ft.files_props['s']:
file_props = ft.files_props['s'][sid]
file_props['error'] = -4
self.handle_event_file_request_error(account,
@@ -598,7 +598,7 @@ class Interface:
sid = id
if len(id) > 3 and id[2] == '_':
sid = id[3:]
- if conn.files_props.has_key(sid):
+ if sid in conn.files_props:
file_props = conn.files_props[sid]
self.handle_event_file_send_error(account,
(jid_from, file_props))
@@ -644,7 +644,7 @@ class Interface:
# Inform all controls for this account of the connection state change
ctrls = self.msg_win_mgr.get_controls()
- if self.minimized_controls.has_key(account):
+ if account in self.minimized_controls:
# Can not be the case when we remove account
ctrls += self.minimized_controls[account].values()
for ctrl in ctrls:
@@ -667,7 +667,7 @@ class Interface:
def edit_own_details(self, account):
jid = gajim.get_jid_from_account(account)
- if not self.instances[account].has_key('profile'):
+ if 'profile' not in self.instances[account]:
self.instances[account]['profile'] = \
profile_window.ProfileWindow(account)
gajim.connections[account].request_vcard(jid)
@@ -811,7 +811,7 @@ class Interface:
self.unblock_signed_in_notifications, account_ji)
locations = (self.instances, self.instances[account])
for location in locations:
- if location.has_key('add_contact'):
+ if 'add_contact' in location:
if old_show == 0 and new_show > 1:
location['add_contact'].transport_signed_in(jid)
break
@@ -1042,7 +1042,7 @@ class Interface:
def handle_event_register_agent_info(self, account, array):
# ('REGISTER_AGENT_INFO', account, (agent, infos, is_form))
# info in a dataform if is_form is True
- if array[2] or array[1].has_key('instructions'):
+ if array[2] or 'instructions' in array[1]:
config.ServiceRegistrationWindow(array[0], array[1], account,
array[2])
else:
@@ -1052,7 +1052,7 @@ class Interface:
def handle_event_agent_info_items(self, account, array):
#('AGENT_INFO_ITEMS', account, (agent, node, items))
our_jid = gajim.get_jid_from_account(account)
- if gajim.interface.instances[account].has_key('pep_services') and \
+ if 'pep_services' in gajim.interface.instances[account] and \
array[0] == our_jid:
gajim.interface.instances[account]['pep_services'].items_received(
array[2])
@@ -1073,18 +1073,18 @@ class Interface:
def handle_event_new_acc_connected(self, account, array):
#('NEW_ACC_CONNECTED', account, (infos, is_form, ssl_msg, ssl_err,
# ssl_cert, ssl_fingerprint))
- if self.instances.has_key('account_creation_wizard'):
+ if 'account_creation_wizard' in self.instances:
self.instances['account_creation_wizard'].new_acc_connected(array[0],
array[1], array[2], array[3], array[4], array[5])
def handle_event_new_acc_not_connected(self, account, array):
#('NEW_ACC_NOT_CONNECTED', account, (reason))
- if self.instances.has_key('account_creation_wizard'):
+ if 'account_creation_wizard' in self.instances:
self.instances['account_creation_wizard'].new_acc_not_connected(array)
def handle_event_acc_ok(self, account, array):
#('ACC_OK', account, (config))
- if self.instances.has_key('account_creation_wizard'):
+ if 'account_creation_wizard' in self.instances:
self.instances['account_creation_wizard'].acc_is_ok(array)
if self.remote_ctrl:
@@ -1092,7 +1092,7 @@ class Interface:
def handle_event_acc_not_ok(self, account, array):
#('ACC_NOT_OK', account, (reason))
- if self.instances.has_key('account_creation_wizard'):
+ if 'account_creation_wizard' in self.instances:
self.instances['account_creation_wizard'].acc_is_not_ok(array)
def handle_event_quit(self, p1, p2):
@@ -1100,17 +1100,17 @@ class Interface:
def handle_event_myvcard(self, account, array):
nick = ''
- if array.has_key('NICKNAME') and array['NICKNAME']:
+ if 'NICKNAME' in array and array['NICKNAME']:
gajim.nicks[account] = array['NICKNAME']
- elif array.has_key('FN') and array['FN']:
+ elif 'FN' in array and array['FN']:
gajim.nicks[account] = array['FN']
- if self.instances[account].has_key('profile'):
+ if 'profile' in self.instances[account]:
win = self.instances[account]['profile']
win.set_values(array)
if account in self.show_vcard_when_connect:
self.show_vcard_when_connect.remove(account)
jid = array['jid']
- if self.instances[account]['infos'].has_key(jid):
+ if jid in self.instances[account]['infos']:
self.instances[account]['infos'][jid].set_values(array)
def handle_event_vcard(self, account, vcard):
@@ -1118,16 +1118,16 @@ class Interface:
'''vcard holds the vcard data'''
jid = vcard['jid']
resource = ''
- if vcard.has_key('resource'):
+ if 'resource' in vcard:
resource = vcard['resource']
fjid = jid + '/' + str(resource)
# vcard window
win = None
- if self.instances[account]['infos'].has_key(jid):
+ if jid in self.instances[account]['infos']:
win = self.instances[account]['infos'][jid]
- elif resource and self.instances[account]['infos'].has_key(fjid):
+ elif resource and fjid in self.instances[account]['infos']:
win = self.instances[account]['infos'][fjid]
if win:
win.set_values(vcard)
@@ -1163,9 +1163,9 @@ class Interface:
# Ann error occured
return
win = None
- if self.instances[account]['infos'].has_key(array[0]):
+ if array[0] in self.instances[account]['infos']:
win = self.instances[account]['infos'][array[0]]
- elif self.instances[account]['infos'].has_key(array[0] + '/' + array[1]):
+ elif array[0] + '/' + array[1] in self.instances[account]['infos']:
win = self.instances[account]['infos'][array[0] + '/' + array[1]]
if win:
c = gajim.contacts.get_contact(account, array[0], array[1])
@@ -1180,9 +1180,9 @@ class Interface:
def handle_event_os_info(self, account, array):
#'OS_INFO' (account, (jid, resource, client_info, os_info))
win = None
- if self.instances[account]['infos'].has_key(array[0]):
+ if array[0] in self.instances[account]['infos']:
win = self.instances[account]['infos'][array[0]]
- elif self.instances[account]['infos'].has_key(array[0] + '/' + array[1]):
+ elif array[0] + '/' + array[1] in self.instances[account]['infos']:
win = self.instances[account]['infos'][array[0] + '/' + array[1]]
if win:
win.set_os_info(array[1], array[2], array[3])
@@ -1320,7 +1320,7 @@ class Interface:
#('GC_CONFIG', account, (jid, form)) config is a dict
room_jid = array[0].split('/')[0]
if room_jid in gajim.automatic_rooms[account]:
- if gajim.automatic_rooms[account][room_jid].has_key('continue_tag'):
+ if 'continue_tag' in gajim.automatic_rooms[account][room_jid]:
# We're converting chat to muc. allow participants to invite
form = dataforms.ExtendForm(node = array[1])
for f in form.iter_fields():
@@ -1339,14 +1339,14 @@ class Interface:
# invite contacts
# check if it is necessary to add <continue />
continue_tag = False
- if gajim.automatic_rooms[account][room_jid].has_key('continue_tag'):
+ if 'continue_tag' in gajim.automatic_rooms[account][room_jid]:
continue_tag = True
- if gajim.automatic_rooms[account][room_jid].has_key('invities'):
+ if 'invities' in gajim.automatic_rooms[account][room_jid]:
for jid in gajim.automatic_rooms[account][room_jid]['invities']:
gajim.connections[account].send_invite(room_jid, jid,
continue_tag=continue_tag)
del gajim.automatic_rooms[account][room_jid]
- elif not self.instances[account]['gc_config'].has_key(room_jid):
+ elif room_jid not in self.instances[account]['gc_config']:
self.instances[account]['gc_config'][room_jid] = \
config.GroupchatConfigWindow(account, room_jid, array[1])
@@ -1397,7 +1397,7 @@ class Interface:
def handle_event_gc_affiliation(self, account, array):
#('GC_AFFILIATION', account, (room_jid, users_dict))
room_jid = array[0]
- if self.instances[account]['gc_config'].has_key(room_jid):
+ if room_jid in self.instances[account]['gc_config']:
self.instances[account]['gc_config'][room_jid].\
affiliation_list_received(array[1])
@@ -1445,7 +1445,7 @@ class Interface:
event_type, room_jid)
def forget_gpg_passphrase(self, keyid):
- if self.gpg_passphrase.has_key(keyid):
+ if keyid in self.gpg_passphrase:
del self.gpg_passphrase[keyid]
return False
@@ -1670,8 +1670,8 @@ class Interface:
file_props['received-len'])
else:
ft.set_status(file_props['type'], file_props['sid'], 'stop')
- if file_props.has_key('stalled') and file_props['stalled'] or \
- file_props.has_key('paused') and file_props['paused']:
+ if 'stalled' in file_props and file_props['stalled'] or \
+ 'paused' in file_props and file_props['paused']:
return
if file_props['type'] == 'r': # we receive a file
jid = unicode(file_props['sender'])
@@ -1752,19 +1752,19 @@ class Interface:
title = event_type, text = txt)
def handle_event_stanza_arrived(self, account, stanza):
- if not self.instances.has_key(account):
+ if account not in self.instances:
return
- if self.instances[account].has_key('xml_console'):
+ if 'xml_console' in self.instances[account]:
self.instances[account]['xml_console'].print_stanza(stanza, 'incoming')
def handle_event_stanza_sent(self, account, stanza):
- if not self.instances.has_key(account):
+ if account not in self.instances:
return
- if self.instances[account].has_key('xml_console'):
+ if 'xml_console' in self.instances[account]:
self.instances[account]['xml_console'].print_stanza(stanza, 'outgoing')
def handle_event_vcard_published(self, account, array):
- if self.instances[account].has_key('profile'):
+ if 'profile' in self.instances[account]:
win = self.instances[account]['profile']
win.vcard_published()
for gc_control in self.msg_win_mgr.get_controls(message_control.TYPE_GC) + \
@@ -1776,7 +1776,7 @@ class Interface:
gc_control.room_jid, show, status)
def handle_event_vcard_not_published(self, account, array):
- if self.instances[account].has_key('profile'):
+ if 'profile' in self.instances[account]:
win = self.instances[account]['profile']
win.vcard_not_published()
@@ -1802,12 +1802,12 @@ class Interface:
if account != gc_control.account:
continue
room_jid = gc_control.room_jid
- if gajim.gc_connected[account].has_key(room_jid) and\
+ if room_jid in gajim.gc_connected[account] and\
gajim.gc_connected[account][room_jid]:
continue
nick = gc_control.nick
password = ''
- if gajim.gc_passwords.has_key(room_jid):
+ if room_jid in gajim.gc_passwords:
password = gajim.gc_passwords[room_jid]
gajim.connections[account].join_gc(nick, room_jid, password)
@@ -1840,18 +1840,18 @@ class Interface:
def handle_event_privacy_lists_received(self, account, data):
# ('PRIVACY_LISTS_RECEIVED', account, list)
- if not self.instances.has_key(account):
+ if account not in self.instances:
return
- if self.instances[account].has_key('privacy_lists'):
+ if 'privacy_lists' in self.instances[account]:
self.instances[account]['privacy_lists'].privacy_lists_received(data)
def handle_event_privacy_list_received(self, account, data):
# ('PRIVACY_LISTS_RECEIVED', account, (name, rules))
- if not self.instances.has_key(account):
+ if account not in self.instances:
return
name = data[0]
rules = data[1]
- if self.instances[account].has_key('privacy_list_%s' % name):
+ if 'privacy_list_%s' % name in self.instances[account]:
self.instances[account]['privacy_list_%s' % name].\
privacy_list_received(rules)
if name == 'block':
@@ -1870,7 +1870,7 @@ class Interface:
# self.global_rules.append(rule)
#else:
# self.global_rules_to_append.append(rule)
- if self.instances[account].has_key('blocked_contacts'):
+ if 'blocked_contacts' in self.instances[account]:
self.instances[account]['blocked_contacts'].\
privacy_list_received(rules)
@@ -1884,9 +1884,9 @@ class Interface:
def handle_event_privacy_list_removed(self, account, name):
# ('PRIVACY_LISTS_REMOVED', account, name)
- if not self.instances.has_key(account):
+ if account not in self.instances:
return
- if self.instances[account].has_key('privacy_lists'):
+ if 'privacy_lists' in self.instances[account]:
self.instances[account]['privacy_lists'].privacy_list_removed(name)
def handle_event_zc_name_conflict(self, account, data):
@@ -1939,14 +1939,14 @@ class Interface:
def handle_event_search_form(self, account, data):
# ('SEARCH_FORM', account, (jid, dataform, is_dataform))
- if not self.instances[account]['search'].has_key(data[0]):
+ if data[0] not in self.instances[account]['search']:
return
self.instances[account]['search'][data[0]].on_form_arrived(data[1],
data[2])
def handle_event_search_result(self, account, data):
# ('SEARCH_RESULT', account, (jid, dataform, is_dataform))
- if not self.instances[account]['search'].has_key(data[0]):
+ if data[0] not in self.instances[account]['search']:
return
self.instances[account]['search'][data[0]].on_result_arrived(data[1],
data[2])
@@ -1966,7 +1966,7 @@ class Interface:
def handle_event_pep_config(self, account, data):
# ('PEP_CONFIG', account, (node, form))
- if self.instances[account].has_key('pep_services'):
+ if 'pep_services' in self.instances[account]:
self.instances[account]['pep_services'].config(data[0], data[1])
def handle_event_unique_room_id_supported(self, account, data):
@@ -2099,7 +2099,7 @@ class Interface:
def handle_event_pubsub_node_removed(self, account, data):
# ('PUBSUB_NODE_REMOVED', account, (jid, node))
- if self.instances[account].has_key('pep_services'):
+ if 'pep_services' in self.instances[account]:
if data[0] == gajim.get_jid_from_account(account):
self.instances[account]['pep_services'].node_removed(data[1])
@@ -2776,7 +2776,7 @@ class Interface:
return False # stop looping in vain
state = self.sleeper.getState()
for account in gajim.connections:
- if not gajim.sleeper_state.has_key(account) or \
+ if account not in gajim.sleeper_state or \
not gajim.sleeper_state[account]:
continue
if state == common.sleepy.STATE_AWAKE and \
@@ -3194,7 +3194,7 @@ class Interface:
# Don't go auto away if user disabled the option
return
for account in gajim.connections:
- if not gajim.sleeper_state.has_key(account) or \
+ if account not in gajim.sleeper_state or \
not gajim.sleeper_state[account]:
continue
if gajim.sleeper_state[account] == 'online':
diff --git a/src/gajim_themes_window.py b/src/gajim_themes_window.py
index 97c1fa2bc..46dc71e45 100644
--- a/src/gajim_themes_window.py
+++ b/src/gajim_themes_window.py
@@ -81,7 +81,7 @@ class GajimThemesWindow:
return True # do NOT destroy the window
def on_close_button_clicked(self, widget):
- if gajim.interface.instances.has_key('preferences'):
+ if 'preferences' in gajim.interface.instances:
gajim.interface.instances['preferences'].update_theme_list()
self.window.hide()
diff --git a/src/groupchat_control.py b/src/groupchat_control.py
index 698a71eb8..2831321ba 100644
--- a/src/groupchat_control.py
+++ b/src/groupchat_control.py
@@ -120,7 +120,7 @@ class PrivateChatControl(ChatControl):
def __init__(self, parent_win, gc_contact, contact, account, session):
room_jid = contact.jid.split('/')[0]
room_ctrl = gajim.interface.msg_win_mgr.get_gc_control(room_jid, account)
- if gajim.interface.minimized_controls[account].has_key(room_jid):
+ if room_jid in gajim.interface.minimized_controls[account]:
room_ctrl = gajim.interface.minimized_controls[account][room_jid]
self.room_name = room_ctrl.name
self.gc_contact = gc_contact
@@ -555,12 +555,12 @@ class GroupchatControl(ChatControlBase):
def _update_banner_state_image(self):
banner_status_img = self.xml.get_widget('gc_banner_status_image')
images = gajim.interface.jabber_state_images
- if gajim.gc_connected[self.account].has_key(self.room_jid) and \
+ if self.room_jid in gajim.gc_connected[self.account] and \
gajim.gc_connected[self.account][self.room_jid]:
image = 'muc_active'
else:
image = 'muc_inactive'
- if images.has_key('32') and images['32'].has_key(image):
+ if '32' in images and image in images['32']:
muc_icon = images['32'][image]
if muc_icon.get_storage_type() != gtk.IMAGE_EMPTY:
pix = muc_icon.get_pixbuf()
@@ -800,7 +800,7 @@ class GroupchatControl(ChatControlBase):
if kind == 'incoming': # it's a message NOT from us
# highlighting and sounds
(highlight, sound) = self.highlighting_for_message(text, tim)
- if self.gc_custom_colors.has_key(contact):
+ if contact in self.gc_custom_colors:
other_tags_for_name.append('gc_nickname_color_' + \
str(self.gc_custom_colors[contact]))
else:
@@ -1231,15 +1231,15 @@ class GroupchatControl(ChatControlBase):
real_jid += '/' + gc_c.resource
else:
real_jid = fake_jid
- if con.vcard_shas.has_key(fake_jid):
+ if fake_jid in con.vcard_shas:
if avatar_sha != con.vcard_shas[fake_jid]:
server = gajim.get_server_from_jid(self.room_jid)
if not server.startswith('irc'):
con.request_vcard(real_jid, fake_jid)
else:
cached_vcard = con.get_cached_vcard(fake_jid, True)
- if cached_vcard and cached_vcard.has_key('PHOTO') and \
- cached_vcard['PHOTO'].has_key('SHA'):
+ if cached_vcard and 'PHOTO' in cached_vcard and \
+ 'SHA' in cached_vcard['PHOTO']:
cached_sha = cached_vcard['PHOTO']['SHA']
else:
cached_sha = ''
@@ -1518,7 +1518,7 @@ class GroupchatControl(ChatControlBase):
else:
nick = ''
# join_gc window is needed in order to provide for password entry.
- if gajim.interface.instances[self.account].has_key('join_gc'):
+ if 'join_gc' in gajim.interface.instances[self.account]:
gajim.interface.instances[self.account]['join_gc'].\
window.present()
else:
@@ -1866,8 +1866,7 @@ class GroupchatControl(ChatControlBase):
if c.affiliation == 'owner':
gajim.connections[self.account].request_gc_config(self.room_jid)
elif c.affiliation == 'admin':
- if not gajim.interface.instances[self.account]['gc_config'].has_key(
- self.room_jid):
+ if self.room_jid not in gajim.interface.instances[self.account]['gc_config']:
gajim.interface.instances[self.account]['gc_config'][self.room_jid]\
= config.GroupchatConfigWindow(self.account, self.room_jid)
@@ -1893,7 +1892,7 @@ class GroupchatControl(ChatControlBase):
def _on_bookmark_room_menuitem_activate(self, widget):
'''bookmark the room, without autojoin and not minimized'''
password = ''
- if gajim.gc_passwords.has_key(self.room_jid):
+ if self.room_jid in gajim.gc_passwords:
password = gajim.gc_passwords[self.room_jid]
gajim.interface.add_gc_bookmark(self.account, self.name, self.room_jid, \
'0', '0', password, self.nick)
@@ -2399,7 +2398,7 @@ class GroupchatControl(ChatControlBase):
'''Call vcard_information_window class to display user's information'''
c = gajim.contacts.get_gc_contact(self.account, self.room_jid, nick)
c2 = gajim.contacts.contact_from_gc_contact(c)
- if gajim.interface.instances[self.account]['infos'].has_key(c2.jid):
+ if c2.jid in gajim.interface.instances[self.account]['infos']:
gajim.interface.instances[self.account]['infos'][c2.jid].window.\
present()
else:
diff --git a/src/gtkgui_helpers.py b/src/gtkgui_helpers.py
index 7aed83fef..83cdad0ba 100644
--- a/src/gtkgui_helpers.py
+++ b/src/gtkgui_helpers.py
@@ -587,7 +587,7 @@ def get_avatar_pixbuf_from_cache(fjid, is_fake_jid = False, use_local = True):
is_fake_jid)
if not vcard_dict: # This can happen if cached vcard is too old
return 'ask'
- if not vcard_dict.has_key('PHOTO'):
+ if 'PHOTO' not in vcard_dict:
return None
pixbuf = vcard.get_avatar_pixbuf_encoded_mime(vcard_dict['PHOTO'])[0]
return pixbuf
diff --git a/src/history_window.py b/src/history_window.py
index c0f191c98..8517a4596 100644
--- a/src/history_window.py
+++ b/src/history_window.py
@@ -234,7 +234,7 @@ class HistoryWindow:
def _load_history(self, jid_or_name, account = None):
'''Load history for the given jid/name and show it'''
- if jid_or_name and self.completion_dict.has_key(jid_or_name):
+ if jid_or_name and jid_or_name in self.completion_dict:
# a full qualified jid or a contact name was entered
info_jid, info_account, info_name, info_completion = self.completion_dict[jid_or_name]
self.jids_to_search = [info_jid]
diff --git a/src/message_window.py b/src/message_window.py
index cbdaa6e39..c0f921e4a 100644
--- a/src/message_window.py
+++ b/src/message_window.py
@@ -155,7 +155,7 @@ class MessageWindow(object):
gtk.gdk.ACTION_MOVE)
def change_account_name(self, old_name, new_name):
- if self._controls.has_key(old_name):
+ if old_name in self._controls:
self._controls[new_name] = self._controls[old_name]
del self._controls[old_name]
@@ -235,7 +235,7 @@ class MessageWindow(object):
def new_tab(self, control):
fjid = control.get_full_jid()
- if not self._controls.has_key(control.account):
+ if control.account not in self._controls:
self._controls[control.account] = {}
self._controls[control.account][fjid] = control
diff --git a/src/music_track_listener.py b/src/music_track_listener.py
index 1f2f00a9e..94506b493 100644
--- a/src/music_track_listener.py
+++ b/src/music_track_listener.py
@@ -103,22 +103,22 @@ class MusicTrackListener(gobject.GObject):
def _mpris_properties_extract(self, song):
info = MusicTrackInfo()
- if song.has_key('title'):
+ if 'title' in song:
info.title = song['title']
else:
info.title = ''
- if song.has_key('album'):
+ if 'album' in song:
info.album = song['album']
else:
info.album = ''
- if song.has_key('artist'):
+ if 'artist' in song:
info.artist = song['artist']
else:
info.artist = ''
- if song.has_key('length'):
+ if 'length' in song:
info.duration = int(song['length'])
else:
info.duration = 0
diff --git a/src/notify.py b/src/notify.py
index 9d735aeb5..8687e3584 100644
--- a/src/notify.py
+++ b/src/notify.py
@@ -402,7 +402,7 @@ class NotificationResponseManager:
def on_action_invoked(self, id, reason):
self.received.append((id, time.time(), reason))
- if self.pending.has_key(id):
+ if id in self.pending:
notification = self.pending[id]
notification.on_action_invoked(id, reason)
del self.pending[id]
@@ -414,7 +414,7 @@ class NotificationResponseManager:
self.received.remove(rec)
def on_closed(self, id, reason=None):
- if self.pending.has_key(id):
+ if id in self.pending:
del self.pending[id]
def add_pending(self, id, object):
diff --git a/src/osx/growl/Growl.py b/src/osx/growl/Growl.py
index 4a9e03f91..a5fa30381 100644
--- a/src/osx/growl/Growl.py
+++ b/src/osx/growl/Growl.py
@@ -70,11 +70,11 @@ class netgrowl:
self.socket.sendto(data, (self.hostname, GROWL_UDP_PORT))
def PostNotification(self, userInfo):
- if userInfo.has_key(GROWL_NOTIFICATION_PRIORITY):
+ if GROWL_NOTIFICATION_PRIORITY in userInfo:
priority = userInfo[GROWL_NOTIFICATION_PRIORITY]
else:
priority = 0
- if userInfo.has_key(GROWL_NOTIFICATION_STICKY):
+ if GROWL_NOTIFICATION_STICKY in userInfo:
sticky = userInfo[GROWL_NOTIFICATION_STICKY]
else:
priority = False
diff --git a/src/profile_window.py b/src/profile_window.py
index 9b204b824..710deac5b 100644
--- a/src/profile_window.py
+++ b/src/profile_window.py
@@ -262,7 +262,7 @@ class ProfileWindow:
entries = entry.split('_')
loc = vcard_
if len(entries) == 3: # We need to use lists
- if not loc.has_key(entries[0]):
+ if entries[0] not in loc:
loc[entries[0]] = []
found = False
for e in loc[entries[0]]:
@@ -275,7 +275,7 @@ class ProfileWindow:
loc[entries[0]].append({entries[1]: '', entries[2]: txt})
return vcard_
while len(entries) > 1:
- if not loc.has_key(entries[0]):
+ if entries[0] not in loc:
loc[entries[0]] = {}
loc = loc[entries[0]]
del entries[0]
@@ -323,7 +323,7 @@ class ProfileWindow:
return
vcard_ = self.make_vcard()
nick = ''
- if vcard_.has_key('NICKNAME'):
+ if 'NICKNAME' in vcard_:
nick = vcard_['NICKNAME']
from common import pep
pep.user_send_nickname(self.account, nick)
diff --git a/src/remote_control.py b/src/remote_control.py
index 835c0b377..6fd597c5f 100644
--- a/src/remote_control.py
+++ b/src/remote_control.py
@@ -433,7 +433,7 @@ class SignalObject(dbus.service.Object):
def account_info(self, account):
'''show info on account: resource, jid, nick, prio, message'''
result = DBUS_DICT_SS()
- if gajim.connections.has_key(account):
+ if account in gajim.connections:
# account is valid
con = gajim.connections[account]
index = con.connected
diff --git a/src/roster_window.py b/src/roster_window.py
index a63d5461b..d5537cac9 100644
--- a/src/roster_window.py
+++ b/src/roster_window.py
@@ -454,7 +454,7 @@ class RosterWindow:
if parent_type == 'group' and \
self.model.iter_n_children(parent_i) == 1:
group = self.model[parent_i][C_JID].decode('utf-8')
- if gajim.groups[account].has_key(group):
+ if group in gajim.groups[account]:
del gajim.groups[account][group]
self.model.remove(parent_i)
else:
@@ -985,7 +985,7 @@ class RosterWindow:
gajim.connections[account].mood['mood'].strip()).get_pixbuf()
elif gajim.config.get('show_mood_in_roster') \
- and gajim.connections[account].mood.has_key('mood'):
+ and 'mood' in gajim.connections[account].mood:
self.model[child_iter][C_MOOD_PIXBUF] = \
gtkgui_helpers.load_mood_icon('unknown'). \
get_pixbuf()
@@ -993,7 +993,7 @@ class RosterWindow:
self.model[child_iter][C_MOOD_PIXBUF] = None
if gajim.config.get('show_activity_in_roster') \
- and gajim.connections[account].activity.has_key('activity') \
+ and 'activity' in gajim.connections[account].activity \
and gajim.connections[account].activity['activity'].strip() \
in ACTIVITIES:
self.model[child_iter][C_ACTIVITY_PIXBUF] = \
@@ -1001,7 +1001,7 @@ class RosterWindow:
gajim.connections[account]. \
activity['activity'].strip()).get_pixbuf()
elif gajim.config.get('show_activity_in_roster') \
- and gajim.connections[account].activity.has_key('activity'):
+ and 'activity' in gajim.connections[account].activity:
self.model[child_iter][C_ACTIVITY_PIXBUF] = \
gtkgui_helpers.load_activity_icon('unknown'). \
get_pixbuf()
@@ -1009,8 +1009,8 @@ class RosterWindow:
self.model[child_iter][C_ACTIVITY_PIXBUF] = None
if gajim.config.get('show_tunes_in_roster') \
- and (gajim.connections[account].tune.has_key('artist') \
- or gajim.connections[account].tune.has_key('title')):
+ and ('artist' in gajim.connections[account].tune \
+ or 'title' in gajim.connections[account].tune):
self.model[child_iter][C_TUNE_PIXBUF] = \
gtk.gdk.pixbuf_new_from_file(
'../data/emoticons/static/music.png')
@@ -1266,7 +1266,7 @@ class RosterWindow:
jid = self.model[iters[0]][C_JID]
jid = jid.decode('utf-8')
contact = gajim.contacts.get_contact(account, jid)
- if contact.tune.has_key('artist') or contact.tune.has_key('title'):
+ if 'artist' in contact.tune or 'title' in contact.tune:
pixbuf = gtk.gdk.pixbuf_new_from_file(
'../data/emoticons/static/music.png')
else:
@@ -1966,9 +1966,9 @@ class RosterWindow:
gajim.SHOW_LIST.index('invisible')
gajim.connections[account].change_status(status, txt, auto)
- if gajim.interface.status_sent_to_users.has_key(account):
+ if account in gajim.interface.status_sent_to_users:
gajim.interface.status_sent_to_users[account] = {}
- if gajim.interface.status_sent_to_groups.has_key(account):
+ if account in gajim.interface.status_sent_to_groups:
gajim.interface.status_sent_to_groups[account] = {}
for gc_control in gajim.interface.msg_win_mgr.get_controls(
message_control.TYPE_GC) + \
@@ -2034,7 +2034,7 @@ class RosterWindow:
ctrl.update_status_display(name, uf_show, status)
# unset custom status
- if gajim.interface.status_sent_to_users.has_key(account) and \
+ if account in gajim.interface.status_sent_to_users and \
contact.jid in gajim.interface.status_sent_to_users[account]:
del gajim.interface.status_sent_to_users[account][contact.jid]
@@ -2264,7 +2264,7 @@ class RosterWindow:
for win in gajim.interface.msg_win_mgr.windows():
for ctrl in win.controls():
fjid = ctrl.get_full_jid()
- if gajim.last_message_time[ctrl.account].has_key(fjid):
+ if fjid in gajim.last_message_time[ctrl.account]:
if time.time() - gajim.last_message_time[ctrl.account][fjid] \
< 2:
recent = True
@@ -2307,14 +2307,14 @@ class RosterWindow:
dialogs.SingleMessageWindow(account, server, 'send')
def on_xml_console_menuitem_activate(self, widget, account):
- if gajim.interface.instances[account].has_key('xml_console'):
+ if 'xml_console' in gajim.interface.instances[account]:
gajim.interface.instances[account]['xml_console'].window.present()
else:
gajim.interface.instances[account]['xml_console'] = \
dialogs.XMLConsoleWindow(account)
def on_privacy_lists_menuitem_activate(self, widget, account):
- if gajim.interface.instances[account].has_key('privacy_lists'):
+ if 'privacy_lists' in gajim.interface.instances[account]:
gajim.interface.instances[account]['privacy_lists'].window.present()
else:
gajim.interface.instances[account]['privacy_lists'] = \
@@ -2351,14 +2351,14 @@ class RosterWindow:
return
info = gajim.interface.instances[account]['infos']
- if info.has_key(contact.jid):
+ if contact.jid in info:
info[contact.jid].window.present()
else:
info[contact.jid] = vcard.VcardWindow(contact, account)
def on_info_zeroconf(self, widget, contact, account):
info = gajim.interface.instances[account]['infos']
- if info.has_key(contact.jid):
+ if contact.jid in info:
info[contact.jid].window.present()
else:
contact = gajim.contacts.get_first_contact_from_jid(account,
@@ -2625,7 +2625,7 @@ class RosterWindow:
gajim.connections[account].set_default_list('')
gajim.connections[account].set_active_list('')
gajim.connections[account].del_privacy_list('block')
- if gajim.interface.instances[account].has_key('blocked_contacts'):
+ if 'blocked_contacts' in gajim.interface.instances[account]:
gajim.interface.instances[account]['blocked_contacts'].\
privacy_list_received([])
for (contact, account) in list_:
@@ -2647,7 +2647,7 @@ class RosterWindow:
def on_rename(self, widget, row_type, jid, account):
# this function is called either by F2 or by Rename menuitem
- if gajim.interface.instances.has_key('rename'):
+ if 'rename' in gajim.interface.instances:
gajim.interface.instances['rename'].dialog.present()
return
model = self.modelfilter
@@ -2669,7 +2669,7 @@ class RosterWindow:
message = _('Enter a new name for group %s') % jid
def on_renamed(new_text, account, row_type, jid, old_text):
- if gajim.interface.instances.has_key('rename'):
+ if 'rename' in gajim.interface.instances:
del gajim.interface.instances['rename']
if row_type in ('contact', 'agent'):
if old_text == new_text:
@@ -2706,7 +2706,7 @@ class RosterWindow:
self.add_contact_to_groups(jid, acc, [new_text,])
def on_canceled():
- if gajim.interface.instances.has_key('rename'):
+ if 'rename' in gajim.interface.instances:
del gajim.interface.instances['rename']
gajim.interface.instances['rename'] = dialogs.InputDialog(title, message,
@@ -2812,7 +2812,7 @@ class RosterWindow:
def on_history(self, widget, contact, account):
'''When history menuitem is activated: call log window'''
- if gajim.interface.instances.has_key('logs'):
+ if 'logs' in gajim.interface.instances:
gajim.interface.instances['logs'].window.present()
gajim.interface.instances['logs'].open_history(contact.jid, account)
else:
@@ -2865,7 +2865,7 @@ class RosterWindow:
for account in account_list:
if gajim.connections[account].muc_jid[type_]:
# create the room on this muc server
- if gajim.interface.instances[account].has_key('join_gc'):
+ if 'join_gc' in gajim.interface.instances[account]:
gajim.interface.instances[account]['join_gc'].window.destroy()
try:
gajim.interface.instances[account]['join_gc'] = \
@@ -2906,14 +2906,14 @@ class RosterWindow:
self.remove_groupchat(jid, account)
def on_edit_account(self, widget, account):
- if gajim.interface.instances.has_key('accounts'):
+ if 'accounts' in gajim.interface.instances:
gajim.interface.instances['accounts'].window.present()
else:
gajim.interface.instances['accounts'] = config.AccountsWindow()
gajim.interface.instances['accounts'].select_account(account)
def on_zeroconf_properties(self, widget, account):
- if gajim.interface.instances.has_key('accounts'):
+ if 'accounts' in gajim.interface.instances:
gajim.interface.instances['accounts'].window.present()
else:
gajim.interface.instances['accounts'] = config.AccountsWindow()
@@ -3156,7 +3156,7 @@ class RosterWindow:
our_jid = gajim.get_jid_from_account(account)
accounts = []
if group and account not in accounts:
- if not gajim.interface.status_sent_to_groups.has_key(account):
+ if account not in gajim.interface.status_sent_to_groups:
gajim.interface.status_sent_to_groups[account] = {}
gajim.interface.status_sent_to_groups[account][group] = show
accounts.append(group)
@@ -3164,7 +3164,7 @@ class RosterWindow:
if jid == our_jid:
jid += '/' + contact.resource
self.send_status(account, show, message, to=jid)
- if not gajim.interface.status_sent_to_users.has_key(account):
+ if account not in gajim.interface.status_sent_to_users:
gajim.interface.status_sent_to_users[account] = {}
gajim.interface.status_sent_to_users[account][contact.jid] = show
dialogs.ChangeStatusMessageDialog(on_response, show)
@@ -3266,7 +3266,7 @@ class RosterWindow:
self.get_status_message(status, on_continue)
def on_preferences_menuitem_activate(self, widget):
- if gajim.interface.instances.has_key('preferences'):
+ if 'preferences' in gajim.interface.instances:
gajim.interface.instances['preferences'].window.present()
else:
gajim.interface.instances['preferences'] = config.PreferencesWindow()
@@ -3300,7 +3300,7 @@ class RosterWindow:
helpers.update_optional_features(account)
def on_pep_services_menuitem_activate(self, widget, account):
- if gajim.interface.instances[account].has_key('pep_services'):
+ if 'pep_services' in gajim.interface.instances[account]:
gajim.interface.instances[account]['pep_services'].window.present()
else:
gajim.interface.instances[account]['pep_services'] = \
@@ -3316,7 +3316,7 @@ class RosterWindow:
dialogs.ErrorDialog(_('You cannot join a group chat while you are '
'invisible'))
return
- if gajim.interface.instances[account].has_key('join_gc'):
+ if 'join_gc' in gajim.interface.instances[account]:
gajim.interface.instances[account]['join_gc'].window.present()
else:
# c http://nkour.blogspot.com/2005/05/pythons-init-return-none-doesnt-return.html
@@ -3343,7 +3343,7 @@ class RosterWindow:
dialogs.AboutDialog()
def on_accounts_menuitem_activate(self, widget):
- if gajim.interface.instances.has_key('accounts'):
+ if 'accounts' in gajim.interface.instances:
gajim.interface.instances['accounts'].window.present()
else:
gajim.interface.instances['accounts'] = config.AccountsWindow()
@@ -3356,7 +3356,7 @@ class RosterWindow:
gajim.interface.instances['file_transfers'].window.show_all()
def on_history_menuitem_activate(self, widget):
- if gajim.interface.instances.has_key('logs'):
+ if 'logs' in gajim.interface.instances:
gajim.interface.instances['logs'].window.present()
else:
gajim.interface.instances['logs'] = history_window.\
@@ -3638,7 +3638,7 @@ class RosterWindow:
def on_service_disco_menuitem_activate(self, widget, account):
server_jid = gajim.config.get_per('accounts', account, 'hostname')
- if gajim.interface.instances[account]['disco'].has_key(server_jid):
+ if server_jid in gajim.interface.instances[account]['disco']:
gajim.interface.instances[account]['disco'][server_jid].\
window.present()
else:
@@ -4022,11 +4022,11 @@ class RosterWindow:
transport: transport iconset doesn't contain all icons, so we fall back
to jabber one'''
transport = gajim.get_transport_name_from_jid(jid)
- if transport and self.transports_state_images.has_key(size):
- if not self.transports_state_images[size].has_key(transport):
+ if transport and size in self.transports_state_images:
+ if transport not in self.transports_state_images[size]:
# we don't have iconset for this transport loaded yet. Let's do it
self.make_transport_state_images(transport)
- if self.transports_state_images[size].has_key(transport) and \
+ if transport in self.transports_state_images[size] and \
icon_name in self.transports_state_images[size][transport]:
return self.transports_state_images[size][transport]
return gajim.interface.jabber_state_images[size]
@@ -5334,7 +5334,7 @@ class RosterWindow:
send_custom_status_menuitem.set_image( \
gtkgui_helpers.load_icon('offline'))
send_custom_status_menuitem.set_sensitive(False)
- elif gajim.interface.status_sent_to_users.has_key(account) and \
+ elif account in gajim.interface.status_sent_to_users and \
jid in gajim.interface.status_sent_to_users[account]:
send_custom_status_menuitem.set_image(
gtkgui_helpers.load_icon( \
@@ -5655,7 +5655,7 @@ class RosterWindow:
'offline'))
send_custom_status_menuitem.set_sensitive(False)
else:
- if gajim.interface.status_sent_to_users.has_key(account) and \
+ if account in gajim.interface.status_sent_to_users and \
jid in gajim.interface.status_sent_to_users[account]:
send_custom_status_menuitem.set_image(gtkgui_helpers.load_icon(
gajim.interface.status_sent_to_users[account][jid]))
@@ -5885,7 +5885,7 @@ class RosterWindow:
for account in connected_accounts:
for t in gajim.connections[account].muc_jid:
muc_jid[t] = gajim.connections[account].muc_jid[t]
- if not muc_jid.has_key(c_t):
+ if c_t not in muc_jid:
invite_to_new_room_menuitem.set_sensitive(False)
rooms = [] # a list of (room_jid, account) tuple
invite_to_submenu.append(invite_to_new_room_menuitem)
@@ -5898,7 +5898,7 @@ class RosterWindow:
message_control.TYPE_GC) + minimized_controls:
acct = gc_control.account
room_jid = gc_control.room_jid
- if gajim.gc_connected[acct].has_key(room_jid) and \
+ if room_jid in gajim.gc_connected[acct] and \
gajim.gc_connected[acct][room_jid] and \
contacts_transport == gajim.get_transport_name_from_jid(room_jid):
rooms.append((room_jid, acct))
diff --git a/src/search_window.py b/src/search_window.py
index dc53c68af..4039b88d5 100644
--- a/src/search_window.py
+++ b/src/search_window.py
@@ -82,7 +82,7 @@ class SearchWindow:
self.data_form_widget.data_form.get_purged(), True)
else:
infos = self.data_form_widget.get_infos()
- if infos.has_key('instructions'):
+ if 'instructions' in infos:
del infos['instructions']
gajim.connections[self.account].send_search_form(self.jid, infos,
False)
@@ -107,7 +107,7 @@ class SearchWindow:
if not iter:
return
jid = model[iter][self.jid_column]
- if gajim.interface.instances[self.account]['infos'].has_key(jid):
+ if jid in gajim.interface.instances[self.account]['infos']:
gajim.interface.instances[self.account]['infos'][jid].window.present()
else:
contact = gajim.contacts.create_contact(jid = jid, name='', groups=[],
diff --git a/src/systray.py b/src/systray.py
index e3927a389..b43a566b6 100644
--- a/src/systray.py
+++ b/src/systray.py
@@ -166,7 +166,7 @@ class Systray:
path = os.path.join(helpers.get_iconset_path(iconset), '16x16')
state_images = gtkgui_helpers.load_iconset(path)
- if state_images.has_key('muc_active'):
+ if 'muc_active' in state_images:
join_gc_menuitem.set_image(state_images['muc_active'])
for show in ('online', 'chat', 'away', 'xa', 'dnd', 'invisible'):
@@ -372,7 +372,7 @@ class Systray:
win.present()
def on_preferences_menuitem_activate(self, widget):
- if gajim.interface.instances.has_key('preferences'):
+ if 'preferences' in gajim.interface.instances:
gajim.interface.instances['preferences'].window.present()
else:
gajim.interface.instances['preferences'] = config.PreferencesWindow()
diff --git a/src/tooltips.py b/src/tooltips.py
index 9932177be..5ddc7fccf 100644
--- a/src/tooltips.py
+++ b/src/tooltips.py
@@ -254,7 +254,7 @@ class NotificationAreaTooltip(BaseTooltip, StatusTable):
message = unicode(message, encoding = 'utf-8')
message = helpers.reduce_chars_newlines(message, 100, 1)
message = gobject.markup_escape_text(message)
- if gajim.con_types.has_key(acct['name']) and \
+ if acct['name'] in gajim.con_types and \
gajim.con_types[acct['name']] in ('tls', 'ssl'):
show_lock = True
else:
@@ -431,7 +431,7 @@ class RosterTooltip(NotificationAreaTooltip):
self.account].blocked_contacts:
name_markup += _(' [blocked]')
if self.account and \
- gajim.interface.minimized_controls.has_key(self.account) and \
+ self.account in gajim.interface.minimized_controls and \
prim_contact.jid in gajim.interface.minimized_controls[self.account]:
name_markup += _(' [minimized]')
properties.append((name_markup, None))
@@ -497,7 +497,7 @@ class RosterTooltip(NotificationAreaTooltip):
text = text % local_time
show += text
if self.account and \
- gajim.gc_connected[self.account].has_key(prim_contact.jid):
+ prim_contact.jid in gajim.gc_connected[self.account]:
if gajim.gc_connected[self.account][prim_contact.jid]:
show = _('Connected')
else:
@@ -528,7 +528,7 @@ class RosterTooltip(NotificationAreaTooltip):
' (' + unicode(contact.priority) + ')'))
if self.account and prim_contact.sub and prim_contact.sub != 'both' and\
- not gajim.gc_connected[self.account].has_key(prim_contact.jid):
+ prim_contact.jid not in gajim.gc_connected[self.account]:
# ('both' is the normal sub so we don't show it)
properties.append(( _('Subscription: '),
gobject.markup_escape_text(helpers.get_uf_sub(prim_contact.sub))))
@@ -581,13 +581,13 @@ class RosterTooltip(NotificationAreaTooltip):
Append Tune, Mood, Activity information of the specified contact
to the given property list.
'''
- if contact.mood.has_key('mood'):
+ if 'mood' in contact.mood:
mood = contact.mood['mood'].strip()
if mood in MOODS:
mood = MOODS[mood]
mood = gobject.markup_escape_text(mood)
mood_string = _('Mood:') + ' <b>%s</b>' % mood
- if contact.mood.has_key('text') \
+ if 'text' in contact.mood \
and contact.mood['text'] != '':
mood_text = contact.mood['text'].strip()
mood_text = \
@@ -595,14 +595,14 @@ class RosterTooltip(NotificationAreaTooltip):
mood_string += ' (%s)' % mood_text
properties.append((mood_string, None))
- if contact.activity.has_key('activity'):
+ if 'activity' in contact.activity:
activity = act_plain = \
contact.activity['activity'].strip()
activity = gobject.markup_escape_text(activity)
if act_plain in ACTIVITIES:
activity = ACTIVITIES[activity]['category']
activity_string = _('Activity:') + ' <b>%s' % activity
- if contact.activity.has_key('subactivity'):
+ if 'subactivity' in contact.activity:
activity_sub = \
contact.activity['subactivity'].strip()
if act_plain in ACTIVITIES and activity_sub in \
@@ -613,26 +613,26 @@ class RosterTooltip(NotificationAreaTooltip):
activity_string += ': %s</b>' % activity_sub
else:
activity_string += '</b>'
- if contact.activity.has_key('text'):
+ if 'text' in contact.activity:
activity_text = contact.activity['text'].strip()
activity_text = gobject.markup_escape_text(
activity_text)
activity_string += ' (%s)' % activity_text
properties.append((activity_string, None))
- if contact.tune.has_key('artist') \
- or contact.tune.has_key('title'):
- if contact.tune.has_key('artist'):
+ if 'artist' in contact.tune \
+ or 'title' in contact.tune:
+ if 'artist' in contact.tune:
artist = contact.tune['artist'].strip()
artist = gobject.markup_escape_text(artist)
else:
artist = _('Unknown Artist')
- if contact.tune.has_key('title'):
+ if 'title' in contact.tune:
title = contact.tune['title'].strip()
title = gobject.markup_escape_text(title)
else:
title = _('Unknown Title')
- if contact.tune.has_key('source'):
+ if 'source' in contact.tune:
source = contact.tune['source'].strip()
source = gobject.markup_escape_text(source)
else:
@@ -680,14 +680,14 @@ class FileTransfersTooltip(BaseTooltip):
properties.append((actor, gobject.markup_escape_text(name)))
transfered_len = 0
- if file_props.has_key('received-len'):
+ if 'received-len' in file_props:
transfered_len = file_props['received-len']
properties.append((_('Transferred: '), helpers.convert_bytes(transfered_len)))
status = ''
- if not file_props.has_key('started') or not file_props['started']:
+ if 'started' not in file_props or not file_props['started']:
status = _('Not started')
- elif file_props.has_key('connected'):
- if file_props.has_key('stopped') and \
+ elif 'connected' in file_props:
+ if 'stopped' in file_props and \
file_props['stopped'] == True:
status = _('Stopped')
elif file_props['completed']:
@@ -696,10 +696,10 @@ class FileTransfersTooltip(BaseTooltip):
if file_props['completed']:
status = _('Completed')
else:
- if file_props.has_key('paused') and \
+ if 'paused' in file_props and \
file_props['paused'] == True:
status = _('?transfer status:Paused')
- elif file_props.has_key('stalled') and \
+ elif 'stalled' in file_props and \
file_props['stalled'] == True:
#stalled is not paused. it is like 'frozen' it stopped alone
status = _('Stalled')
diff --git a/src/vcard.py b/src/vcard.py
index 47a1b45a7..f824217fb 100644
--- a/src/vcard.py
+++ b/src/vcard.py
@@ -53,7 +53,7 @@ def get_avatar_pixbuf_encoded_mime(photo):
img_decoded = None
avatar_encoded = None
avatar_mime_type = None
- if photo.has_key('BINVAL'):
+ if 'BINVAL' in photo:
img_encoded = photo['BINVAL']
avatar_encoded = img_encoded
try:
@@ -61,7 +61,7 @@ def get_avatar_pixbuf_encoded_mime(photo):
except:
pass
if img_decoded:
- if photo.has_key('TYPE'):
+ if 'TYPE' in photo:
avatar_mime_type = photo['TYPE']
pixbuf = gtkgui_helpers.get_pixbuf_from_data(img_decoded)
else:
@@ -230,7 +230,7 @@ class VcardWindow:
i = 0
client = ''
os = ''
- while self.os_info.has_key(i):
+ while i in self.os_info:
if not self.os_info[i]['resource'] or \
self.os_info[i]['resource'] == resource:
self.os_info[i]['client'] = client_info
@@ -525,7 +525,7 @@ class ZeroconfVcardWindow:
def fill_personal_page(self):
contact = gajim.connections[gajim.ZEROCONF_ACC_NAME].roster.getItem(self.contact.jid)
for key in ('1st', 'last', 'jid', 'email'):
- if not contact['txt_dict'].has_key(key):
+ if key not in contact['txt_dict']:
contact['txt_dict'][key] = ''
self.xml.get_widget('first_name_label').set_text(contact['txt_dict']['1st'])
self.xml.get_widget('last_name_label').set_text(contact['txt_dict']['last'])
diff --git a/test/lib/mock.py b/test/lib/mock.py
index 02b94b511..5d6348b1a 100644
--- a/test/lib/mock.py
+++ b/test/lib/mock.py
@@ -87,7 +87,7 @@ class Mock:
if realClass:
self.realClassMethods = dict(inspect.getmembers(realClass, inspect.isroutine))
for retMethod in self.mockReturnValues.keys():
- if not self.realClassMethods.has_key(retMethod):
+ if retMethod not in self.realClassMethods:
raise MockInterfaceError("Return value supplied for method '%s' that was not in the original class" % retMethod)
self._setupSubclassMethodInterceptors()
@@ -118,7 +118,7 @@ class Mock:
"""
if self.realClassMethods == None:
return
- if not self.realClassMethods.has_key(name):
+ if name not in self.realClassMethods:
raise MockInterfaceError("Calling mock method '%s' that was not found in the original class" % name)
func = self.realClassMethods[name]
@@ -181,7 +181,7 @@ def _getNumPosSeenAndCheck(numPosCallParams, callKwParams, args, varkw):
for arg in args[:numPosCallParams]:
posSeen[arg] = True
for kwp in callKwParams:
- if posSeen.has_key(kwp):
+ if kwp in posSeen:
raise MockInterfaceError("%s appears as both a positional and named parameter." % kwp)
if kwp in args:
posSeen[kwp] = True
@@ -289,7 +289,7 @@ class MockCallable:
def _findFunc(cl, name):
""" Depth first search for a method with a given name. """
- if cl.__dict__.has_key(name):
+ if name in cl.__dict__:
return cl.__dict__[name]
for base in cl.__bases__:
func = _findFunc(base, name)