[MERGE] forward port branch 10.0 up to aef7748845

This commit is contained in:
Christophe Simonis
2017-07-07 14:13:07 +02:00
6 changed files with 53 additions and 7 deletions
+5 -4
View File
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from ast import literal_eval
from operator import itemgetter
import time
@@ -442,7 +443,7 @@ class ResPartner(models.Model):
'''
This function returns an action that display invoices/refunds made for the given partners.
'''
action = self.env.ref('account.action_invoice_refund_out_tree')
result = action.read()[0]
result['domain'] = [('partner_id', 'child_of', self.ids)]
return result
action = self.env.ref('account.action_invoice_refund_out_tree').read()[0]
action['domain'] = literal_eval(action['domain'])
action['domain'].append(('partner_id', 'child_of', self.ids))
return action
+3
View File
@@ -17,3 +17,6 @@ Svante Suominen svante.suominen@avoin.systems https://github.com/svantesuominen
Erno Iipponen erno.iipponen@avoin.systems https://github.com/iipponen
Tuomo Aura tuomo.aura@avoin.systems https://github.com/tuomoaura
Atte Isopuro atte.isopuro@avoin.systems https://github.com/aisopuro
Mikko Närjänen mikko.narjanen@avoin.systems https://github.com/mtnarjan
Toni Pesola toni.pesola@avoin.systems https://github.com/tonipes
Santeri Valjakka santeri.valjakka@avoin.systems https://github.com/hegenator
+11
View File
@@ -0,0 +1,11 @@
Israel, 2017-07-06
I hereby agree to the terms of the Odoo Individual Contributor License
Agreement v1.0.
I declare that I am authorized and able to make this agreement and sign this
declaration.
Signed,
Moshe Flam pashute@gmail.com https://github.com/pashute
+8 -2
View File
@@ -45,14 +45,20 @@ Field access
------------
Recordsets provide an "Active Record" interface: model fields can be read and
written directly from the record, but only on singletons (single-record
recordsets). Setting a field's value triggers an update to the database::
written directly from the record as attributes, but only on singletons
(single-record recordsets).
Field values can also be accessed like dict items, which is more elegant and
safer than ``getattr()`` for dynamic field names.
Setting a field's value triggers an update to the database::
>>> record.name
Example Name
>>> record.company_id.name
Company Name
>>> record.name = "Bob"
>>> field = "name"
>>> record[field]
Bob
Trying to read or write a field on multiple records will raise an error.
+4 -1
View File
@@ -75,7 +75,7 @@ def image_resize_image(base64_source, size=(1024, 1024), encoding='base64', file
if image.size != size:
image = image_resize_and_sharpen(image, size)
if image.mode not in ["1", "L", "P", "RGB", "RGBA"]:
if image.mode not in ["1", "L", "P", "RGB", "RGBA"] or (filetype == 'JPEG' and image.mode == 'RGBA'):
image = image.convert("RGB")
background_stream = StringIO.StringIO()
@@ -92,6 +92,7 @@ def image_resize_and_sharpen(image, size, preserve_aspect_ratio=False, factor=2.
:param preserve_aspect_ratio: boolean (default: False)
:param factor: Sharpen factor (default: 2.0)
"""
origin_mode = image.mode
if image.mode != 'RGBA':
image = image.convert('RGBA')
image.thumbnail(size, Image.ANTIALIAS)
@@ -102,6 +103,8 @@ def image_resize_and_sharpen(image, size, preserve_aspect_ratio=False, factor=2.
# create a transparent image for background and paste the image on it
image = Image.new('RGBA', size, (255, 255, 255, 0))
image.paste(resized_image, ((size[0] - resized_image.size[0]) / 2, (size[1] - resized_image.size[1]) / 2))
if image.mode != origin_mode:
image = image.convert(origin_mode)
return image
def image_save_for_web(image, fp=None, format=None):
+22
View File
@@ -363,6 +363,28 @@ except ImportError:
xlwt = None
try:
import xlsxwriter
# add some sanitizations to respect the excel sheet name restrictions
# as the sheet name is often translatable, can not control the input
class PatchedXlsxWorkbook(xlsxwriter.Workbook):
# TODO when xlsxwriter bump to 0.9.8, add worksheet_class=None parameter instead of kw
def add_worksheet(self, name=None, **kw):
# invalid Excel character: []:*?/\
name = re.sub(r'[\[\]:*?/\\]', '', name)
# maximum size is 31 characters
name = name[:31]
return super(PatchedXlsxWorkbook, self).add_worksheet(name, **kw)
xlsxwriter.Workbook = PatchedXlsxWorkbook
except ImportError:
xlsxwriter = None
class UpdateableStr(local):
""" Class that stores an updateable string (used in wizards)
"""