137 lines
4.1 KiB
Python
137 lines
4.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
import logging
|
|
|
|
from odoo import api, SUPERUSER_ID
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
def post_init_hook(cr, registry):
|
|
env = api.Environment(cr, SUPERUSER_ID, {})
|
|
|
|
Website = env['website'].sudo()
|
|
WebsitePage = env['website.page'].sudo()
|
|
|
|
# ---------------------------------------------------------
|
|
# 1. Get the generic TEST page template
|
|
# ---------------------------------------------------------
|
|
test_view = env.ref(
|
|
'testserver_website_o2b.testserver_page_website',
|
|
raise_if_not_found=False,
|
|
)
|
|
|
|
if not test_view:
|
|
_logger.error(
|
|
"Testserver website template "
|
|
"'testserver_website_o2b.testserver_page_website' not found."
|
|
)
|
|
return
|
|
|
|
# ---------------------------------------------------------
|
|
# 2. Unpublish all existing website pages
|
|
# ---------------------------------------------------------
|
|
pages = WebsitePage.search([])
|
|
|
|
if pages:
|
|
_logger.info(
|
|
"Unpublishing %s existing website pages.",
|
|
len(pages),
|
|
)
|
|
|
|
pages.write({
|
|
'website_published': False,
|
|
})
|
|
|
|
# ---------------------------------------------------------
|
|
# 3. Create a TEST homepage for every website
|
|
# ---------------------------------------------------------
|
|
websites = Website.search([])
|
|
|
|
for website in websites:
|
|
_logger.info(
|
|
"Creating test homepage for website %s (%s).",
|
|
website.name,
|
|
website.id,
|
|
)
|
|
|
|
# Each website gets its own ir.ui.view.
|
|
#
|
|
# In Odoo 15 website.page.website_id is related to
|
|
# view_id.website_id. Therefore we should not use the same
|
|
# ir.ui.view for multiple websites.
|
|
website_test_view = test_view.copy({
|
|
'name': 'Test environment - %s' % website.name,
|
|
'key': '%s.website_%s' % (test_view.key, website.id),
|
|
'website_id': website.id,
|
|
})
|
|
|
|
test_page = WebsitePage.create({
|
|
'url': '/testmodus',
|
|
'view_id': website_test_view.id,
|
|
'website_published': True,
|
|
'website_indexed': False,
|
|
})
|
|
|
|
# Odoo 15 uses homepage_id, NOT homepage_url.
|
|
website.write({
|
|
'domain': False,
|
|
'homepage_id': test_page.id,
|
|
})
|
|
|
|
_logger.info(
|
|
"Test homepage %s assigned to website %s.",
|
|
test_page.id,
|
|
website.id,
|
|
)
|
|
|
|
# ---------------------------------------------------------
|
|
# 4. Disable all payment acquirers
|
|
# ---------------------------------------------------------
|
|
#
|
|
# Odoo 15 uses payment.acquirer.
|
|
# payment.provider belongs to later Odoo versions.
|
|
#
|
|
if env.registry.get('payment.acquirer'):
|
|
payment_acquirers = env['payment.acquirer'].sudo().search([
|
|
('state', '!=', 'disabled'),
|
|
])
|
|
|
|
if payment_acquirers:
|
|
_logger.info(
|
|
"Disabling %s payment acquirers.",
|
|
len(payment_acquirers),
|
|
)
|
|
|
|
payment_acquirers.write({
|
|
'state': 'disabled',
|
|
})
|
|
|
|
# ---------------------------------------------------------
|
|
# 5. Unpublish all webshop products
|
|
# ---------------------------------------------------------
|
|
#
|
|
# website_published only exists on product.template when the
|
|
# relevant website/eCommerce functionality is installed.
|
|
#
|
|
if env.registry.get('product.template'):
|
|
ProductTemplate = env['product.template'].sudo()
|
|
|
|
if 'website_published' in ProductTemplate._fields:
|
|
published_products = ProductTemplate.search([
|
|
('website_published', '=', True),
|
|
])
|
|
|
|
if published_products:
|
|
_logger.info(
|
|
"Unpublishing %s webshop products.",
|
|
len(published_products),
|
|
)
|
|
|
|
published_products.write({
|
|
'website_published': False,
|
|
})
|
|
|
|
_logger.info(
|
|
"Testserver website neutralization completed successfully."
|
|
) |