opt app_saas

This commit is contained in:
Ivan Office
2025-01-06 18:39:35 +08:00
parent a7c092a7db
commit a8a1f1602c
8 changed files with 121 additions and 62 deletions

View File

@@ -13,9 +13,3 @@ class ResConfigSettings(models.TransientModel):
app_saas_ok = fields.Boolean('Enable CN SaaS', default=True, config_parameter='app_saas_ok', app_saas_ok = fields.Boolean('Enable CN SaaS', default=True, config_parameter='app_saas_ok',
help="Checked to Enable www.odooapp.cn cloud service.") help="Checked to Enable www.odooapp.cn cloud service.")
app_saas_db_token = fields.Char('SaaS DB Token', config_parameter='app_saas_db_token')
def set_values(self):
res = super().set_values()
self.env['ir.config_parameter'].set_param('app_saas_db_token', self.app_saas_db_token)
return res

View File

@@ -57,10 +57,6 @@
</div> </div>
</div> </div>
</div> </div>
<div class="row mt16 o_settings_container" id="odooai_cloud_saas_common_token">
<label class="col-4" for="app_saas_db_token"/>
<field name="app_saas_db_token" password="True"/>
</div>
<div id="app_slot2" class="o_hidden"></div> <div id="app_slot2" class="o_hidden"></div>
</div> </div>
</xpath> </xpath>

View File

@@ -26,7 +26,7 @@
{ {
'name': 'odooapp.cn SaaS Client-Ai Passport.Odoo中文应用商店SaaS云服务客户端', 'name': 'odooapp.cn SaaS Client-Ai Passport.Odoo中文应用商店SaaS云服务客户端',
'version': '16.24.12.06', 'version': '16.0.25.01.06',
'author': 'odooai.cn', 'author': 'odooai.cn',
'category': 'Base', 'category': 'Base',
'website': 'https://www.odooai.cn', 'website': 'https://www.odooai.cn',

View File

@@ -3,7 +3,7 @@
<data noupdate="1"> <data noupdate="1">
<record id="provider_app_saas" model="auth.oauth.provider"> <record id="provider_app_saas" model="auth.oauth.provider">
<field name="name">Ai Passport of odooapp.cn</field> <field name="name">Ai Passport of odooapp.cn</field>
<field name="body">Ai通行证-Odoo中文应用商店</field> <field name="body">Ai Passport of odooapp.cn</field>
<field name="auth_endpoint">https://www.odooapp.cn/oauth/authorize</field> <field name="auth_endpoint">https://www.odooapp.cn/oauth/authorize</field>
<field name="code_endpoint">https://www.odooapp.cn/oauth/token</field> <field name="code_endpoint">https://www.odooapp.cn/oauth/token</field>
<field name="scope">odoo,profile</field> <field name="scope">odoo,profile</field>

View File

@@ -4,10 +4,10 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Odoo Server 18.0+e-20241031\n" "Project-Id-Version: Odoo Server 16.0+e-20241226\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 10:21+0000\n" "POT-Creation-Date: 2025-01-06 10:11+0000\n"
"PO-Revision-Date: 2024-11-08 10:21+0000\n" "PO-Revision-Date: 2025-01-06 10:11+0000\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -18,19 +18,43 @@ msgstr ""
#. module: app_saas #. module: app_saas
#: model_terms:ir.ui.view,arch_db:app_saas.app_res_config_settings_view_form #: model_terms:ir.ui.view,arch_db:app_saas.app_res_config_settings_view_form
msgid "<strong>Save</strong> to Install Chinese PO App if downloaded." msgid "<strong>Save</strong> to Install Chinese PO App if downloaded."
msgstr "<strong>保存</strong> 后即可安装Odoo中文翻译模块。本模块可至Odoo中文应用商店下载。" msgstr "<strong>保存</strong> 后可以安装本地的Odoo中文翻译模块,安装时会自动用最新 .po 文件覆盖本地的文件。"
#. module: app_saas
#: model:auth.oauth.provider,body:app_saas.provider_app_saas
msgid "Ai Passport of odooapp.cn"
msgstr "Ai通行证-Odoo中文应用商店"
#. module: app_saas #. module: app_saas
#: model:ir.model.fields,help:app_saas.field_res_config_settings__module_app_cn_po #: model:ir.model.fields,help:app_saas.field_res_config_settings__module_app_cn_po
#: model_terms:ir.ui.view,arch_db:app_saas.app_res_config_settings_view_form
msgid "Checked to Sync Odoo Chinese from www.odooapp.cn" msgid "Checked to Sync Odoo Chinese from www.odooapp.cn"
msgstr "勾选后即可启用Odoo中文云翻译相关服务由 www.odooapp.cn 提供" msgstr "勾选后即可启用Odoo中文云翻译相关服务由 www.odooapp.cn 提供"
#. module: app_saas
#: model:ir.model.fields,field_description:app_saas.field_res_config_settings__app_saas_db_token
msgid "Cloud DB Token"
msgstr "数据库令牌"
#. module: app_saas #. module: app_saas
#: model:ir.model,name:app_saas.model_res_config_settings #: model:ir.model,name:app_saas.model_res_config_settings
msgid "Config Settings" msgid "Config Settings"
msgstr "设置" msgstr "设置"
#. module: app_saas
#: model:ir.model.fields,help:app_saas.field_auth_oauth_provider__code_endpoint
msgid "Get Token from Code. Only for Code response type."
msgstr "通过Code获取Access Token。仅在 Code 响应模式下生效"
#. module: app_saas
#: model:ir.model.fields,field_description:app_saas.field_auth_oauth_provider__user_template_id
msgid "New User Template"
msgstr "新用户模板"
#. module: app_saas
#: model:ir.model,name:app_saas.model_auth_oauth_provider
msgid "OAuth2 provider"
msgstr "OAuth2服务商"
#. module: app_saas #. module: app_saas
#: model_terms:ir.ui.view,arch_db:app_saas.app_res_config_settings_view_form #: model_terms:ir.ui.view,arch_db:app_saas.app_res_config_settings_view_form
msgid "Or get the app from" msgid "Or get the app from"
@@ -38,11 +62,39 @@ msgstr "您可以在此获取本应用模块"
#. module: app_saas #. module: app_saas
#: model:ir.model.fields,field_description:app_saas.field_res_config_settings__module_app_cn_po #: model:ir.model.fields,field_description:app_saas.field_res_config_settings__module_app_cn_po
#: model_terms:ir.ui.view,arch_db:app_saas.app_res_config_settings_view_form
msgid "SaaS Chinese PO" msgid "SaaS Chinese PO"
msgstr "中文云翻译PO" msgstr "中文云翻译PO"
#. module: app_saas
#: model:ir.model.fields,help:app_saas.field_res_config_settings__app_saas_db_token
msgid ""
"The odooapp SaaS Token for this Odoo Database. You can reset in "
"https://www.odooapp.cn"
msgstr "本数据库实例的令牌。首次使用Ai通行证时自动生成您也可以在我们的网站上重新生成。请访问 https://www.odooapp.cn"
#. module: app_saas
#: model_terms:ir.ui.view,arch_db:app_saas.app_res_config_settings_view_form
msgid ""
"The odooapp SaaS Token. You can get it after first time Login via Ai "
"Passport of odooapp.cn. Also you can set from"
msgstr "本数据库实例的令牌。首次使用Ai通行证时自动生成您也可以在我们的网站上重新生成。请访问 https://www.odooapp.cn"
#. module: app_saas
#: model:ir.model.fields,field_description:app_saas.field_auth_oauth_provider__code_endpoint
msgid "Token by Code Endpoint"
msgstr "Code取Token入口"
#. module: app_saas
#: model:ir.model,name:app_saas.model_res_users
msgid "User"
msgstr "用户"
#. module: app_saas #. module: app_saas
#: model_terms:ir.ui.view,arch_db:app_saas.app_res_config_settings_view_form #: model_terms:ir.ui.view,arch_db:app_saas.app_res_config_settings_view_form
msgid "https://www.odooapp.cn/apps/modules/app_cn_po" msgid "https://www.odooapp.cn/apps/modules/app_cn_po"
msgstr "https://www.odooapp.cn/apps/modules/app_cn_po" msgstr "https://www.odooapp.cn/apps/modules/app_cn_po"
#. module: app_saas
#: model_terms:ir.ui.view,arch_db:app_saas.app_res_config_settings_view_form
msgid "https://www.odooapp.cn/my/"
msgstr "https://www.odooapp.cn/my/"

View File

@@ -12,5 +12,5 @@ class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings' _inherit = 'res.config.settings'
module_app_cn_po = fields.Boolean('SaaS Chinese PO', help="Checked to Sync Odoo Chinese from www.odooapp.cn") module_app_cn_po = fields.Boolean('SaaS Chinese PO', help="Checked to Sync Odoo Chinese from www.odooapp.cn")
app_saas_db_token = fields.Boolean('Ai Cloud Token', default=True, config_parameter='app_saas_db_token', app_saas_db_token = fields.Char('Cloud DB Token', default=True, config_parameter='app_saas_db_token',
help="The odooapp SaaS Token for this Odoo Database. You can reset in https://www.odooapp.cn") help="The odooapp SaaS Token for this Odoo Database. You can reset in https://www.odooapp.cn")

View File

@@ -9,26 +9,19 @@ try:
except: except:
from urllib import request as urllib2 from urllib import request as urllib2
from odoo import api, fields, models, _ from odoo import api, fields, models, _
from odoo.exceptions import AccessDenied, UserError
from odoo.addons.auth_signup.models.res_users import SignupError
from odoo.http import request, Response
from ast import literal_eval
import json
import requests import requests
from datetime import timedelta
import random
import logging import logging
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)
class OauthBindError(Exception): class OauthBindError(Exception):
# 增加一种错误类型 # 增加一种错误类型
pass pass
class ResUsers(models.Model): class ResUsers(models.Model):
_inherit = 'res.users' _inherit = 'res.users'
@@ -50,9 +43,13 @@ class ResUsers(models.Model):
response = requests.get(oauth_provider.code_endpoint, params=params, timeout=30) response = requests.get(oauth_provider.code_endpoint, params=params, timeout=30)
if response.ok: if response.ok:
ret = response.json() ret = response.json()
# todo: 客户机首次连接时,取到的 server 端 key 写入 provider 的 client_secret # 客户机首次连接时,取到的 server 端 key 写入 provider 的 client_secret
if ret.get('push_client_secret') and hasattr(oauth_provider, 'client_secret'): push_client_secret = ret.pop('push_client_secret', False)
oauth_provider.write({'client_secret': ret.get('push_client_secret')}) if push_client_secret:
ICP = self.env['ir.config_parameter'].sudo()
ICP.set_param('app_saas_db_token', push_client_secret)
if hasattr(oauth_provider, 'client_secret') and not oauth_provider.client_secret:
oauth_provider.write({'client_secret': push_client_secret})
self._cr.commit() self._cr.commit()
return ret return ret
return {} return {}

View File

@@ -1,28 +1,48 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<odoo> <odoo>
<data> <data>
<!-- <record id="app_res_config_settings_view_form" model="ir.ui.view">--> <record id="app_res_config_settings_view_form" model="ir.ui.view">
<!-- <field name="name">res.config.settings.view.form.inherit.app_common</field>--> <field name="name">res.config.settings.view.form.inherit.app_common</field>
<!-- <field name="model">res.config.settings</field>--> <field name="model">res.config.settings</field>
<!-- <field name="inherit_id" ref="base.res_config_settings_view_form"/>--> <field name="inherit_id" ref="base.res_config_settings_view_form"/>
<!-- <field name="arch" type="xml">--> <field name="arch" type="xml">
<!-- <xpath expr="//setting[@id='odooai_cloud_saas_ok']" position="after">--> <xpath expr="//div[@id='odooai_cloud_saas_ok']" position="after">
<!-- <setting string="SaaS Chinese PO" help="Checked to Sync Odoo Chinese from www.odooapp.cn" id="module_app_cn_po">--> <div class="col-lg-6 col-12 o_setting_box">
<!-- <field name="module_app_cn_po"/>--> <div class="o_setting_left_pane">
<!-- <div class="content-group mt16" invisible="not module_app_cn_po" id="msg_module_app_cn_po">--> <field name="module_app_cn_po"/>
<!-- <div class="mt16 text-warning">--> </div>
<!-- <strong>Save</strong> to Install Chinese PO App if downloaded.--> <div class="o_setting_right_pane">
<!-- </div>--> <label for="module_app_cn_po"/>
<!-- <div class="text-warning">--> <div class="content-group" id="msg_module_app_cn_po">
<!-- Or get the app from--> <div class="mt16 text-warning">
<!-- <a href="https://www.odooapp.cn/apps/modules/app_cn_po" class="o_doc_link ml8"--> <strong>Save</strong> to Install Chinese PO App if downloaded.
<!-- target="_blank">https://www.odooapp.cn/apps/modules/app_cn_po--> </div>
<!-- </a>--> <div class="text-warning">
<!-- </div>--> Or get the app from
<!-- </div>--> <a href="https://www.odooapp.cn/apps/modules/app_cn_po" class="o_doc_link ml8"
<!-- </setting>--> target="_blank">https://www.odooapp.cn/apps/modules/app_cn_po
<!-- </xpath>--> </a>
<!-- </field>--> </div>
<!-- </record>--> </div>
</div>
</div>
<div class="col-lg-6 col-12 o_setting_box" id="set_app_saas_db_token">
<div class="o_setting_left_pane"/>
<div class="o_setting_right_pane">
<label for="app_saas_db_token"/>
<field name="app_saas_db_token" style="width:100%!important"/>
<div class="content-group">
<div class="text-warning">
The odooapp SaaS Token. You can get it after first time Login via Ai Passport of odooapp.cn. Also you can set from
<a href="https://www.odooapp.cn/my/" class="o_doc_link ml8"
target="_blank">https://www.odooapp.cn/my/
</a>
</div>
</div>
</div>
</div>
</xpath>
</field>
</record>
</data> </data>
</odoo> </odoo>