summaryrefslogtreecommitdiff
path: root/addons/web_editor/controllers/main.py
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2017-08-24 13:17:53 +0200
committerChristophe Simonis <chs@odoo.com>2017-08-24 13:17:53 +0200
commit017ee5eab376b4f09beb62812c1cbc682009ed86 (patch)
tree2af185b0604cd8ce9129c39137bbf39d21d7be89 /addons/web_editor/controllers/main.py
parent006c16198f7f68c9dc8b895defd013f33008840a (diff)
parent877e7098719195ed2934fc9c3b5c3bd8ad8bab07 (diff)
[MERGE] forward port branch saas-17 up to 877e7098719
Diffstat (limited to 'addons/web_editor/controllers/main.py')
-rw-r--r--addons/web_editor/controllers/main.py21
1 files changed, 10 insertions, 11 deletions
diff --git a/addons/web_editor/controllers/main.py b/addons/web_editor/controllers/main.py
index 5a3eca776ef..50a9540323a 100644
--- a/addons/web_editor/controllers/main.py
+++ b/addons/web_editor/controllers/main.py
@@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-
-import cStringIO
+import base64
import io
import json
import logging
@@ -14,11 +13,11 @@ from lxml import etree, html
from odoo.http import request
from odoo import http, tools
+from odoo.tools import pycompat
from odoo.modules.module import get_resource_path, get_module_path
logger = logging.getLogger(__name__)
-
class Web_Editor(http.Controller):
#------------------------------------------------------
# Backend snippet
@@ -40,7 +39,7 @@ class Web_Editor(http.Controller):
debug=request.debug)
for k in kwargs:
- if isinstance(kwargs[k], basestring) and kwargs[k].isdigit():
+ if isinstance(kwargs[k], pycompat.string_types) and kwargs[k].isdigit():
kwargs[k] = int(kwargs[k])
trans = dict(
@@ -96,7 +95,7 @@ class Web_Editor(http.Controller):
font_obj = ImageFont.truetype(addons_path + font, size)
# if received character is not a number, keep old behaviour (icon is character)
- icon = unichr(int(icon)) if icon.isdigit() else icon
+ icon = pycompat.unichr(int(icon)) if icon.isdigit() else icon
# Determine the dimensions of the icon
image = Image.new("RGBA", (size, size), color=(0, 0, 0, 0))
@@ -165,7 +164,7 @@ class Web_Editor(http.Controller):
for c_file in request.httprequest.files.getlist('upload'):
data = c_file.read()
try:
- image = Image.open(cStringIO.StringIO(data))
+ image = Image.open(io.BytesIO(data))
w, h = image.size
if w*h > 42e6: # Nokia Lumia 1020 photo resolution
raise ValueError(
@@ -178,7 +177,7 @@ class Web_Editor(http.Controller):
attachment = Attachments.create({
'name': c_file.filename,
- 'datas': data.encode('base64'),
+ 'datas': base64.b64encode(data),
'datas_fname': c_file.filename,
'public': True,
'res_model': 'ir.ui.view',
@@ -187,7 +186,7 @@ class Web_Editor(http.Controller):
uploads += attachments.read(['name', 'mimetype', 'checksum', 'url'])
except Exception as e:
logger.exception("Failed to upload image to attachment")
- message = unicode(e)
+ message = pycompat.text_type(e)
return """<script type='text/javascript'>
window.parent['%s'](%s, %s);
@@ -316,7 +315,7 @@ class Web_Editor(http.Controller):
content = None
if url_info["customized"]:
# If the file is already customized, the content is found in the corresponding attachment
- content = custom_attachments.filtered(lambda a: a.url == url).datas.decode("base64")
+ content = base64.b64decode(custom_attachments.filtered(lambda a: a.url == url).datas)
else:
# If the file is not yet customized, the content is found by reading the local less file
module = url_info["module"]
@@ -354,14 +353,14 @@ class Web_Editor(http.Controller):
custom_attachment = IrAttachment.search([("url", "=", custom_url)])
if custom_attachment:
# If it was already modified, simply override the corresponding attachment content
- custom_attachment.write({"datas": content.encode("utf-8").encode("base64")})
+ custom_attachment.write({"datas": base64.b64encode(content.encode("utf-8"))})
else:
# If not, create a new attachment to copy the original LESS file content, with its modifications
IrAttachment.create(dict(
name = custom_url,
type = "binary",
mimetype = "text/less",
- datas = content.encode("utf-8").encode("base64"),
+ datas = base64.b64encode(content.encode("utf-8")),
datas_fname = url.split("/")[-1],
url = custom_url, # Having an attachment of "binary" type with an non empty "url" field
# is quite of an hack. This allows to fetch the "datas" field by adding