Blob Blame History Raw
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)