Author SHA1 Message Date
msoer 5b874d250a [MiG] port from 19 2026-08-24 12:42:06 +02:00
msoer b8c3e95031 [ADD] changes made to 19 are made in testserver16 as well 2026-08-24 09:10:11 +02:00
mreul 35ab19922a Algemene Mailcatcher toegevoegd voor hnode4 2026-01-15 12:35:35 +00:00
mreul 90c1f6aa0e Hogere versie Go 2025-11-24 11:20:47 +00:00
tpot e971d66603 [FIX] Description 2025-07-04 06:58:01 +00:00
tpot 22ae42f73c [FIX] manifest Author name 2025-07-04 06:54:10 +00:00
mreul a11b34b301 Toegevoegd: Disable google_analytics + Unpublish products in webshop 2025-05-13 14:36:04 +00:00
root 50aa6dd35c Stagingarea variabel gemaakt 2024-11-05 15:00:24 +00:00
tpot dff7231e6e Update testserver_o2b/models/init_test.py
Fix
2024-09-13 18:45:18 +00:00
mreul 05beaca92c Update README.md 2024-06-10 13:15:40 +00:00
tpot 0b7c12fdba Update testserver_o2b/models/init_test.py
Fix error install
2024-04-03 10:06:05 +00:00
mreul 614b78558e Update README.md 2024-03-26 08:45:39 +00:00
Thomas Pot ca9836fca2 Updates testserver and addition v16 (and v17) 2024-03-15 20:45:30 +01:00
mreul 2b524051c3 Functie aanroepen vanuit data.xml 2024-02-26 21:58:57 +00:00
root 1ee214c70a Initiele commit 2024-02-26 14:30:29 +00:00
root c8e217dd03 initiele commit 2024-02-23 16:15:05 +00:00
mreul cc6e5e4eec Add mailcatcher menu 2024-02-23 12:45:03 +01:00
19 changed files with 148 additions and 193 deletions
+3
View File
@@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml
+16
View File
@@ -0,0 +1,16 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredPackages">
<value>
<list size="3">
<item index="0" class="java.lang.String" itemvalue="email_validator" />
<item index="1" class="java.lang.String" itemvalue="freezegun" />
<item index="2" class="java.lang.String" itemvalue="python-dateutil" />
</list>
</value>
</option>
</inspection_tool>
</profile>
</component>
+6
View File
@@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>
+7
View File
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Black">
<option name="sdkName" value="Python 3.10" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10" project-jdk-type="Python SDK" />
</project>
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/testserver.iml" filepath="$PROJECT_DIR$/.idea/testserver.iml" />
</modules>
</component>
</project>
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
Generated
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>
Regular → Executable
View File
+1 -1
View File
@@ -3,4 +3,4 @@
from . import controllers from . import controllers
from . import models from . import models
from . import wizard from . import wizard
from .hooks import post_init_hook from .hooks import post_init_hook
+1 -1
View File
@@ -13,7 +13,7 @@
'website': "http://www.open2bizz.tech", 'website': "http://www.open2bizz.tech",
'category': 'Tools', 'category': 'Tools',
'license': "AGPL-3", 'license': "AGPL-3",
'version': '15.0.1.0.0', 'version': '16.0.1.0.0',
'module_type': 'official', 'module_type': 'official',
'depends': ['mail','base',], 'depends': ['mail','base',],
'data': [ 'data': [
-1
View File
@@ -1,3 +1,2 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from . import controllers from . import controllers
+1 -1
View File
@@ -37,4 +37,4 @@ def post_init_hook(cr, registry):
except subprocess.TimeoutExpired: except subprocess.TimeoutExpired:
_logger.error("MailHog install script timed out after 300 seconds") _logger.error("MailHog install script timed out after 300 seconds")
except Exception as e: except Exception as e:
_logger.error("Failed to run MailHog install script: %s", e) _logger.error("Failed to run MailHog install script: %s", e)
@@ -3,5 +3,3 @@
# MailHog is now accessed via the internal proxy controller at /mailcatcher/ # MailHog is now accessed via the internal proxy controller at /mailcatcher/
# so no dynamic URL computation is needed anymore. # so no dynamic URL computation is needed anymore.
@@ -1,2 +1,2 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_mailcatcher_install_warning_wizard","mailcatcher.install.warning.wizard","model_mailcatcher_install_warning_wizard","base.group_user",1,1,1,1 "access_mailcatcher_install_warning_wizard","mailcatcher.install.warning.wizard","model_mailcatcher_install_warning_wizard","base.group_user",1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_mailcatcher_install_warning_wizard mailcatcher.install.warning.wizard model_mailcatcher_install_warning_wizard base.group_user 1 1 1 1
+15 -13
View File
@@ -1,18 +1,20 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<body> <body>
<div class="document" id="module-name"> <div class="document" id="module-name">
<h1 class="title">mailcatcher_menu</h1> <h1 class="title">mailcatcher_menu</h1>
<p> <p>
This module is ONLY for test environments In DC Open2Bizz This module is ONLY for test environments In DC Open2Bizz
</p> </p>
<p> <p>
Module is developed by Open2Bizz. Bug reports: support@open2bizz.eu Module is developed by Open2Bizz. Bug reports: support@open2bizz.eu
</p> </p>
<p> <p>
<img src="https://www.open2bizz.tech/logo.png" style="max-height: 100px;"> <img src="https://www.open2bizz.tech/logo.png" style="max-height: 100px;">
</p> </p>
</div> </div>
</body> </body>
</html>
</html>
+3 -1
View File
@@ -10,7 +10,7 @@
'website': "http://www.open2bizz.tech", 'website': "http://www.open2bizz.tech",
'category': 'Tools', 'category': 'Tools',
'license': "AGPL-3", 'license': "AGPL-3",
'version': '15.0.1.0.0', 'version': '16.0.1.0.0',
'depends': ['mail', 'base', 'mailcatcher_menu'], 'depends': ['mail', 'base', 'mailcatcher_menu'],
'data': [ 'data': [
'views/templates.xml', 'views/templates.xml',
@@ -18,3 +18,5 @@
], ],
'post_init_hook': 'post_init_hook', 'post_init_hook': 'post_init_hook',
} }
+1 -1
View File
@@ -10,7 +10,7 @@
'website': "http://www.open2bizz.tech", 'website': "http://www.open2bizz.tech",
'category': 'Tools', 'category': 'Tools',
'license': "AGPL-3", 'license': "AGPL-3",
'version': '15.0.1.0.0', 'version': '16.0.1.0.0',
'depends': ['testserver_o2b','website'], 'depends': ['testserver_o2b','website'],
'data': [ 'data': [
'views/templates.xml', 'views/templates.xml',
+44 -117
View File
@@ -2,7 +2,7 @@
import logging import logging
from odoo import api, SUPERUSER_ID from odoo import api, fields, models, SUPERUSER_ID
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)
@@ -10,128 +10,55 @@ _logger = logging.getLogger(__name__)
def post_init_hook(cr, registry): def post_init_hook(cr, registry):
env = api.Environment(cr, SUPERUSER_ID, {}) env = api.Environment(cr, SUPERUSER_ID, {})
Website = env['website'].sudo() model_website_page = env['ir.model'].search([
WebsitePage = env['website.page'].sudo() ('model', '=', 'website.page')
])
# --------------------------------------------------------- test_view = env['ir.model.data']._xmlid_to_res_id(
# 1. Get the generic TEST page template 'testserver_website_o2b.testserver_page_website'
# ---------------------------------------------------------
test_view = env.ref(
'testserver_website_o2b.testserver_page_website',
raise_if_not_found=False,
) )
if not test_view: if model_website_page:
_logger.error( for page in env['website.page'].search([]):
"Testserver website template " _logger.error("________Disable page %s", page.id)
"'testserver_website_o2b.testserver_page_website' not found." page.write({
) 'is_published': False,
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',
}) })
# --------------------------------------------------------- new_page = env['website.page'].create({
# 5. Unpublish all webshop products 'name': "Testbeeld",
# --------------------------------------------------------- 'url': "/testmodus",
# 'view_id': test_view,
# website_published only exists on product.template when the 'is_published': True,
# relevant website/eCommerce functionality is installed. })
#
if env.registry.get('product.template'):
ProductTemplate = env['product.template'].sudo()
if 'website_published' in ProductTemplate._fields: for website in env['website'].search([]):
published_products = ProductTemplate.search([ website.write({
('website_published', '=', True), 'domain': False,
]) 'homepage_url': new_page.url,
})
if published_products: module_ecommerce = env['ir.module.module'].search([
_logger.info( ('name', '=', 'website_sale')
"Unpublishing %s webshop products.", ])
len(published_products),
)
published_products.write({ if module_ecommerce and module_ecommerce.state == 'installed':
'website_published': False, # Disable payment options
}) for payment_method in env['payment.method'].search([]):
payment_method.write({
'active': False,
})
_logger.error(
"________Disable payment method %s",
payment_method.id,
)
_logger.info( # Disable products
"Testserver website neutralization completed successfully." for product in env['product.template'].search([]):
) product.write({
'website_published': False,
})
_logger.error(
"________Disable product %s",
product.id,
)
+27 -54
View File
@@ -1,75 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo> <odoo>
<data> <data>
<!-- Banner for web layout (website Odoo) -->
<!-- Banner for web layout -->
<template id="testserver_banner_website" name="TOP banner test front" inherit_id="website.layout"> <template id="testserver_banner_website" name="TOP banner test front" inherit_id="website.layout">
<xpath expr="//body" position="before"> <xpath expr="//body" position="before">
<div> <div>
<span style="text-align: center; <span style="text-align: center;color: #FFFFFF;background-color: #006CFE;position: relative;display: block;font-size: 16px;">
color: #FFFFFF;
background-color: #006CFE;
position: relative;
display: block;
font-size: 16px;">
***** This is a test environment ***** ***** This is a test environment *****
<a href="https://www.open2bizz.tech/helpdesk" target="_blank" style="color: #000000;"> <a href="https://www.open2bizz.tech/helpdesk" target="_blank" style="color: #000000;">
See website to report issue's. See website to report issue's.
</a> </a>
</span> </span>
</div> </div>
</xpath> </xpath>
</template> </template>
<!-- Replacement layout (website Odoo) -->
<!-- Test environment page -->
<template id="testserver_page_website" name="Website page front"> <template id="testserver_page_website" name="Website page front">
<t t-name="website.test-env">
<t t-call="website.layout"> <t t-call="website.layout">
<div id="wrap" class="oe_structure oe_empty"> <div id="wrap" class="oe_structure oe_empty">
<section class="s_banner parallax s_parallax_is_fixed pb96 o_colored_level pt40"
<section class="s_banner parallax s_parallax_is_fixed pb96 o_colored_level pt40" data-scroll-background-ratio="1" data-snippet="s_banner" data-name="Banner" style="background-image: none;"> data-scroll-background-ratio="1"
data-snippet="s_banner" data-name="Banner" style="background-image: none;">
<span class="s_parallax_bg oe_img_bg o_bg_img_center" style="background-image: url('https://hd-beamers.nl/wp-content/uploads/2014/05/Testbeeld-1280x720p_hd-ready.png'); background-position: 50% 0px;"/> <span class="s_parallax_bg oe_img_bg o_bg_img_center"
style="background-image: url(&quot;https://hd-beamers.nl/wp-content/uploads/2014/05/Testbeeld-1280x720p_hd-ready.png&quot;); background-position: 50% 0px;"/>
<div class="o_we_bg_filter" style="background-image: linear-gradient(135deg, rgba(21, 25, 116, 0.71) 0%, rgba(226, 51, 255, 0.5) 100%);"/> <div class="o_we_bg_filter" style="background-image: linear-gradient(135deg, rgba(21, 25, 116, 0.71) 0%, rgba(226, 51, 255, 0.5) 100%);"/>
<div class="container">
<div class="container"> <div class="row s_nb_column_fixed">
<div class="row s_nb_column_fixed"> <div class="col-lg-6 jumbotron rounded o_cc o_cc1 pt32 pb32 o_colored_level" data-name="Box">
<div class="col-lg-6 jumbotron rounded o_cc o_cc1 pt32 pb32 o_colored_level" data-name="Box"> <h1><font style="font-size: 62px;" class="o_default_snippet_text">TEST</font><br/></h1>
<p class="lead o_default_snippet_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<h1> <a class="mb-2 btn btn-primary" href="/web/login" data-bs-original-title="" title="">Login</a>
<font style="font-size: 62px;" class="o_default_snippet_text">
TEST
</font>
<br/> <br/>
</h1> <br/>
<a class="mb-2 btn btn-secondary" href="https://www.open2bizz.nl" data-bs-original-title="" title="">Open2Bizz</a>
<p class="lead o_default_snippet_text"> </div>
Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</p>
<a class="mb-2 btn btn-primary" href="/web/login">
Login
</a>
<br/>
<br/>
<a class="mb-2 btn btn-secondary" href="https://www.open2bizz.nl">
Open2Bizz
</a>
</div> </div>
</div> </div>
</div> </section>
</div>
</section> </t>
</div>
</t> </t>
</template> </template>
</data> </data>
</odoo> </odoo>