[MERGE] forward port branch 10.0 up to 9822c42707
This commit is contained in:
@@ -326,7 +326,6 @@ snippets_editor.Class.include({
|
||||
switch_theme.last = theme_params;
|
||||
|
||||
$body.removeClass(all_classes).addClass(theme_params.className);
|
||||
switch_images(theme_params, $editable_area);
|
||||
|
||||
var $old_layout = $editable_area.find(".o_layout");
|
||||
// This wrapper structure is the only way to have a responsive and
|
||||
@@ -349,8 +348,9 @@ snippets_editor.Class.include({
|
||||
$contents = $editable_area.contents();
|
||||
}
|
||||
|
||||
$editable_area.empty().append($new_layout);
|
||||
$new_wrapper_content.append($contents);
|
||||
switch_images(theme_params, $new_wrapper_content);
|
||||
$editable_area.empty().append($new_layout);
|
||||
$old_layout.remove();
|
||||
|
||||
if (first_choice) {
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
Spain, 2017-10-24
|
||||
|
||||
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,
|
||||
|
||||
Silvio Fernandez silviofernandezmarin@gmail.com https://github.com/silviofdez
|
||||
@@ -54,6 +54,24 @@ def _update_nogap(self, number_increment):
|
||||
self.invalidate_cache(['number_next'], [self.id])
|
||||
return number_next
|
||||
|
||||
def _predict_nextval(self, seq_id):
|
||||
"""Predict next value for PostgreSQL sequence without consuming it"""
|
||||
# Cannot use currval() as it requires prior call to nextval()
|
||||
query = """SELECT last_value,
|
||||
(SELECT increment_by
|
||||
FROM pg_sequences
|
||||
WHERE sequencename = 'ir_sequence_%(seq_id)s'),
|
||||
is_called
|
||||
FROM ir_sequence_%(seq_id)s"""
|
||||
if self.env.cr._cnx.server_version < 100000:
|
||||
query = "SELECT last_value, increment_by, is_called FROM ir_sequence_%(seq_id)s"
|
||||
self.env.cr.execute(query % {'seq_id': seq_id})
|
||||
(last_value, increment_by, is_called) = self.env.cr.fetchone()
|
||||
if is_called:
|
||||
return last_value + increment_by
|
||||
# sequence has just been RESTARTed to return last_value next time
|
||||
return last_value
|
||||
|
||||
|
||||
class IrSequence(models.Model):
|
||||
""" Sequence model.
|
||||
@@ -73,15 +91,8 @@ class IrSequence(models.Model):
|
||||
if seq.implementation != 'standard':
|
||||
seq.number_next_actual = seq.number_next
|
||||
else:
|
||||
# get number from postgres sequence. Cannot use currval, because that might give an error when
|
||||
# not having used nextval before.
|
||||
query = "SELECT last_value, increment_by, is_called FROM ir_sequence_%03d" % seq.id
|
||||
self._cr.execute(query)
|
||||
(last_value, increment_by, is_called) = self._cr.fetchone()
|
||||
if is_called:
|
||||
seq.number_next_actual = last_value + increment_by
|
||||
else:
|
||||
seq.number_next_actual = last_value
|
||||
seq_id = "%03d" % seq.id
|
||||
seq.number_next_actual = _predict_nextval(self, seq_id)
|
||||
|
||||
def _set_number_next_actual(self):
|
||||
for seq in self:
|
||||
@@ -293,14 +304,8 @@ class IrSequenceDateRange(models.Model):
|
||||
if seq.sequence_id.implementation != 'standard':
|
||||
seq.number_next_actual = seq.number_next
|
||||
else:
|
||||
# get number from postgres sequence. Cannot use currval, because that might give an error when
|
||||
# not having used nextval before.
|
||||
self._cr.execute("SELECT last_value, increment_by, is_called FROM ir_sequence_%03d_%03d" % (seq.sequence_id.id, seq.id))
|
||||
(last_value, increment_by, is_called) = self._cr.fetchone()
|
||||
if is_called:
|
||||
seq.number_next_actual = last_value + increment_by
|
||||
else:
|
||||
seq.number_next_actual = last_value
|
||||
seq_id = "%03d_%03d" % (seq.sequence_id.id, seq.id)
|
||||
seq.number_next_actual = _predict_nextval(self, seq_id)
|
||||
|
||||
def _set_number_next_actual(self):
|
||||
for seq in self:
|
||||
|
||||
@@ -361,15 +361,15 @@ class GeventServer(CommonServer):
|
||||
import gevent
|
||||
from gevent.wsgi import WSGIServer
|
||||
|
||||
# Set process memory limit as an extra safeguard
|
||||
_, hard = resource.getrlimit(resource.RLIMIT_AS)
|
||||
resource.setrlimit(resource.RLIMIT_AS, (config['limit_memory_hard'], hard))
|
||||
|
||||
if os.name == 'posix':
|
||||
# Set process memory limit as an extra safeguard
|
||||
_, hard = resource.getrlimit(resource.RLIMIT_AS)
|
||||
resource.setrlimit(resource.RLIMIT_AS, (config['limit_memory_hard'], hard))
|
||||
signal.signal(signal.SIGQUIT, dumpstacks)
|
||||
signal.signal(signal.SIGUSR1, log_ormcache_stats)
|
||||
|
||||
gevent.spawn(self.watchdog)
|
||||
gevent.spawn(self.watchdog)
|
||||
|
||||
self.httpd = WSGIServer((self.interface, self.port), self.app)
|
||||
_logger.info('Evented Service (longpolling) running on %s:%s', self.interface, self.port)
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user