mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	python3: Add missing utf-8 encoding/decoding in various places.
This commit is contained in:
		@@ -1,5 +1,6 @@
 | 
			
		||||
from __future__ import absolute_import
 | 
			
		||||
 | 
			
		||||
import codecs
 | 
			
		||||
import markdown
 | 
			
		||||
import logging
 | 
			
		||||
import traceback
 | 
			
		||||
@@ -242,9 +243,11 @@ class InlineHttpsProcessor(markdown.treeprocessors.Treeprocessor):
 | 
			
		||||
            if not url.startswith("http://"):
 | 
			
		||||
                # Don't rewrite images on our own site (e.g. emoji).
 | 
			
		||||
                continue
 | 
			
		||||
            digest = hmac.new(settings.CAMO_KEY, url, hashlib.sha1).hexdigest()
 | 
			
		||||
            encoded_url = url.encode("hex")
 | 
			
		||||
            img.set("src", "%s%s/%s" % (settings.CAMO_URI, digest, encoded_url))
 | 
			
		||||
            encoded_url = url.encode("utf-8")
 | 
			
		||||
            encoded_camo_key = settings.CAMO_KEY.encode("utf-8")
 | 
			
		||||
            digest = hmac.new(encoded_camo_key, encoded_url, hashlib.sha1).hexdigest()
 | 
			
		||||
            hex_encoded_url = codecs.encode(encoded_url, "hex")
 | 
			
		||||
            img.set("src", "%s%s/%s" % (settings.CAMO_URI, digest, hex_encoded_url))
 | 
			
		||||
 | 
			
		||||
class InlineInterestingLinkProcessor(markdown.treeprocessors.Treeprocessor):
 | 
			
		||||
    TWITTER_MAX_IMAGE_HEIGHT = 400
 | 
			
		||||
 
 | 
			
		||||
@@ -11,8 +11,8 @@ from six.moves import range
 | 
			
		||||
 | 
			
		||||
def random_api_key():
 | 
			
		||||
    choices = string.ascii_letters + string.digits
 | 
			
		||||
    altchars = ''.join([choices[ord(os.urandom(1)) % 62] for _ in range(2)])
 | 
			
		||||
    return base64.b64encode(os.urandom(24), altchars=altchars)
 | 
			
		||||
    altchars = ''.join([choices[ord(os.urandom(1)) % 62] for _ in range(2)]).encode("utf-8")
 | 
			
		||||
    return base64.b64encode(os.urandom(24), altchars=altchars).decode("utf-8")
 | 
			
		||||
 | 
			
		||||
# create_user_profile is based on Django's User.objects.create_user,
 | 
			
		||||
# except that we don't save to the database so it can used in
 | 
			
		||||
 
 | 
			
		||||
@@ -10,8 +10,9 @@ def initial_password(email):
 | 
			
		||||
       created by populate_db."""
 | 
			
		||||
 | 
			
		||||
    if settings.INITIAL_PASSWORD_SALT is not None:
 | 
			
		||||
        digest = hashlib.sha256(settings.INITIAL_PASSWORD_SALT + email).digest()
 | 
			
		||||
        encoded_key = (settings.INITIAL_PASSWORD_SALT + email).encode("utf-8")
 | 
			
		||||
        digest = hashlib.sha256(encoded_key).digest()
 | 
			
		||||
        return base64.b64encode(digest)[:16]
 | 
			
		||||
    else:
 | 
			
		||||
        # None as a password for a user tells Django to set an unusable password
 | 
			
		||||
        return None
 | 
			
		||||
        return None
 | 
			
		||||
 
 | 
			
		||||
@@ -96,7 +96,7 @@ def write_log_line(log_data, path, method, remote_ip, email, client_name,
 | 
			
		||||
        # Remove non-ascii chars from path (there should be none, if there are it's
 | 
			
		||||
        # because someone manually entered a nonexistant path), as UTF-8 chars make
 | 
			
		||||
        # statsd sad when it sends the key name over the socket
 | 
			
		||||
        statsd_path = statsd_path.encode('ascii', errors='ignore')
 | 
			
		||||
        statsd_path = statsd_path.encode('ascii', errors='ignore').decode("ascii")
 | 
			
		||||
    blacklisted_requests = ['do_confirm', 'send_confirm',
 | 
			
		||||
                            'eventslast_event_id', 'webreq.content', 'avatar', 'user_uploads',
 | 
			
		||||
                            'password.reset', 'static', 'json.bots', 'json.users', 'json.streams',
 | 
			
		||||
 
 | 
			
		||||
@@ -664,10 +664,10 @@ def linebreak(string):
 | 
			
		||||
    return string.replace('\n\n', '<p/>').replace('\n', '<br/>')
 | 
			
		||||
 | 
			
		||||
def extract_message_dict(message_str):
 | 
			
		||||
    return ujson.loads(zlib.decompress(message_str))
 | 
			
		||||
    return ujson.loads(zlib.decompress(message_str).decode("utf-8"))
 | 
			
		||||
 | 
			
		||||
def stringify_message_dict(message_dict):
 | 
			
		||||
    return zlib.compress(ujson.dumps(message_dict))
 | 
			
		||||
    return zlib.compress(ujson.dumps(message_dict).encode("utf-8"))
 | 
			
		||||
 | 
			
		||||
def to_dict_cache_key_id(message_id, apply_markdown):
 | 
			
		||||
    return 'message_dict:%d:%d' % (message_id, apply_markdown)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user