Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
4664bb8
Step 1
litnimax Dec 15, 2025
563ba25
Step 2
litnimax Dec 15, 2025
8e22f9e
[connect] fix license banner
nicolaepostica Dec 15, 2025
7203331
refactoring step 1
nicolaepostica Dec 19, 2025
4de48d8
refactoring step 2
nicolaepostica Dec 20, 2025
b0af824
License refatoring
litnimax Dec 20, 2025
d801b82
refactor: update to version 2.0.1, remove legacy migrations, and impr…
litnimax Dec 22, 2025
9323f21
License fields refactor
litnimax Dec 22, 2025
f3b1f80
[connect] fix license view!
nicolaepostica Dec 22, 2025
b6edfac
License refactoring
litnimax Dec 23, 2025
7f7a1f2
refactor: deduplicate license status computation in ir.module.module
litnimax Dec 23, 2025
7d8c455
feat: add price and license_type to module license data
litnimax Dec 23, 2025
9572a31
refactor: move oduist_module_price to persistent field
litnimax Dec 23, 2025
8300358
Make admin_email required when i_agree checkboxes are selected
litnimax Dec 23, 2025
7cc6c26
refactor: remove module pricing and description fields
litnimax Dec 23, 2025
8e17b66
Rename subscription fields: subscribe_to_security_alerts, subscribe_t…
litnimax Dec 24, 2025
f812e47
Rename admin_email field to subscribe_email
litnimax Dec 24, 2025
cfa9cf5
Add Oduist proprietary license header to license-related files
litnimax Dec 24, 2025
10c163b
Add LICENSE and COPYRIGHT files
litnimax Dec 24, 2025
ee13ba1
Add copyright headers to license-related files
litnimax Dec 24, 2025
cb6bb2b
Check license refatoring
litnimax Dec 24, 2025
458668a
refactor: Move originate_call from Settings to Call model
litnimax Dec 25, 2025
1ca65e3
License check added everywhere
litnimax Dec 25, 2025
862d806
Some license small fixes
litnimax Dec 25, 2025
ba446e9
license comment found
litnimax Dec 25, 2025
ae3cfc1
18.0 merge into OPL
litnimax Jan 17, 2026
a33532d
License VAT on buy
litnimax Jan 20, 2026
5948f44
VAT state fix for module buy
litnimax Jan 20, 2026
43b6cb4
Merge branch '18.0' into 18.0-opl
litnimax Jan 20, 2026
6b1f354
Oduist License decoupling
litnimax Jan 21, 2026
ba5d539
Removed test script
litnimax Jan 21, 2026
cafdc69
Removed agent files
litnimax Jan 21, 2026
dfcc737
email fix
litnimax Jan 21, 2026
c2937e7
Rename data.xml to license.xml
litnimax Jan 22, 2026
5f47daf
Optimize: move set_defaults logic to _get_instance_data
litnimax Jan 22, 2026
d4abbdf
Remove unused module_version and odoo_version fields
litnimax Jan 22, 2026
a92d82a
Small fixes
litnimax Jan 22, 2026
be44fca
Post init hooks
litnimax Jan 22, 2026
b17cf5e
[connect] Refactor: Move strip_number function
nicolaepostica Jan 23, 2026
a41756f
Removed instance_uid from webhook paths
litnimax Jan 23, 2026
f8cbd19
Merge branch '18.0-opl' of github.com:oduist/connect_addons into 18.0…
litnimax Jan 23, 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
19 changes: 19 additions & 0 deletions connect/COPYRIGHT
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
Copyright (c) 2025 Oduist OÜ

ADDITIONAL RESTRICTIONS:

The following components of this Software are protected against modification:

1. License validation mechanisms
2. Payment processing and billing logic
3. Subscription verification systems
4. Authentication and authorization related to licensing
5. Any code that communicates with Oduist licensing servers

Modification, removal, or circumvention of these protection mechanisms
constitutes a material breach of this license and may result in:
- Immediate termination of your license
- Legal action for damages
- Criminal prosecution where applicable

For questions regarding these restrictions, contact: team@oduist.com
101 changes: 30 additions & 71 deletions connect/LICENSE
Original file line number Diff line number Diff line change
@@ -1,71 +1,30 @@
Business Source License
License text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved.

"Business Source License" is a trademark of MariaDB Corporation Ab.

Licensor: Oduist OÜ

Licensed Work: The Licensed Work is (c) 2025 Oduist OÜ

Additional Use Grant:

You may make production use of the Licensed Work, provided that your use does not include:

- Reselling or Redistributing the Licensed Work: You may not offer, distribute, sublicense, sell,
lease, or otherwise transfer the Licensed Work to any third party in any form, whether modified or unmodified.
- Providing Support, Customization, or other Services: You may not offer any paid or unpaid support,
consulting, or customization services related to the Licensed Work to third parties.
- Offering the Licensed Work as a Hosted Service or Embedding It in a Product: You may not offer the
Licensed Work on a hosted basis, integrate it into another service, or embed it in any product
that is provided to third parties.
- Competing with Oduist OÜ: You may not use the Licensed Work in any way that competes with
Oduist OÜ’s offerings, including its paid support and service agreements.

For purposes of this license:

- "Product" means software that is offered to end users to manage in their own environments or
offered as a service on a hosted basis.
- "Embedded" means including the source code from the Licensed Work in a competitive offering.
"Embedded" also means packaging the competitive offering in such a way that the Licensed Work must be accessed or downloaded for the competitive offering to operate.

Hosting or using the Licensed Work(s) for internal purposes within an organization is not considered a competitive offering. Oduist OÜ considers your organization to include all of your affiliates under common control.

For binding interpretive guidance on using Oduist products under the Business Source License, please visit our WEB site (https://oduist.com/bsl).

Change Date: 1 Oct 2028

Change License: LGPLv3

For information about alternative licensing arrangements for the Licensed Work, please contact team@oduist.com

Terms
The Licensor hereby grants you the right to copy, modify, create derivative works, redistribute, and
make non-production use of the Licensed Work. The Licensor may make an Additional Use Grant, above,
permitting limited production use.

Effective on the Change Date, or the fourth anniversary of the first publicly available distribution of
a specific version of the Licensed Work under this License, whichever comes first, the Licensor hereby
grants you rights under the terms of the Change License, and the rights granted in the paragraph above
terminate.

If your use of the Licensed Work does not comply with the requirements currently in effect as described
in this License, you must purchase a commercial license from the Licensor, its affiliated entities, or
authorized resellers, or you must refrain from using the Licensed Work.

All copies of the original and modified Licensed Work, and derivative works of the Licensed Work, are
subject to this License. This License applies separately for each version of the Licensed Work and the
Change Date may vary for each version of the Licensed Work released by Licensor.

You must conspicuously display this License on each original or modified copy of the Licensed Work. If
you receive the Licensed Work in original or modified form from a third party, the terms and conditions
set forth in this License apply to your use of that work.

Any use of the Licensed Work in violation of this License will automatically terminate your rights under
this License for the current and all other versions of the Licensed Work.

This License does not grant you any right in any trademark or logo of Licensor or its affiliates
(provided that you may use a trademark or logo of Licensor as expressly required by this License).

TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON AN "AS IS" BASIS. LICENSOR
HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION)
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND TITLE.
Oduist Proprietary License v1.0

This software and associated files (the "Software") may only be used
(executed, modified, executed after modifications) if you have purchased
a valid license from Oduist OÜ via https://oduist.com or if you have received
a written agreement from Oduist OÜ.

You may develop Odoo modules that use the Software as a library (typically
by depending on it, importing it and using its resources), but without
copying any source code or material from the Software. You may distribute
those modules under the license of your choice, provided that this license
is compatible with the terms of the Oduist Proprietary License.

It is forbidden to publish, distribute, sublicense, or sell copies of the
Software or modified copies of the Software.

Any modifications to the Software's licensing validation, payment processing,
or subscription verification mechanisms are strictly prohibited. See the
COPYRIGHT file for additional restrictions.

The above copyright notice and this permission notice must be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
33 changes: 33 additions & 0 deletions connect/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,36 @@
# -*- coding: utf-8 -*-
"""
ODUIST PROPRIETARY LICENSE
Copyright (c) 2025 Oduist

This file contains license validation logic.
Modification is prohibited under Oduist Proprietary License.
See LICENSE and COPYRIGHT files for full terms.
"""

from . import controllers
from . import models
from . import wizard

import logging
from odoo import fields, api, SUPERUSER_ID

_logger = logging.getLogger(__name__)
def post_init_hook(*args):
try:
# Handle different Odoo versions
if len(args) == 1:
# Odoo 16+ - single env argument
env = args[0]
else:
# Odoo 15 - cr and registry arguments
cr, registry = args
env = api.Environment(cr, SUPERUSER_ID, {})
# Find the connect module record
module = env['ir.module.module'].search([('name', '=', 'connect')], limit=1)
if module:
module.write({'create_date': fields.Datetime.now()})
# Update module pricing.
env['oduist.license'].update_license_status(raise_exc=False)
except Exception as e:
_logger.error('Error in post_init_hook: %s', str(e))
141 changes: 72 additions & 69 deletions connect/__manifest__.py
Original file line number Diff line number Diff line change
@@ -1,80 +1,83 @@
# -*- encoding: utf-8 -*-

{
'name': 'Connect',
'version': '1.0.13',
'author': 'Oduist',
'maintainer': 'Oduist',
'live_test_url': 'https://connect-demo-18.oduist.com/',
'price': 0,
'currency': 'EUR',
'support': 'support@oduist.com',
'license': 'Other proprietary',
'category': 'Phone',
'summary': 'Twilio and Odoo integration application',
'description': '',
'depends': ['mail', 'contacts', 'sms'],
'external_dependencies': {
'python': ['twilio', 'openai'],
"name": "Connect",
"version": "2.0.1",
"author": "Oduist",
"maintainer": "Oduist",
"live_test_url": "https://connect-demo.oduist.com/",
"price": 0, # TRIAL
"currency": "EUR",
"support": "support@oduist.com",
"license": "Other proprietary",
"category": "Phone",
"summary": "Twilio and Odoo integration application",
"description": "",
"depends": ["mail", "contacts", "sms"],
"external_dependencies": {
"python": ["twilio", "openai", "PyJWT"],
},
'data': [
'data/res_users.xml',
'data/data.xml',
'data/functions.xml',
'data/ir_cron.xml',
'data/twiml.xml',
'data/res_partner.xml',
'data/whatsapp_templates.xml',
"sequences": True,
"data": [
"data/res_users.xml",
"data/license.xml",
"data/ir_cron.xml",
"data/twiml.xml",
"data/res_partner.xml",
"data/whatsapp_templates.xml",
# Security
'security/groups.xml',
'security/admin.xml',
'security/webhook.xml',
'security/user.xml',
'security/user_record_rules.xml',
'security/admin_record_rules.xml',
"security/groups.xml",
"security/admin.xml",
"security/webhook.xml",
"security/user.xml",
"security/license.xml",
"security/user_record_rules.xml",
"security/admin_record_rules.xml",
# Views
'views/menu.xml',
'views/settings.xml',
'views/domain.xml',
'views/user.xml',
'views/twiml.xml',
'views/debug.xml',
'views/exten.xml',
'views/call.xml',
'views/callflow.xml',
'views/channel.xml',
'views/outgoing_callerid.xml',
'views/recording.xml',
'views/number.xml',
'views/favorite.xml',
'views/res_partner.xml',
'views/message.xml',
'views/message_configuration.xml',
'views/message_content_template.xml',
'views/whatsapp_sender.xml',
'views/versions.xml',
'views/documentation.xml',
"views/menu.xml",
"views/settings.xml",
"views/license.xml",
"views/domain.xml",
"views/user.xml",
"views/twiml.xml",
"views/debug.xml",
"views/exten.xml",
"views/call.xml",
"views/callflow.xml",
"views/channel.xml",
"views/outgoing_callerid.xml",
"views/recording.xml",
"views/number.xml",
"views/favorite.xml",
"views/res_partner.xml",
"views/message.xml",
"views/message_configuration.xml",
"views/message_content_template.xml",
"views/whatsapp_sender.xml",
"views/documentation.xml",
# Wizard
'wizard/transfer.xml',
'wizard/sms_composer_views.xml',
'wizard/whatsapp_composer_views.xml',
'wizard/originate_to_wizard_views.xml',
"wizard/transfer.xml",
"wizard/sms_composer_views.xml",
"wizard/whatsapp_composer_views.xml",
"wizard/originate_to_wizard_views.xml",
],
'demo': [],
'installable': True,
'application': True,
'auto_install': False,
'images': ['static/description/logo.png'],
'assets': {
'web.assets_backend': [
'/connect/static/src/icomoon/style.css',
'/connect/static/src/components/phone/*/*',
'/connect/static/src/js/main.js',
'/connect/static/src/js/utils.js',
'/connect/static/src/widgets/phone_field/*',
'/connect/static/src/services/actions/*',
'/connect/static/src/services/active_calls/*',
'/connect/static/src/services/mail/*',
"demo": [],
"installable": True,
"application": True,
"auto_install": False,
"images": ["static/description/logo.png"],
"assets": {
"web.assets_backend": [
"/connect/static/src/icomoon/style.css",
"/connect/static/src/components/phone/*/*",
"/connect/static/src/components/license_banner/*",
"/connect/static/src/js/main.js",
"/connect/static/src/js/utils.js",
"/connect/static/src/widgets/phone_field/*",
"/connect/static/src/services/actions/*",
"/connect/static/src/services/active_calls/*",
"/connect/static/src/services/mail/*",
],
},
"post_init_hook": "post_init_hook",
}
8 changes: 0 additions & 8 deletions connect/controllers/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,3 @@ def _serve_media(self, media_url):
return res
else:
raise UserError("Failed to download the media. Status code: %s" % response.status_code)

@http.route('/connect/<string:uid>/', methods=['GET', 'POST'], type='http', auth='public', csrf=False)
def health_check(self, uid):
instance_uid = http.request.env['connect.settings'].sudo().get_param('instance_uid')
if uid == instance_uid:
return "True"
else:
return "False"
3 changes: 0 additions & 3 deletions connect/data/data.xml

This file was deleted.

3 changes: 0 additions & 3 deletions connect/data/functions.xml

This file was deleted.

20 changes: 20 additions & 0 deletions connect/data/license.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<!--
ODUIST PROPRIETARY LICENSE
Copyright (c) 2025 Oduist

This file contains license validation logic.
Modification is prohibited under Oduist Proprietary License.
See LICENSE and COPYRIGHT files for full terms.
-->

<odoo>
<data noupdate="1">

<record id="oduist_license_server" model="ir.config_parameter">
<field name="key">oduist_license_server</field>
<field name="value">https://license.oduist.com</field>
</record>

</data>

</odoo>
Loading