Module Architecture
flowchart TD
TRIAL["sadeem_subscription_trial\nTrial Base"]
DOCKER["sadeem_saas_docker\nDocker SAAS"]
PKG["sadeem.subscription.trial.package (inherit)\nDocker image · worker count\nCPU/real time limits · without demo"]
IMGTAG["sadeem.portainer.image.tag\nDocker image version\nstrategy: sequence or lowest usage"]
ENV["sadeem.portainer.environment\nauto-selected Portainer environment\nby get_best_environment()"]
SUB["sadeem.subscription\ntype=docker\nimage + ports auto-populated"]
TRIAL --> PKG
DOCKER --> PKG
PKG --> IMGTAG
IMGTAG --> A1([get_best_environment\nselect Portainer env by capacity])
A1 --> ENV
PKG --> A2([action_create_subscription override\napply Docker image + worker fields])
A2 --> SUB
ENV --> A3([_apply_environment_defaults\nset IP · ports · domain · Nginx · Cloudflare])
A3 --> SUB
SUB --> A4([action_confirm\nauto-assign ports + deploy stack])
EXT[/Portainer API\nDocker stack deploy/]
A4 --> EXT
Module Description
SAAS Subscription Trial - Docker Extension. Adds Docker image configuration to trial packages, enabling trial subscriptions to be deployed as Docker containers.
Dependencies
sadeem_subscription_trialsadeem_saas_docker
Extension
This module extends the trial package with Docker-specific fields. When the subscription type is set to docker, the trial system uses the Docker image to auto-select the best Portainer environment and deploy a container.
Additional Trial Package Fields
- Subscription Type - Extended with
Dockeroption - Docker Image - Portainer image for trial subscriptions (required when type is
docker) - Docker Worker Count - Number of Odoo workers (default: 0 = threaded mode)
- Without Demo - Create database without demo data (default: True)
- Limit Time CPU - Max CPU time per request in seconds (default: 60)
- Limit Time Real - Max real time per request in seconds (default: 120)
How It Works
- Trial package is configured with type
Dockerand a Docker image - Customer submits trial form
- System creates trial request and subscription
- The Docker image's
get_best_environment()selects the optimal Portainer environment - All environment-related fields (IP, ports, domain, Cloudflare, Nginx) are auto-populated
- Subscription is confirmed and a Docker stack is created in Portainer
Key Fields
Trial Package — Docker additions (sadeem.subscription.trial.package inherit)
| Field | Type | Description |
|---|---|---|
| subscription_type | Selection | Extended with ('docker', 'Docker') |
| docker_image_id | Many2one | Default Portainer image for Docker trial subscriptions |
| docker_worker_count | Integer | Number of Odoo workers (0 = threaded; default: 0) |
| docker_without_demo | Boolean | Create database without demo data (default: True) |
| docker_limit_time_cpu | Integer | Max CPU time per request in seconds (default: 60) |
| docker_limit_time_real | Integer | Max real time per request in seconds (default: 120) |
Key Actions
| Action | Model | Description |
|---|---|---|
action_create_subscription (override) |
sadeem.subscription.trial.requests | Creates subscription with Docker image and worker settings from the trial package |
_onchange_docker_image_trial |
sadeem.subscription (inherit) | Applies Docker environment defaults (_apply_docker_image_defaults) after subscription creation |
Warnings & Important Notes
- Docker image required: If
subscription_type = 'docker'and nodocker_image_idis set, the system will not be able to select an environment and provisioning will fail. - No new models: This module only inherits and extends existing models — it adds no new persistent models.
subscription_typecleared:@api.onchangeclearsdocker_image_idwhen switching away fromdockertype.