Description: Various fix around python 3 compatibility
Author: Thomas Andrejak <thomas.andrejak@gmail.com>
Last-Update: 2018-03-17
--- ./prewikka/utils/misc.py 2018-03-15 19:42:29.213685603 -0400
+++ ./prewikka/utils/misc.py 2018-03-17 11:22:21.704899667 -0400
@@ -161,6 +161,7 @@
# translate alpha chars in name to soundex digits
for i, c in enumerate(name):
+ c = chr(c)
if c.isalpha():
if not fc: fc = c # remember first letter
--- ./prewikka/dataprovider/__init__.py 2018-03-17 12:05:21.422745973 -0400
+++ ./prewikka/dataprovider/__init__.py 2018-03-17 12:03:14.145615147 -0400
@@ -245,7 +245,7 @@
@staticmethod
def _value_escape(value):
- if isinstance(value, (int, long)):
+ if isinstance(value, int):
return value
if not isinstance(value, compat.STRING_TYPES):
--- ./prewikka/session/session.py 2018-03-17 12:05:09.175022079 -0400
+++ ./prewikka/session/session.py 2018-03-17 12:02:13.474982823 -0400
@@ -138,7 +138,7 @@
t = time.time()
self._db.delete_expired_sessions(t - self._expiration)
- sessionid = text_type(binascii.hexlify(os.urandom(16) + struct.pack(b">d", t)))
+ sessionid = text_type(binascii.hexlify(os.urandom(16) + struct.pack(b">d", t)).decode('ascii'))
self._db.create_session(sessionid, user, int(t))
self.__set_session(request, sessionid)
--- ./prewikka/utils/json.py 2018-03-17 12:04:44.107587165 -0400
+++ ./prewikka/utils/json.py 2018-03-17 12:04:17.232193003 -0400
@@ -21,6 +21,7 @@
import datetime
import json
+from six import with_metaclass
from prewikka.utils import html
@@ -36,8 +37,7 @@
return nclass
-class JSONObject(object):
- __metaclass__ = _JSONMetaClass
+class JSONObject(with_metaclass(_JSONMetaClass, object)):
def __jsonobj__(self):
return { "__prewikka_class__": (self.__class__.__name__, self.__json__()) }
--- ./prewikka/utils/url.py 2018-03-15 19:42:29.213685603 -0400
+++ ./prewikka/utils/url.py 2018-03-17 12:06:26.014029938 -0400
@@ -125,7 +125,7 @@
else:
authority = tpl[0].encode('idna') + ":%s" % tpl[1]
- return urlunsplit((scheme.encode(encoding), authority,
+ return urlunsplit((quote(scheme.encode(encoding), safe), authority,
quote(path.encode(encoding), safe),
quote(query.encode(encoding), safe),
quote(frag.encode(encoding), safe)))
--- ./prewikka/web/request.py 2018-03-15 19:42:29.221685423 -0400
+++ ./prewikka/web/request.py 2018-03-17 12:08:07.903733073 -0400
@@ -40,7 +40,7 @@
self._buffersize = buffersize
def flush(self):
- self._wcb(''.join(self._dlist))
+ self._wcb(''.join((x.decode('utf-8') for x in self._dlist)).encode('utf-8'))
self._dlist = []
self._len = 0
@@ -97,10 +97,10 @@
# Join is used in place of concatenation / formatting, because we
# prefer performance over readability in this place
if event:
- self._buffer.write("".join(["event: ", event.encode("utf8"), "\n"]))
+ self._buffer.write("".join(["event: ", text_type(event), "\n"]).encode("utf8"))
if data:
- self._buffer.write("".join(["data: ", data.encode("utf8"), "\n\n"]))
+ self._buffer.write("".join(["data: ", text_type(data), "\n\n"]).encode("utf8"))
if sync:
self._buffer.flush()
--- ./prewikka/view.py 2018-03-15 19:42:29.213685603 -0400
+++ ./prewikka/view.py 2018-03-17 12:29:21.195029712 -0400
@@ -523,7 +523,7 @@
try:
rule, view_kwargs = env.request.url_adapter.match(request.path, method=request.method, return_rule=True)
- view = self._views_rules[rule]
+ view = self._views_rules[rule.rule+rule.endpoint]
except werkzeug.exceptions.MethodNotAllowed:
raise InvalidMethodError(N_("Method '%(method)s' is not allowed for view '%(view)s'",
@@ -580,7 +580,7 @@
rule = Rule(path, endpoint=v.view_endpoint, methods=methods, defaults=defaults)
- self._views_rules[rule] = v
+ self._views_rules[rule.rule+rule.endpoint] = v
self._rule_map.add(rule)
def addView(self, view):
@@ -601,7 +601,7 @@
rule = Rule((view.view_path or "/" + view.view_id), endpoint=view.view_endpoint)
- self._views_rules[rule] = view
+ self._views_rules[rule.rule+rule.endpoint] = view
self._rule_map.add(rule)
self._views[view.view_id] = view
--- ./prewikka/web/wsgi.py 2018-03-17 13:27:13.201611729 -0400
+++ ./prewikka/web/wsgi.py 2018-03-17 13:39:27.201065438 -0400
@@ -115,7 +115,7 @@
if not status_text:
status_text = defined_status.get(code, "Unknown")
- self._write = self._start_response("%d %s" % (code, status_text.encode("ISO-8859-1")), headers)
+ self._write = self._start_response("%d %s" % (code, status_text), headers)
def get_cookie(self):
return self._wsgi_get_str('HTTP_COOKIE', '')
--- ./prewikka/usergroup.py 2018-03-15 19:42:29.213685603 -0400
+++ ./prewikka/usergroup.py 2018-03-17 13:54:22.212889497 -0400
@@ -221,7 +221,7 @@
if v not in self.configuration:
continue
- for k in self.configuration[v].keys():
+ for k in list(self.configuration[v].keys()):
if k.find(key) != -1:
self.del_property(k, view=v)