# Conflicts:
#	app_auto_backup/__manifest__.py
This commit is contained in:
Ivan Office
2025-01-16 16:14:34 +08:00
4 changed files with 18 additions and 6 deletions

View File

@@ -4,11 +4,13 @@ import os
import datetime import datetime
import time import time
import shutil import shutil
import subprocess
import json import json
import tempfile import tempfile
from odoo import models, fields, api, tools, _ from odoo import models, fields, api, tools, _
from odoo.exceptions import Warning, AccessDenied from odoo.exceptions import Warning, AccessDenied
from odoo.tools import find_pg_tool, exec_pg_environ
import odoo import odoo
import logging import logging
@@ -293,8 +295,10 @@ class DbBackup(models.Model):
_logger.info('DUMP DB: %s format %s', db_name, backup_format) _logger.info('DUMP DB: %s format %s', db_name, backup_format)
cmd = ['pg_dump', '--no-owner'] # cmd = ['pg_dump', '--no-owner']
cmd.append(db_name) # cmd.append(db_name)
cmd = [find_pg_tool('pg_dump'), '--no-owner', db_name]
env = exec_pg_environ()
if backup_format == 'zip': if backup_format == 'zip':
with tempfile.TemporaryDirectory() as dump_dir: with tempfile.TemporaryDirectory() as dump_dir:
@@ -306,7 +310,7 @@ class DbBackup(models.Model):
with db.cursor() as cr: with db.cursor() as cr:
json.dump(self._dump_db_manifest(cr), fh, indent=4) json.dump(self._dump_db_manifest(cr), fh, indent=4)
cmd.insert(-1, '--file=' + os.path.join(dump_dir, 'dump.sql')) cmd.insert(-1, '--file=' + os.path.join(dump_dir, 'dump.sql'))
odoo.tools.exec_pg_command(*cmd) subprocess.run(cmd, env=env, stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT, check=True)
if stream: if stream:
odoo.tools.osutil.zip_dir(dump_dir, stream, include_dir=False, fnct_sort=lambda file_name: file_name != 'dump.sql') odoo.tools.osutil.zip_dir(dump_dir, stream, include_dir=False, fnct_sort=lambda file_name: file_name != 'dump.sql')
else: else:
@@ -314,6 +318,14 @@ class DbBackup(models.Model):
odoo.tools.osutil.zip_dir(dump_dir, t, include_dir=False, fnct_sort=lambda file_name: file_name != 'dump.sql') odoo.tools.osutil.zip_dir(dump_dir, t, include_dir=False, fnct_sort=lambda file_name: file_name != 'dump.sql')
t.seek(0) t.seek(0)
return t return t
# odoo.tools.exec_pg_command(*cmd)
# if stream:
# odoo.tools.osutil.zip_dir(dump_dir, stream, include_dir=False, fnct_sort=lambda file_name: file_name != 'dump.sql')
# else:
# t=tempfile.TemporaryFile()
# odoo.tools.osutil.zip_dir(dump_dir, t, include_dir=False, fnct_sort=lambda file_name: file_name != 'dump.sql')
# t.seek(0)
# return t
else: else:
cmd.insert(-1, '--format=c') cmd.insert(-1, '--format=c')
stdin, stdout = odoo.tools.exec_pg_command_pipe(*cmd) stdin, stdout = odoo.tools.exec_pg_command_pipe(*cmd)

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.0.25.01.06', 'version': '16.0.25.01.14',
'author': 'odooai.cn', 'author': 'odooai.cn',
'category': 'Base', 'category': 'Base',
'website': 'https://www.odooai.cn', 'website': 'https://www.odooai.cn',

View File

@@ -10,7 +10,7 @@ _logger = logging.getLogger(__name__)
class ResConfigSettings(models.TransientModel): 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.Char('Cloud DB 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

@@ -13,7 +13,7 @@
</div> </div>
<div class="o_setting_right_pane"> <div class="o_setting_right_pane">
<label for="module_app_cn_po"/> <label for="module_app_cn_po"/>
<div class="content-group" id="msg_module_app_cn_po"> <div class="content-group" id="msg_module_app_cn_po" attrs="{'invisible': [('module_app_cn_po', '=', False)]}">
<div class="mt16 text-warning"> <div class="mt16 text-warning">
<strong>Save</strong> to Install Chinese PO App if downloaded. <strong>Save</strong> to Install Chinese PO App if downloaded.
</div> </div>