changeset 5f81631ea012 in /home/hg/repos/gajim
details:http://hg.gajim.org/gajim?cmd=changeset;node=5f81631ea012 description: remove has_key() fix base64 calls (requires and returns bytes, not str)
diffstat:
plugins/dbus_plugin/plugin.py | 2 +- src/common/caps_cache.py | 2 +- src/common/connection_handlers.py | 18 +++++++++--------- src/common/file_props.py | 2 +- src/common/helpers.py | 4 +--- src/common/protocol/bytestream.py | 5 +++-- src/common/resolver.py | 25 ++++++++++++------------- src/common/zeroconf/client_zeroconf.py | 18 +++++++++--------- src/dataforms_widget.py | 3 ++- src/disco.py | 1 - src/gajim-remote.py | 2 +- src/gui_menu_builder.py | 2 +- src/profile_window.py | 3 ++- src/remote_control.py | 2 +- src/roster_window.py | 4 ++-- src/vcard.py | 2 +- 16 files changed, 47 insertions(+), 48 deletions(-)
diffs (truncated from 381 to 300 lines):
diff -r 690dea6f873b -r 5f81631ea012 plugins/dbus_plugin/plugin.py --- a/plugins/dbus_plugin/plugin.py Wed Jan 02 13:54:02 2013 +0100 +++ b/plugins/dbus_plugin/plugin.py Wed Jan 02 17:53:42 2013 +0100 @@ -428,7 +428,7 @@ 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 -r 690dea6f873b -r 5f81631ea012 src/common/caps_cache.py --- a/src/common/caps_cache.py Wed Jan 02 13:54:02 2013 +0100 +++ b/src/common/caps_cache.py Wed Jan 02 17:53:42 2013 +0100 @@ -163,7 +163,7 @@ hash_ = hashlib.md5(S.encode('utf-8')) else: return '' - return base64.b64encode(hash_.digest()) + return base64.b64encode(hash_.digest()).decode('utf-8')
################################################################################ diff -r 690dea6f873b -r 5f81631ea012 src/common/connection_handlers.py --- a/src/common/connection_handlers.py Wed Jan 02 13:54:02 2013 +0100 +++ b/src/common/connection_handlers.py Wed Jan 02 17:53:42 2013 +0100 @@ -431,7 +431,8 @@ if 'PHOTO' in vcard and isinstance(vcard['PHOTO'], dict) and \ 'BINVAL' in vcard['PHOTO']: photo = vcard['PHOTO']['BINVAL'] - photo_decoded = base64.decodestring(photo) + photo_decoded = base64.b64decode(photo.encode('utf-8')).decode( + 'utf-8') gajim.interface.save_avatar_files(our_jid, photo_decoded) avatar_sha = hashlib.sha1(photo_decoded).hexdigest() iq2.getTag('PHOTO').setTagData('SHA', avatar_sha) @@ -684,7 +685,7 @@ 'BINVAL' in vcard['PHOTO']: photo = vcard['PHOTO']['BINVAL'] try: - photo_decoded = base64.decodestring(photo) + photo_decoded = base64.b64decode(photo.encode('utf-8')).decode('utf-8') avatar_sha = hashlib.sha1(photo_decoded).hexdigest() except Exception: avatar_sha = '' @@ -970,7 +971,7 @@ decmsg = self.gpg.decrypt(encmsg, keyID) decmsg = self.connection.Dispatcher.replace_non_character(decmsg) # \x00 chars are not allowed in C (so in GTK) - obj.msgtxt = helpers.decode_string(decmsg.replace('\x00', '')) + obj.msgtxt = decmsg.replace('\x00', '') obj.encrypted = 'xep27' self.gpg_messages_to_decrypt.remove([encmsg, keyID, obj])
@@ -1095,7 +1096,7 @@ jid = gajim.get_jid_without_resource(jid)
try: - return self.sessions[jid].values() + return list(self.sessions[jid].values()) except KeyError: return []
@@ -1157,7 +1158,7 @@ received a thread_id yet and returns the session that we last sent a message to """ - sessions = self.sessions[jid].values() + sessions = list(self.sessions[jid].values())
# sessions that we haven't received a thread ID in idless = [s for s in sessions if not s.received_thread_id] @@ -1178,7 +1179,7 @@ Find an active session that doesn't have a control attached """ try: - sessions = self.sessions[jid].values() + sessions = list(self.sessions[jid].values())
# filter out everything except the default session type chat_sessions = [s for s in sessions if isinstance(s, @@ -1549,9 +1550,8 @@ iq_obj = obj.stanza.buildReply('result') qp = iq_obj.setQuery() qp.setTagData('utc', strftime('%Y%m%dT%H:%M:%S', gmtime())) - qp.setTagData('tz', helpers.decode_string(tzname[daylight])) - qp.setTagData('display', helpers.decode_string(strftime('%c', - localtime()))) + qp.setTagData('tz', tzname[daylight]) + qp.setTagData('display', strftime('%c', localtime())) else: iq_obj = obj.stanza.buildReply('error') err = nbxmpp.ErrorNode(name=nbxmpp.NS_STANZAS + \ diff -r 690dea6f873b -r 5f81631ea012 src/common/file_props.py --- a/src/common/file_props.py Wed Jan 02 13:54:02 2013 +0100 +++ b/src/common/file_props.py Wed Jan 02 17:53:42 2013 +0100 @@ -64,7 +64,7 @@
@classmethod def getAllFileProp(cls): - return cls._files_props.values() + return list(cls._files_props.values())
@classmethod def setFileProp(cls, fp, account, sid): diff -r 690dea6f873b -r 5f81631ea012 src/common/helpers.py --- a/src/common/helpers.py Wed Jan 02 13:54:02 2013 +0100 +++ b/src/common/helpers.py Wed Jan 02 17:53:42 2013 +0100 @@ -633,8 +633,6 @@ from time import strptime return strptime(timestamp, '%Y%m%dT%H:%M:%S')
-# import gajim only when needed (after decode_string is defined) see #4764 - from common import gajim if gajim.HAVE_PYCURL: import pycurl @@ -904,7 +902,7 @@ """ Return the full jid (with resource) from an iq """ - return parse_jid(iq_obj.getFrom()) + return parse_jid(str(iq_obj.getFrom()))
def get_jid_from_iq(iq_obj): """ diff -r 690dea6f873b -r 5f81631ea012 src/common/protocol/bytestream.py --- a/src/common/protocol/bytestream.py Wed Jan 02 13:54:02 2013 +0100 +++ b/src/common/protocol/bytestream.py Wed Jan 02 17:53:42 2013 +0100 @@ -852,7 +852,8 @@ chunk = file_props.fp.read(file_props.block_size) if chunk: datanode = nbxmpp.Node(nbxmpp.NS_IBB + ' data', {'sid': sid, - 'seq': file_props.seq}, base64.encodestring(chunk)) + 'seq': file_props.seq}, base64.b64encode(chunk.encode( + 'utf-8')).decode('utf-8')) file_props.seq += 1 file_props.started = True if file_props.seq == 65536: @@ -887,7 +888,7 @@ log.debug('ReceiveHandler called sid->%s seq->%s' % (sid, seq)) try: seq = int(seq) - data = base64.decodestring(data) + data = base64.b64decode(data.encode('utf-8')).decode('utf-8') except Exception: seq = '' data = '' diff -r 690dea6f873b -r 5f81631ea012 src/common/resolver.py --- a/src/common/resolver.py Wed Jan 02 13:54:02 2013 +0100 +++ b/src/common/resolver.py Wed Jan 02 17:53:42 2013 +0100 @@ -70,33 +70,33 @@ # empty host, return empty list of srv records on_ready([]) return - if self.resolved_hosts.has_key(host+type): + if host + type in self.resolved_hosts: # host is already resolved, return cached values log.debug('%s already resolved: %s' % (host, - self.resolved_hosts[host+type])) - on_ready(host, self.resolved_hosts[host+type]) + self.resolved_hosts[host + type])) + on_ready(host, self.resolved_hosts[host + type]) return - if self.handlers.has_key(host+type): + if host + type in self.handlers: # host is about to be resolved by another connection, # attach our callback log.debug('already resolving %s' % host) - self.handlers[host+type].append(on_ready) + self.handlers[host + type].append(on_ready) else: # host has never been resolved, start now log.debug('Starting to resolve %s using %s' % (host, self)) - self.handlers[host+type] = [on_ready] + self.handlers[host + type] = [on_ready] self.start_resolve(host, type)
def _on_ready(self, host, type, result_list): # practically it is impossible to be the opposite, but who knows :) host = host.lower() log.debug('Resolving result for %s: %s' % (host, result_list)) - if not self.resolved_hosts.has_key(host+type): - self.resolved_hosts[host+type] = result_list - if self.handlers.has_key(host+type): - for callback in self.handlers[host+type]: + if host + type not in self.resolved_hosts: + self.resolved_hosts[host + type] = result_list + if host + type in self.handlers: + for callback in self.handlers[host + type]: callback(host, result_list) - del(self.handlers[host+type]) + del(self.handlers[host + type])
def start_resolve(self, host, type): pass @@ -251,8 +251,7 @@ domain = None if line.startswith(fqdn): domain = fqdn # For nslookup 9.5 - elif helpers.decode_string(line).startswith(ufqdn): - line = helpers.decode_string(line) + elif line.startswith(ufqdn): domain = ufqdn # For nslookup 9.6 if domain: rest = line[len(domain):].split('=') diff -r 690dea6f873b -r 5f81631ea012 src/common/zeroconf/client_zeroconf.py --- a/src/common/zeroconf/client_zeroconf.py Wed Jan 02 13:54:02 2013 +0100 +++ b/src/common/zeroconf/client_zeroconf.py Wed Jan 02 17:53:42 2013 +0100 @@ -173,7 +173,7 @@ id_ = stanza.getID() if not id_: id_ = self.Dispatcher.getAnID() - if self.conn_holder.ids_of_awaiting_messages.has_key(self.fd): + if self.fd in self.conn_holder.ids_of_awaiting_messages: self.conn_holder.ids_of_awaiting_messages[self.fd].append(( id_, thread_id)) else: @@ -195,7 +195,7 @@ id_ = stanza.getID() if not id_: id_ = self.Dispatcher.getAnID() - if self.conn_holder.ids_of_awaiting_messages.has_key(self.fd): + if self.fd in self.conn_holder.ids_of_awaiting_messages: self.conn_holder.ids_of_awaiting_messages[self.fd].append((id_, thread_id)) else: @@ -253,10 +253,10 @@ 'Incorrect answer from server.') return if self.sock_type == TYPE_SERVER: - if attrs.has_key('from'): + if 'from' in attrs: self.to = attrs['from'] self.send_stream_header() - if attrs.has_key('version') and attrs['version'] == '1.0': + if 'version' in attrs and attrs['version'] == '1.0': # other part supports stream features features = Node('stream:features') self.Dispatcher.send(features) @@ -270,12 +270,12 @@
def on_disconnect(self): if self.conn_holder: - if self.conn_holder.ids_of_awaiting_messages.has_key(self.fd): + if self.fd in self.conn_holder.ids_of_awaiting_messages: del self.conn_holder.ids_of_awaiting_messages[self.fd] self.conn_holder.remove_connection(self.sock_hash) - if self.__dict__.has_key('Dispatcher'): + if 'Dispatcher' in self.__dict__: self.Dispatcher.PlugOut() - if self.__dict__.has_key('P2PConnection'): + if 'P2PConnection' in self.__dict__: self.P2PConnection.PlugOut() self.Connection = None self._caller = None @@ -294,7 +294,7 @@ 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) #XXX continue with TLS @@ -710,7 +710,7 @@ if self.ip_to_hash[i] == sock_hash: del self.ip_to_hash[i] break - if self.hash_to_port.has_key(sock_hash): + if sock_hash in self.hash_to_port: del self.hash_to_port[sock_hash]
def start_listener(self, port): diff -r 690dea6f873b -r 5f81631ea012 src/dataforms_widget.py --- a/src/dataforms_widget.py Wed Jan 02 13:54:02 2013 +0100 +++ b/src/dataforms_widget.py Wed Jan 02 17:53:42 2013 +0100 @@ -566,7 +566,8 @@ for uri in field.media.uris: if uri.type_.startswith('image/'): try: - img_data = base64.decodestring(uri.uri_data) + img_data = base64.b64decode(uri.uri_data.encode( + 'utf-8')).decode('utf-8') pixbuf_l = GdkPixbuf.PixbufLoader() pixbuf_l.write(img_data) pixbuf_l.close() diff -r 690dea6f873b -r 5f81631ea012 src/disco.py --- a/src/disco.py Wed Jan 02 13:54:02 2013 +0100 +++ b/src/disco.py Wed Jan 02 17:53:42 2013 +0100 @@ -193,7 +193,6 @@
def __contains__(self, key): return key in self.cache - has_key = __contains__
_icon_cache = CacheDictionary(15)
diff -r 690dea6f873b -r 5f81631ea012 src/gajim-remote.py