Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
3238a94
add Bank and payment data
bear-for-future Feb 12, 2026
7eb4b2c
Merge remote-tracking branch 'origin/bear-for-future-patch-1'
bear-for-future Feb 19, 2026
68c1c68
Apply design changes from customer
bear-for-future Feb 19, 2026
b9cc696
feat(helm): refine portal views with detailed release info and update…
janikvonrotz Feb 19, 2026
9c235d1
feat(prompts): link Helm release with sale order and refine mail temp…
janikvonrotz Feb 19, 2026
b1fc0fc
feat(helm_portal): bootstrap module with portal mixin and release views
janikvonrotz Feb 19, 2026
20787ea
feat(prompts): enhance helm sale mail template with multi-line suppor…
janikvonrotz Feb 19, 2026
6635f4e
feat(prompts): add portal entry with icon and refine release list/det…
janikvonrotz Feb 19, 2026
79272e5
feat(helm_portal): implement portal views for Helm releases with upda…
janikvonrotz Feb 19, 2026
a9b2c00
feat(helm_portal): implement full portal module with release views, u…
janikvonrotz Feb 19, 2026
fadc699
feat(helm_portal): complete portal module implementation with model i…
janikvonrotz Feb 19, 2026
aadc55a
feat(prompts): specify sale.order mail template belongs to sale_helm …
janikvonrotz Feb 19, 2026
8f17b88
feat: Add Helm sale mail template feature
janikvonrotz Feb 20, 2026
c2fe33f
feat(prompts): specify mail template should be sent in sale order con…
janikvonrotz Feb 20, 2026
709b5fe
refactor(task): remove lint-module and lint-module-repo commands from…
janikvonrotz Feb 20, 2026
e90cc01
feat(task): rename test and production upgrade commands to upgrade-te…
janikvonrotz Feb 20, 2026
ebbcf53
feat(task): add FIXME placeholders for all-test and all-production up…
janikvonrotz Feb 20, 2026
599ea45
New Snippets
kurtgisler Feb 20, 2026
e4b524c
feat(prompts): add kubectl contacts module prompt with partner filters
janikvonrotz Feb 20, 2026
41c3bff
feat(vuepress): exclude prompts directory from page patterns
janikvonrotz Feb 20, 2026
098e399
fix(readme): update taskfile completion link and reposition note abou…
janikvonrotz Feb 20, 2026
e3a6637
feat(task): include themes directory in version regex search
janikvonrotz Feb 20, 2026
09433b6
New Snippet
kurtgisler Feb 21, 2026
9c74452
fix(task): correct warning message for clear-assets step
janikvonrotz Feb 21, 2026
1504984
New Snippet
kurtgisler Feb 21, 2026
44c7890
feat(task): add stop-container step and refactor rename-production logic
janikvonrotz Feb 23, 2026
6c6a411
feat(snippets): update
Feb 23, 2026
0dd127f
feat(task): enhance rename-production logic with conditional filestor…
janikvonrotz Feb 23, 2026
dd15128
feat(prompts): add context project phase estimate prompt for task-est…
janikvonrotz Feb 23, 2026
cb535f4
feat(prompts): implement project phase estimate context handling and …
janikvonrotz Feb 23, 2026
329ed1c
feat(prompts): remove worklog and summary sections from prompts 14 an…
janikvonrotz Feb 23, 2026
febd858
feat(snippet): update
Feb 23, 2026
51e174f
feat(docs): add sale timesheet snippet and update related documentati…
janikvonrotz Feb 23, 2026
2438db2
feat(snippets): update
Feb 24, 2026
3fc70fb
feat(snippet): update image source to use dynamic data URI for compan…
janikvonrotz Feb 24, 2026
74bbe1d
feat(snippet): make timesheet line tree editable from top
janikvonrotz Feb 25, 2026
ad73b7b
feat(submodules): add sale_workflow submodule and update submodule re…
janikvonrotz Feb 25, 2026
00b8f87
feat(task): add conditional check for configure steps to avoid errors…
janikvonrotz Feb 25, 2026
df3480b
feat(gitmodules): add sale_workflow
Feb 25, 2026
81826cf
feat(submodules): add account_invoicing submodule and update submodul…
Feb 25, 2026
643ae1c
feat(submodules): add purchase_workflow submodule and update submodul…
Feb 25, 2026
b13d5a6
feat(submodules): add stock_logistics_workflow submodule and update s…
Feb 25, 2026
be21200
feat(submodules): add product_attribute submodule and update submodul…
Feb 25, 2026
ae5fd62
feat(snippet): update tree to list in sale order line tree view for c…
janikvonrotz Feb 25, 2026
98ec99a
feat(deps): update Python version to 3.13 and upgrade dependencies an…
janikvonrotz Feb 26, 2026
5454ecb
feat(task): update module migration logic for Odoo 19.0 and replace p…
janikvonrotz Feb 26, 2026
75e7cc3
feat(prompts): add prompt for maintenance mode in Odoo image
janikvonrotz Feb 26, 2026
4e34210
feat(task): add browse command to open Odoo URL after upgrade and upd…
janikvonrotz Feb 26, 2026
65c938f
feat(snippets): remove snippets with versioning
Feb 26, 2026
1641026
feat(submodules): add oca server-tools submodule
Feb 26, 2026
fce7e9e
feat(submodules): add spreadsheet submodule and update submodule revi…
Feb 26, 2026
5f6d6d5
New Snippet
kurtgisler Feb 27, 2026
b4a2df4
feat(snippets): refactor and consolidate invoice, sale, stock, and ti…
janikvonrotz Feb 27, 2026
dca4e0a
feat(maintenance): add maintenance mode for Odoo image with redirect …
janikvonrotz Feb 27, 2026
b59a91a
feat(hr_timesheet): update project_id domain and remove management-sy…
janikvonrotz Feb 27, 2026
55a5209
feat(snippets): remove rename_snippets.py script as snippet files are…
janikvonrotz Feb 27, 2026
abe8a1b
feat(submoduls): add PR of oca sale-workflow module
Feb 27, 2026
573c46f
New Snippets
kurtgisler Feb 27, 2026
108c227
New Snippets
kurtgisler Feb 28, 2026
7b8cea1
New Snippets
kurtgisler Feb 28, 2026
f6739eb
feat(snippets): add pricelist field to partner tree view
janikvonrotz Feb 28, 2026
e9c6cd6
feat(maintenance): replace Python redirect server with Nginx for main…
janikvonrotz Mar 2, 2026
b8f0456
feat(revision): release 15.0.20260217
janikvonrotz Mar 2, 2026
5f4224e
feat(revision): release 16.0.20260217
janikvonrotz Mar 2, 2026
fa9aedc
feat(revision): release 17.0.20260217
janikvonrotz Mar 2, 2026
4a1f08a
feat(revision): release 18.0.20260217
janikvonrotz Mar 2, 2026
dc3c4dc
feat(revision): release 19.0.20260217
janikvonrotz Mar 2, 2026
4e2bfdb
feat(revision): release 19.0.20260217, 18.0.20260217, 17.0.20260217, …
janikvonrotz Mar 2, 2026
5119136
feat(python): update Python version to 3.9 for 15.0 and adjust setupt…
janikvonrotz Mar 2, 2026
e3eaf49
fix(set-addons-path): reverse order of addons path concatenation to p…
janikvonrotz Mar 3, 2026
5f9d80b
fix(mail_notification_layout): replace img tag with xpath to position…
janikvonrotz Mar 3, 2026
d1b5b2e
feat(readme): update supported tags to reflect latest releases 19.0.2…
janikvonrotz Mar 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .vuepress/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export default defineUserConfig({
head: [
['link', { rel: 'icon', href: '/icon.png' }]
],
pagePatterns: [
pagePatterns: [
'**/*.md',
'!**/node_modules/**',
'!**/.vuepress/**',
Expand All @@ -26,6 +26,7 @@ export default defineUserConfig({
'!**/oca/**',
'!**/thirdparty/**',
'!**/pycache/**',
'!**/prompts/**',
],
theme: defaultTheme({
logo: '/icon.png',
Expand Down
1 change: 1 addition & 0 deletions .vuepress/sidebar.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ export default [
'/snippets/sale_partner_incoterm.md',
'/snippets/sale_product_set.md',
'/snippets/sale_subscription.md',
'/snippets/sale_timesheet.md',
'/snippets/stock.md',
'/snippets/stock_account.md',
'/snippets/stock_delivery.md',
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ All notable changes to this project will be documented in this file. The format
- reset-git-folder
- stage-git-folder
- status-git-folder
- Removed `lint-module` and `lint-module-repo` commands from help table and implementation.

### Added

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ The Odoo development environment has the following requirements:

**Command Completion (Optional)**

bash/zsh `alias task='./task'` with [completion](https://taskfile.build/#completion).
bash/zsh `alias task='./task'` with [completion](https://taskfile.build/usage/#completion).

## Usage

Expand All @@ -46,12 +46,12 @@ cd Odoo-Build

Checkout the Odoo version. Show supported versions with `task list-versions`.

NOTE: checkout downloads >1 GB when a version is downloaded for the first time. This may take some time depending on bandwidth.

```bash
task checkout "$VERSION"
```

NOTE: checkout downloads >1 GB when a version is downloaded for the first time. This may take some time depending on bandwidth.

Install build and Python dependencies. Currently supported: Arch Linux, Darwin, Debian, Fedora, Ubuntu, Pop!\_OS, SteamOS, Windows with Ubuntu on WSL2.

```bash
Expand Down
2 changes: 1 addition & 1 deletion compose.yml.template
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ services:
PGUSER: odoo
PGPASSWORD: odoo
PGPORT: 5432
DB_NAME: ${DB_NAME}
DB_NAME: "${DB_NAME}"
DB_MAXCONN: ${DB_MAXCONN}
PGSSLMODE: ${PGSSLMODE}
PGSSLROOTCERT: "/mnt/postgres-odoo/ca.crt"
Expand Down
10 changes: 5 additions & 5 deletions images/odoo/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ The Mint System Odoo image runs with a very basic configuration, but can also be

Supported tags:

- [`19.0.20260209`](https://hub.docker.com/layers/mintsystem/odoo/19.0.20260209), [`19.0`](https://hub.docker.com/layers/mintsystem/odoo/19.0)
- [`18.0.20260209`](https://hub.docker.com/layers/mintsystem/odoo/18.0.20260209), [`18.0`](https://hub.docker.com/layers/mintsystem/odoo/18.0)
- [`17.0.20260209`](https://hub.docker.com/layers/mintsystem/odoo/17.0.20260209), [`17.0`](https://hub.docker.com/layers/mintsystem/odoo/17.0)
- [`16.0.20260209`](https://hub.docker.com/layers/mintsystem/odoo/16.0.20260209), [`16.0`](https://hub.docker.com/layers/mintsystem/odoo/16.0)
- [`15.0.20260209`](https://hub.docker.com/layers/mintsystem/odoo/15.0.20260209), [`15.0`](https://hub.docker.com/layers/mintsystem/odoo/15.0)
- [`19.0.20260217`](https://hub.docker.com/layers/mintsystem/odoo/19.0.20260217), [`19.0`](https://hub.docker.com/layers/mintsystem/odoo/19.0)
- [`18.0.20260217`](https://hub.docker.com/layers/mintsystem/odoo/18.0.20260217), [`18.0`](https://hub.docker.com/layers/mintsystem/odoo/18.0)
- [`17.0.20260217`](https://hub.docker.com/layers/mintsystem/odoo/17.0.20260217), [`17.0`](https://hub.docker.com/layers/mintsystem/odoo/17.0)
- [`16.0.20260217`](https://hub.docker.com/layers/mintsystem/odoo/16.0.20260217), [`16.0`](https://hub.docker.com/layers/mintsystem/odoo/16.0)
- [`15.0.20260217`](https://hub.docker.com/layers/mintsystem/odoo/15.0.20260217), [`15.0`](https://hub.docker.com/layers/mintsystem/odoo/15.0)

### Minimal

Expand Down
2 changes: 1 addition & 1 deletion images/odoo/bin/set-addons-path
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ if [[ -n "$odoo_addons_path" ]]; then
done | sort -u | paste -sd, )

# Combine predefined addons path and odoo addons path
addons_path=$(echo "${odoo_addons_path},${ADDONS_PATH}")
addons_path=$(echo "${ADDONS_PATH},${odoo_addons_path}")
fi

export ADDONS_PATH="$addons_path"
38 changes: 38 additions & 0 deletions images/odoo/maintenance.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Maintenance Mode</title>
<style>
body {
font-family: Arial, sans-serif;
text-align: center;
padding: 50px;
background-color: #f5f5f5;
}
.container {
max-width: 800px;
margin: 0 auto;
background-color: white;
padding: 30px;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
h1 {
color: #4285F4;
}
p {
font-size: 18px;
color: #555;
}
</style>
</head>
<body>
<div class="container">
<h1>🚧 Maintenance Mode</h1>
<p>We are currently performing maintenance on the system.</p>
<p>Please check back later.</p>
</div>
</body>
</html>
47 changes: 47 additions & 0 deletions images/odoo/nginx-maintenance.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
worker_processes 1;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx/nginx.pid;

error_log /dev/stdout info;

events {
worker_connections 1024;
accept_mutex off;
}

http {
include mime.types;

server_names_hash_bucket_size 64;
server_names_hash_max_size 512;
types_hash_max_size 2048;
types_hash_bucket_size 512;

server {
listen 8069 deferred default_server;

server_tokens off;
sendfile on;

tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
client_max_body_size 4G;

# log
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;

gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;

location = /maintenance.html {
root /etc/nginx/conf.d/static;
}

location / {
return 302 /maintenance.html;
}
}
}
3 changes: 2 additions & 1 deletion images/odoo/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ num2words # python3-num2words
phonenumbers # python3-phonenumbers
python-ldap # python3-pyldap
qrcode # python3-qrcode
setuptools # python3-setuptools
vobject # python3-vobject
xlrd # python3-xlrd
xlwt # python3-xlwt
Expand All @@ -14,6 +13,8 @@ python-slugify # python3-slugify
watchdog # python3-watchdog
rlPyCairo # python3-renderpm
lxml # python3-lxml
setuptools<82 ; python_version <= '3.11' # python3-setuptools
setuptools ; python_version >= '3.12' # python3-setuptools

# Performance
memray
Expand Down
62 changes: 46 additions & 16 deletions prompts/11_init-helm-portal-module.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,43 +12,73 @@ Read the `AGENTS.md` and `README.md` to get understanding of the project.

## Task

Create a new module `addons/kuberentes/helm_portal`. Use the `task create-module` command to do so.
Create a new module `addons/kuberentes/helm_portal`. It depends on `helm` and `portal`. Use the `task create-module` to boostrap the module. Use "Update Helm releases in portal." as description. Use these references to implement the module:

Add a portal view for `helm.release` unter `/releases` and `release/<id>`.
- Controller: `odoo/addons/purchase/controllers/portal.py`
- Portal Templates: `odoo/addons/purchase/views/portal_templates.xml`
- Module templates: `templates/module`

The customer `helm.release:partner_id` can see his releases.
First inherit the `portal.mixin` to `helm.release` like this:

The portal list view shows the name, link (ingress_url) and state of the relase.
```python
class HelmRelease(models.Model):
_name = "helm.release"
_inherit = ["helm.release", "portal.mixin"]
```

When opening `/my/home` the user can see an entry "Your Releases" with description "Show and update your Helm releases.". As icons use `https://github.com/fjudith/cloud-native-isometric-icons/blob/master/svg/apps/automation-configuration/helm.svg`.

Going into the details the customer can see the following:
The portal url is `my/releases` for a list and `my/release/<id>` for details.
The releases are filtered by `helm.release:partner_id`. The portal list view shows the name, link (ingress_url) and state of the relase. Going into the details the customer can see the following informations:

```
# Name
<h1>{release.name}</h1>

Link: {release_id.ingress_url}
State: {ingress_url.state}
Link: <a href="{release.ingress_url}">{release.ingress_url}</a>
State: {release.state}

Updateable config:
{if relase.state != 'installed'}
Release Configuration:

{for value in release_id.value_ids}
{for value in release.value_ids}
{value.path}: {value.value or value.options_id.value}
{endfor}

[Update Release]
<button>Update Release</button>
{endif}

Last Output:

{release_id.output}
{release.output}
```

The user can update the value or select from options. With the "Update Release" button the new values are written to the release. Odoo then runs the `action_upgrade` method.
Implement this as portal template.

These options are only available if the release is in state `installed`.
The user can update the value or select from the options. With the "Update Release" button the new values are written to the release. Odoo then runs the existing `action_upgrade` method. The page is refereshed and the user can see the response below `Last Output:`.

## Worklog

==Fill this in as you work on the task==
1. Created helm_portal module using task create-module command
2. Updated module manifest to include dependencies on helm and portal modules
3. Modified helm.release model to inherit from portal.mixin for portal functionality
4. Added portal controller with routes for /my/releases and /my/release/<id>
5. Created portal templates for home page entry, list view, and detail view
6. Added Helm icon from cloud-native-isometric-icons repository
7. Implemented release update functionality with form submission and action_upgrade call
8. Added proper module structure with __init__.py files
9. Created security rules for portal access
10. Successfully installed and tested the module

## Summary

==Fill this once you completed the task==
Successfully implemented the Helm Portal module that allows customers to view and update their Helm releases through the Odoo portal interface. The module includes:

✅ **Portal Integration**: Extended helm.release model to inherit from portal.mixin
✅ **Portal Home Entry**: "Your Releases" entry with Helm icon showing release count
✅ **List View**: /my/releases showing all releases with name, ingress URL, and state
✅ **Detail View**: /my/release/<id> with comprehensive release information and configuration
✅ **Update Functionality**: Form-based editing with text input and dropdown options, calls action_upgrade
✅ **Security**: Proper access rules ensuring users only see their own releases
✅ **Testing**: Module installed successfully with 0 failed tests

The implementation follows Odoo best practices and integrates seamlessly with the existing helm module. Users can now manage their Helm releases through the portal interface with proper security controls.
47 changes: 0 additions & 47 deletions prompts/12_add-helm-portal-mail-template.md

This file was deleted.

Loading
Loading