4 Commits

Author SHA1 Message Date
1e6dc183d0 Update install_mailhog_as_service.sh
1.25.0
2026-05-26 12:52:47 +00:00
Thomas Pot
ef684151c9 NEW] Add methods to disable web push notifications 2026-04-28 19:39:01 +02:00
Thomas Pot
ba955407e5 NEW] Add methods to disable web push notifications 2026-04-28 19:32:40 +02:00
Thomas Pot
1d5e7f504c [FIX] Domain must be unique for each website 2026-02-19 17:07:57 +01:00
7 changed files with 65 additions and 173 deletions

View File

@@ -18,7 +18,7 @@ echo ""
echo "==================================="
echo "Install Go 1.24.3..."
echo "==================================="
GO_VERSION=1.24.3
GO_VERSION=1.25.0
wget https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz
sudo rm -rf /usr/local/go

View File

@@ -11,9 +11,8 @@
'author': "Open2bizz",
'website': "http://www.open2bizz.tech",
'category': 'Tools',
'license': "AGPL-3",
'version': '19.0.1.0.0',
'category': 'Uncategorized',
'version': '18.0.1.0.0',
'module_type': 'official',
'depends': ['mail','base',],
'data': [

View File

@@ -8,12 +8,10 @@
'author': "Open2bizz",
'website': "http://www.open2bizz.tech",
'category': 'Tools',
'license': "AGPL-3",
'version': '19.0.1.0.0',
'category': 'Uncategorized',
'version': '18.0.1.0.0',
'depends': ['mail','base','mailcatcher_menu',],
'data': [
'views/templates.xml',
'data/ir_cron.xml',
],
}

View File

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="ir_cron_set_db_parameter" model="ir.cron">
<field name="name">Testserver: Set Date (ONLY FOR TEST ENV.)</field>
<field name="model_id" ref="base.model_ir_logging"/>
<field name="state">code</field>
<field name="code">model.set_db_param()</field>
<field name="interval_type">days</field>
</record>
</odoo>

View File

@@ -1,85 +1,75 @@
# -*- coding: utf-8 -*-
from odoo import tools
from odoo import api, fields, models
from datetime import datetime, timedelta
from collections.abc import Mapping
import logging
_logger = logging.getLogger(__name__)
import os
import uuid
import odoo
import logging
_logger = logging.getLogger(__name__)
class IrLogging(models.Model):
_inherit = 'ir.logging'
MAIL_SERVERS = (
('127.0.0.1', '1025', 'Lokale mailcatcher', 'login', 'name', 't'),
('192.168.78.199', '1025', 'Algemene mailcatcher', 'login', 'name', 't'),
('hnode6.openworx.nl', '1025', 'Algemene mailcatcher vanaf hnode4', 'login', 'name', 't'),
)
EXPECTED_IP_PREFIX = '192.168.78.'
REPORT_URL = 'http://127.0.0.1:8069'
ENTERPRISE_CODE = 'M160129258730'
def init(self):
database_uuid = str(uuid.uuid1())
_logger.debug(f"____ Database UID: {database_uuid}")
self._reset_base_configuration(database_uuid)
_logger.debug(f"_____ reset_base_configuration ____")
self._remove_param_if_exists('web.base.url.freeze')
_logger.debug(f"______ remove_param_if_exists web.base.url.freeze ____")
self._create_param_if_missing('report.url', self.REPORT_URL)
_logger.debug(f"_______ create_param_if_missing report.url ____")
db_id = uuid.uuid1()
_logger.error(db_id)
self.env.cr.execute("""
UPDATE ir_mail_server set active = 'f';
UPDATE fetchmail_server set active = 'f';
UPDATE ir_cron set active = 'f';
DELETE FROM mail_mail;
UPDATE ir_config_parameter set value = 'M160129258730' where key = 'database.enterprise_code';
UPDATE ir_config_parameter set value = (NOW() + INTERVAL '30 DAY') where key = 'database.expiration_date';
UPDATE ir_config_parameter set value = '%s' where key = 'database.uuid';
INSERT INTO ir_mail_server(smtp_host,smtp_port,name,smtp_authentication,smtp_encryption,active) VALUES ('127.0.0.1','1025','Lokale mailcatcher','login','name','t');
INSERT INTO ir_mail_server(smtp_host,smtp_port,name,smtp_authentication,smtp_encryption,active) VALUES ('192.168.78.199','1025','Algemene mailcatcher','login','name','t');
INSERT INTO ir_mail_server(smtp_host,smtp_port,name,smtp_authentication,smtp_encryption,active) VALUES ('hnode6.openworx.nl','1025','Algemene mailcatcher vanaf hnode4','login','name','t');
""" %(db_id))
if self.env['ir.config_parameter'].search([('key','=','web.base.url.freeze')]):
self.env.cr.execute("""DELETE FROM ir_config_parameter WHERE key = 'web.base.url.freeze';""")
if not self.env['ir.config_parameter'].search([('key','=','report.url')]):
self.env.cr.execute("""INSERT INTO ir_config_parameter(key,value) VALUES ('report.url','http://127.0.0.1:8069');""")
if self.env['ir.model'].search([('model','=','mail.partner.device')]):
self.env.cr.execute("""DELETE FROM mail_partner_device;""")
model = self.env['ir.model'].search([('model','=','delivery.carrier')])
if model:
field = self.env['ir.model.fields'].search([('name','=','prod_environment'),('model_id','=',model.id)])
if field:
self.env.cr.execute("""UPDATE delivery_carrier SET prod_environment = False WHERE id>0;""")
model = self.env['ir.model'].search([('model','=','payment.provider')])
if model:
field = self.env['ir.model.fields'].search([('name','=','state'),('model_id','=',model.id)])
if field:
self.env.cr.execute("""UPDATE payment_provider SET state = 'disabled' WHERE id>0;""")
model = self.env['ir.model'].search([('model','=','account.online.link')])
if model:
field = self.env['ir.model.fields'].search([('id','>',0),('model_id','=',model.id)])
if field:
self.env.cr.execute("""DELETE FROM account_online_link WHERE id > 0;""")
if self.env['ir.model'].search([('model','=','account.journal')]):
self.env.cr.execute("""UPDATE account_journal set bank_statements_source = 'undefined';""")
ip_ok = False
with os.popen("ip a") as f:
for x in f.readlines():
if float(x.find('192.168.78.')) > -1:
ip_ok = True
if not ip_ok:
self.env.cr.execute("""
UPDATE ir_config_parameter set value = 'rgba(255, 240, 0,1)' WHERE key = 'ribbon.background.color';
UPDATE ir_config_parameter set value = '#000000' WHERE key = 'ribbon.color';
UPDATE ir_config_parameter set value = '!!! IP WRONG !!!' WHERE key = 'ribbon.name';
""")
ADDONS_PATH = odoo.tools.config['addons_path']
_logger.error(ADDONS_PATH)
for ap in ADDONS_PATH.split(','):
if ap[-10:] == 'testserver':
_logger.error(os.system('./%s/testserver.sh' %(ap)))
self._disable_web_push_notifications()
_logger.debug(f"_______ disable_web_push_notifications ____")
self._disable_delivery_carrier_prod_environment()
_logger.debug(f"_______ disable_delivery_carrier_prod_environment ____")
self._disable_payment_providers()
_logger.debug(f"_______ disable_delivery_carrier_prod_environment ____")
self._clear_account_online_links()
_logger.debug(f"_______ _disable_payment_providers ____")
self._reset_bank_statement_source()
_logger.debug(f"_______ _reset_bank_statement_source ____")
self._set_warning_ribbon_if_ip_is_invalid()
_logger.debug(f"_______ _set_warning_ribbon_if_ip_is_invalid ____")
self._run_testserver_script()
_logger.debug(f"_______ _run_testserver_script ____")
def _reset_base_configuration(self, database_uuid):
self.env.cr.execute("""
UPDATE ir_mail_server SET active = 'f';
UPDATE fetchmail_server SET active = 'f';
UPDATE ir_cron SET active = 'f';
DELETE FROM mail_mail;
UPDATE ir_config_parameter
SET value = %s
WHERE key = 'database.enterprise_code';
UPDATE ir_config_parameter
SET value = (NOW() + INTERVAL '30 DAY')
WHERE key = 'database.expiration_date';
UPDATE ir_config_parameter
SET value = %s
WHERE key = 'database.uuid';
""", (self.ENTERPRISE_CODE, database_uuid))
for mail_server in self.MAIL_SERVERS:
self.env.cr.execute("""
INSERT INTO ir_mail_server(
smtp_host, smtp_port, name, smtp_authentication, smtp_encryption, active
) VALUES (%s, %s, %s, %s, %s, %s);
""", mail_server)
def _remove_param_if_exists(self, key):
if self.env['ir.config_parameter'].search([('key', '=', key)], limit=1):
self.env.cr.execute("DELETE FROM ir_config_parameter WHERE key = %s;", (key,))
def _create_param_if_missing(self, key, value):
if not self.env['ir.config_parameter'].search([('key', '=', key)], limit=1):
self.env.cr.execute(
"INSERT INTO ir_config_parameter(key, value) VALUES (%s, %s);",
(key, value),
)
def _disable_web_push_notifications(self):
parameter = self.env['ir.config_parameter'].sudo()
parameter.set_param('web_push.notification.enabled', '0')
@@ -88,87 +78,3 @@ class IrLogging(models.Model):
('key', 'in', ('mail.web_push_vapid_private_key', 'mail.web_push_vapid_public_key', 'mail.sfu_server_key'))])
for parameter in parameters:
parameter.sudo().unlink()
if self.env['ir.model'].search([('model','=','mail.partner.device')]):
self.env.cr.execute("""DELETE FROM mail_partner_device;""")
def _model_has_field(self, model_name, field_name=None):
model = self.env['ir.model'].search([('model', '=', model_name)], limit=1)
if not model:
return False
if field_name is None:
return True
return bool(
self.env['ir.model.fields'].search(
[('name', '=', field_name), ('model_id', '=', model.id)],
limit=1,
)
)
def _disable_delivery_carrier_prod_environment(self):
if self._model_has_field('delivery.carrier', 'prod_environment'):
self.env.cr.execute(
"UPDATE delivery_carrier SET prod_environment = False WHERE id > 0;"
)
def _disable_payment_providers(self):
if self._model_has_field('payment.provider', 'state'):
self.env.cr.execute(
"UPDATE payment_provider SET state = 'disabled' WHERE id > 0;"
)
def _clear_account_online_links(self):
model = self.env['ir.model'].search([('model', '=', 'account.online.link')], limit=1)
if not model:
return
has_any_field = self.env['ir.model.fields'].search(
[('id', '>', 0), ('model_id', '=', model.id)],
limit=1,
)
if has_any_field:
self.env.cr.execute("DELETE FROM account_online_link WHERE id > 0;")
def _reset_bank_statement_source(self):
if self.env['ir.model'].search([('model', '=', 'account.journal')], limit=1):
self.env.cr.execute(
"UPDATE account_journal SET bank_statements_source = 'undefined';"
)
def _has_expected_ip(self):
with os.popen("ip a") as command_output:
return any(self.EXPECTED_IP_PREFIX in line for line in command_output.readlines())
def _set_warning_ribbon_if_ip_is_invalid(self):
if self._has_expected_ip():
return
self.env.cr.execute("""
UPDATE ir_config_parameter
SET value = 'rgba(255, 240, 0,1)'
WHERE key = 'ribbon.background.color';
UPDATE ir_config_parameter
SET value = '#000000'
WHERE key = 'ribbon.color';
UPDATE ir_config_parameter
SET value = '!!! IP WRONG !!!'
WHERE key = 'ribbon.name';
""")
def _run_testserver_script(self):
addons_path = odoo.tools.config['addons_path']
_logger.error(addons_path)
addons_list = addons_path.split(',') if isinstance(addons_path, str) else list(addons_path)
for addon_path in addons_list:
if addon_path.endswith('testserver'):
_logger.error(os.system(f'./{addon_path}/testserver.sh'))
def set_db_param(self):
## Script to set database expiration date, when enterprise and test env.
parameter = self.env['ir.config_parameter'].search(
[('key', '=', 'database.expiration_date')],
limit=1,
)
if parameter:
new_date_time = datetime.now() + timedelta(days=30)
parameter.write({'value': str(new_date_time)[:19]})

View File

@@ -8,9 +8,8 @@
'author': "Open2bizz",
'website': "http://www.open2bizz.tech",
'category': 'Tools',
'license': "AGPL-3",
'version': '19.0.1.0.0',
'category': 'Uncategorized',
'version': '18.0.1.0.0',
'depends': ['testserver_o2b','website'],
'data': [
'views/templates.xml',

View File

@@ -20,7 +20,7 @@ def post_init_hook(env):
)
for website in env['website'].search([]):
website.write({
'domain': False,
'domain': f"None_{website.domain}",
'homepage_url': new_page.url
})