mirror of
https://github.com/bringout/oca-ocb-core.git
synced 2026-04-21 07:12:09 +02:00
17.0 vanilla
This commit is contained in:
parent
2e65bf056a
commit
df627a6bba
328 changed files with 578149 additions and 759311 deletions
|
|
@ -160,6 +160,13 @@ def _create_empty_database(name):
|
|||
_logger.warning("Unable to create PostgreSQL extensions : %s", e)
|
||||
_check_faketime_mode(name)
|
||||
|
||||
# restore legacy behaviour on pg15+
|
||||
try:
|
||||
db = odoo.sql_db.db_connect(name)
|
||||
with db.cursor() as cr:
|
||||
cr.execute("GRANT CREATE ON SCHEMA PUBLIC TO PUBLIC")
|
||||
except psycopg2.Error as e:
|
||||
_logger.warning("Unable to make public schema public-accessible: %s", e)
|
||||
|
||||
@check_db_management_enabled
|
||||
def exp_create_database(db_name, demo, lang, user_password='admin', login='admin', country_code=None, phone=None):
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ def execute(db, uid, obj, method, *args, **kw):
|
|||
with odoo.registry(db).cursor() as cr:
|
||||
res = execute_cr(cr, uid, obj, method, *args, **kw)
|
||||
if res is None:
|
||||
_logger.info('The method %s of the object %s can not return `None` !', method, obj)
|
||||
_logger.info('The method %s of the object %s can not return `None`!', method, obj)
|
||||
return res
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import threading
|
|||
import time
|
||||
import unittest
|
||||
import contextlib
|
||||
from email.utils import parsedate_to_datetime
|
||||
from io import BytesIO
|
||||
from itertools import chain
|
||||
|
||||
|
|
@ -120,6 +121,11 @@ class BaseWSGIServerNoBind(LoggingBaseWSGIServerMixIn, werkzeug.serving.BaseWSGI
|
|||
|
||||
|
||||
class RequestHandler(werkzeug.serving.WSGIRequestHandler):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self._sent_date_header = None
|
||||
self._sent_server_header = None
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def setup(self):
|
||||
# timeout to avoid chrome headless preconnect during tests
|
||||
if config['test_enable'] or config['test_file']:
|
||||
|
|
@ -148,6 +154,33 @@ class RequestHandler(werkzeug.serving.WSGIRequestHandler):
|
|||
# Do not keep processing requests.
|
||||
self.close_connection = True
|
||||
return
|
||||
|
||||
if keyword.casefold() == 'date':
|
||||
if self._sent_date_header is None:
|
||||
self._sent_date_header = value
|
||||
elif self._sent_date_header == value:
|
||||
return # don't send the same header twice
|
||||
else:
|
||||
sent_datetime = parsedate_to_datetime(self._sent_date_header)
|
||||
new_datetime = parsedate_to_datetime(value)
|
||||
if sent_datetime == new_datetime:
|
||||
return # don't send the same date twice (differ in format)
|
||||
if abs((sent_datetime - new_datetime).total_seconds()) <= 1:
|
||||
return # don't send the same date twice (jitter of 1 second)
|
||||
_logger.warning(
|
||||
"sending two different Date response headers: %r vs %r",
|
||||
self._sent_date_header, value)
|
||||
|
||||
if keyword.casefold() == 'server':
|
||||
if self._sent_server_header is None:
|
||||
self._sent_server_header = value
|
||||
elif self._sent_server_header == value:
|
||||
return # don't send the same header twice
|
||||
else:
|
||||
_logger.warning(
|
||||
"sending two different Server response headers: %r vs %r",
|
||||
self._sent_server_header, value)
|
||||
|
||||
super().send_header(keyword, value)
|
||||
|
||||
def end_headers(self, *a, **kw):
|
||||
|
|
@ -944,7 +977,10 @@ class PreforkServer(CommonServer):
|
|||
if config['http_enable']:
|
||||
# listen to socket
|
||||
_logger.info('HTTP service (werkzeug) running on %s:%s', self.interface, self.port)
|
||||
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
family = socket.AF_INET
|
||||
if ':' in self.interface:
|
||||
family = socket.AF_INET6
|
||||
self.socket = socket.socket(family, socket.SOCK_STREAM)
|
||||
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
self.socket.setblocking(0)
|
||||
self.socket.bind((self.interface, self.port))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue