[MERGE] forward port branch 10.0 up to 0aeb92ccbc

This commit is contained in:
Christophe Simonis
2018-05-07 11:54:15 +02:00
4 changed files with 60 additions and 8 deletions
+2 -1
View File
@@ -57,7 +57,8 @@ class AccountMove(models.Model):
total_amount += amount
for partial_line in (line.matched_debit_ids + line.matched_credit_ids):
total_reconciled += partial_line.amount
if float_is_zero(total_amount, precision_rounding=move.currency_id.rounding):
precision_currency = move.currency_id or move.company_id.currency_id
if float_is_zero(total_amount, precision_rounding=precision_currency.rounding):
move.matched_percentage = 1.0
else:
move.matched_percentage = total_reconciled / total_amount
+16 -6
View File
@@ -151,11 +151,14 @@ class Warehouse(models.Model):
# If another partner assigned
if vals.get('partner_id'):
warehouses._update_partner_data(vals['partner_id'], vals.get('company_id'))
res = super(Warehouse, self).write(vals)
# check if we need to delete and recreate route
if vals.get('reception_steps') or vals.get('delivery_steps'):
warehouses._update_routes()
route_vals = warehouses._update_routes()
if route_vals:
self.write(route_vals)
if vals.get('resupply_wh_ids') and not vals.get('resupply_route_ids'):
for warehouse in warehouses:
@@ -560,12 +563,19 @@ class Warehouse(models.Model):
# change the default source and destination location and (de)activate picking types
self._update_picking_type()
# update delivery route and rules: unlink the existing rules of the warehouse delivery route and recreate it
self._create_or_update_delivery_route(routes_data)
delivery_route = self._create_or_update_delivery_route(routes_data)
# update receipt route and rules: unlink the existing rules of the warehouse receipt route and recreate it
self._create_or_update_reception_route(routes_data)
self._create_or_update_crossdock_route(routes_data)
self._create_or_update_mto_pull(routes_data)
return True
reception_route = self._create_or_update_reception_route(routes_data)
crossdock_route = self._create_or_update_crossdock_route(routes_data)
mto_pull = self._create_or_update_mto_pull(routes_data)
return {
'route_ids': [(4, route.id) for route in reception_route | delivery_route | crossdock_route],
'mto_pull_id': mto_pull.id,
'reception_route_id': reception_route.id,
'delivery_route_id': delivery_route.id,
'crossdock_route_id': crossdock_route.id,
}
@api.one
def _update_picking_type(self):
+35 -1
View File
@@ -1258,9 +1258,40 @@ var FieldBinaryFile = FieldBinary.extend({
});
}
},
/**
* Render the value of the binary file field
*
* The value depends on the mode (readonly/edit) and the attribute filename
* in the xml node of the field:
*
*
* with filename without filename
* [------------------|-----------------------]
* readonly: | saved filename | binary size |
* edit: | current filename | base64 representation |
* [------------------|-----------------------]
*
*
* This is how the filename is retrieved:
*
* - Suppose that the binary field is named 'data'
* - The xml node of this field is as follow:
*
* `<field name='data' filename='fdata'/>`
*
* - 'fdata' is another field whose value is the filename
* - On the following record:
*
* `{data: "Cg==1das02fa01", fdata: 'my-file.txt'}`
*
* - The content of the file is the value of 'data': Cg==1das02fa01
* - The filename is the value of 'fdata': my-file.txt
*/
render_value: function() {
var filename = this.view.datarecord[this.node.attrs.filename];
var filename;
if (this.get("effective_readonly")) {
// Filename from saved state (might render from a discard operation)
filename = this.view.datarecord[this.node.attrs.filename]; // do not forward-port >= 11.0
this.do_toggle(!!this.get('value'));
if (this.get('value')) {
this.$el.empty().append($("<span/>").addClass('fa fa-download'));
@@ -1274,6 +1305,9 @@ var FieldBinaryFile = FieldBinary.extend({
}
}
} else {
// Filename at the moment (might be unsaved state)
var filenameField = this.field_manager.fields[this.node.attrs.filename]; // do not forward-port >= 11.0
filename = filenameField ? filenameField.get('value') : '';
if(this.get('value')) {
this.$el.children().removeClass('o_hidden');
this.$('.o_select_file_button').first().addClass('o_hidden');
+7
View File
@@ -139,6 +139,13 @@ def init_logger():
if dirname and not os.path.isdir(dirname):
os.makedirs(dirname)
if tools.config['logrotate'] is not False:
if tools.config['workers'] > 1:
# TODO: fallback to regular file logging in master for safe(r) defaults?
#
# Doing so here would be a good idea but also might break
# situations were people do log-shipping of rotated data?
_logger.warn("WARNING: built-in log rotation is not reliable in multi-worker scenarios and may incur significant data loss. "
"It is strongly recommended to use an external log rotation utility or use system loggers (--syslog) instead.")
handler = logging.handlers.TimedRotatingFileHandler(filename=logf, when='D', interval=1, backupCount=30)
elif os.name == 'posix':
handler = logging.handlers.WatchedFileHandler(logf)