summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2017-11-13 14:45:51 +0100
committerChristophe Simonis <chs@odoo.com>2017-11-13 14:45:51 +0100
commitabfd662109186bbd2df1267d38654893e2cf652b (patch)
tree6c57a6673337f2c77969b2a9cd3bb48157091616
parent3768cce7480821bc206b9502005f9c24ccd1c09e (diff)
parent9822c42707cab575b4a173b60569da1a1c6725aa (diff)
[MERGE] forward port branch 10.0 up to 9822c42707c
-rw-r--r--addons/mass_mailing/static/src/js/mass_mailing_editor.js4
-rw-r--r--doc/cla/individual/silviofdez.md11
-rw-r--r--odoo/addons/base/ir/ir_sequence.py39
-rw-r--r--odoo/service/server.py10
4 files changed, 40 insertions, 24 deletions
diff --git a/addons/mass_mailing/static/src/js/mass_mailing_editor.js b/addons/mass_mailing/static/src/js/mass_mailing_editor.js
index cc0b9d2dd08..9e62986b383 100644
--- a/addons/mass_mailing/static/src/js/mass_mailing_editor.js
+++ b/addons/mass_mailing/static/src/js/mass_mailing_editor.js
@@ -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) {
diff --git a/doc/cla/individual/silviofdez.md b/doc/cla/individual/silviofdez.md
new file mode 100644
index 00000000000..b7e52cc183c
--- /dev/null
+++ b/doc/cla/individual/silviofdez.md
@@ -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 \ No newline at end of file
diff --git a/odoo/addons/base/ir/ir_sequence.py b/odoo/addons/base/ir/ir_sequence.py
index 95aa941c86e..5431a33eac2 100644
--- a/odoo/addons/base/ir/ir_sequence.py
+++ b/odoo/addons/base/ir/ir_sequence.py
@@ -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:
diff --git a/odoo/service/server.py b/odoo/service/server.py
index 67ea1dedba1..149ca149ed0 100644
--- a/odoo/service/server.py
+++ b/odoo/service/server.py
@@ -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: