mirror of
https://github.com/bringout/oca-ocb-core.git
synced 2026-04-20 06:52:01 +02:00
19.0 vanilla
This commit is contained in:
parent
d1963a3c3a
commit
2d3ee4855a
7430 changed files with 2687981 additions and 2965473 deletions
|
|
@ -27,7 +27,7 @@ class Cloc(Command):
|
|||
self.parser.add_argument('--database', '-d', dest="database", help="Database name")
|
||||
self.parser.add_argument('--path', '-p', action='append', help="File or directory path")
|
||||
self.parser.add_argument('--verbose', '-v', action='count', default=0)
|
||||
opt, unknown = self.parser.parse_known_args(args)
|
||||
opt, unknown = self.parser.parse_known_args(args + ['--no-http'])
|
||||
if not opt.database and not opt.path:
|
||||
self.parser.print_help()
|
||||
sys.exit()
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ from pathlib import Path
|
|||
from odoo import SUPERUSER_ID
|
||||
from odoo.api import Environment
|
||||
from odoo.cli.command import Command
|
||||
from odoo.fields import Domain
|
||||
from odoo.modules import get_module_path
|
||||
from odoo.modules.registry import Registry
|
||||
from odoo.tools import OrderedSet, config
|
||||
|
|
@ -104,7 +105,7 @@ class I18n(Command):
|
|||
def run(self, cmdargs):
|
||||
parsed_args = self.parser.parse_args(args=cmdargs)
|
||||
|
||||
config_args = []
|
||||
config_args = ['--no-http']
|
||||
if parsed_args.config:
|
||||
config_args += ['-c', parsed_args.config]
|
||||
if parsed_args.db_name:
|
||||
|
|
@ -128,14 +129,25 @@ class I18n(Command):
|
|||
def _get_languages(self, env, language_codes, active_test=True):
|
||||
# We want to log invalid parameters
|
||||
Lang = env['res.lang'].with_context(active_test=False)
|
||||
languages = Lang.search([('iso_code', 'in', language_codes)])
|
||||
languages = Lang.search(Domain.OR([Domain('iso_code', 'in', language_codes),
|
||||
Domain('code', 'in', language_codes)]))
|
||||
if not_found_language_codes := set(language_codes) - set(languages.mapped("iso_code")):
|
||||
_logger.warning("Ignoring not found languages: %s", ', '.join(not_found_language_codes))
|
||||
if active_test:
|
||||
if not_installed_languages := languages.filtered(lambda x: not x.active):
|
||||
languages -= not_installed_languages
|
||||
iso_code_str = ", ".join(not_installed_languages.mapped("iso_code"))
|
||||
_logger.warning("Ignoring not installed languages: %s", iso_code_str)
|
||||
iso_codes = not_installed_languages.mapped('iso_code')
|
||||
_logger.warning(
|
||||
textwrap.dedent("""\
|
||||
Ignoring not installed languages: %s
|
||||
Install them running the below command, then run this command again.
|
||||
|
||||
$ %s -l %s
|
||||
"""),
|
||||
', '.join(iso_codes),
|
||||
self.loadlang_parser.prog,
|
||||
' '.join(iso_codes),
|
||||
)
|
||||
return languages
|
||||
|
||||
def _import(self, parsed_args):
|
||||
|
|
|
|||
|
|
@ -62,6 +62,8 @@ class Module(Command):
|
|||
parser.add_argument(
|
||||
'-d', '--database', dest='db_name', default=None,
|
||||
help="database name, connection details will be taken from the config file")
|
||||
parser.add_argument("-D", "--data-dir", dest="data_dir",
|
||||
help="directory where to store Odoo data")
|
||||
|
||||
install_parser.add_argument(
|
||||
'modules', nargs='+', metavar='MODULE',
|
||||
|
|
@ -81,19 +83,22 @@ class Module(Command):
|
|||
help="names of the modules to be uninstalled")
|
||||
upgrade_parser.add_argument(
|
||||
'modules', nargs='+', metavar='MODULE',
|
||||
help="name of the modules to be upgraded, use 'base' if you want to upgrade everything")
|
||||
help="name of the modules to be upgraded, use 'base' or 'all' if you want to upgrade everything")
|
||||
upgrade_parser.add_argument(
|
||||
'--outdated', action='store_true',
|
||||
help="only update modules that have a newer version on disk",
|
||||
help="only update modules that have a newer version on disk. "
|
||||
"If 'all' is used as `modules` argument, this applies to all installed modules.",
|
||||
)
|
||||
|
||||
def run(self, cmdargs):
|
||||
parsed_args = self.parser.parse_args(args=cmdargs)
|
||||
config_args = []
|
||||
config_args = ['--no-http']
|
||||
if parsed_args.config:
|
||||
config_args += ['-c', parsed_args.config]
|
||||
if parsed_args.db_name:
|
||||
config_args += ['-d', parsed_args.db_name]
|
||||
if parsed_args.data_dir:
|
||||
config_args += ['-D', parsed_args.data_dir]
|
||||
config.parse_config(config_args, setup_logging=True)
|
||||
|
||||
db_names = config['db_name']
|
||||
|
|
@ -119,10 +124,16 @@ class Module(Command):
|
|||
or self._get_zip_path(module)
|
||||
}
|
||||
|
||||
def _get_modules(self, env, module_names):
|
||||
def _get_module_model(self, env):
|
||||
Module = env['ir.module.module']
|
||||
Module.update_list()
|
||||
return Module.search([('name', 'in', module_names)])
|
||||
return Module
|
||||
|
||||
def _get_all_installed_modules(self, env):
|
||||
return self._get_module_model(env).search([['state', '=', 'installed']])
|
||||
|
||||
def _get_modules(self, env, module_names):
|
||||
return self._get_module_model(env).search([('name', 'in', module_names)])
|
||||
|
||||
@contextmanager
|
||||
def _create_env_context(self, db_name):
|
||||
|
|
@ -156,8 +167,11 @@ class Module(Command):
|
|||
|
||||
def _upgrade(self, parsed_args):
|
||||
with self._create_env_context(parsed_args.db_name) as env:
|
||||
valid_module_names = self._get_module_names(parsed_args.modules)
|
||||
upgradable_modules = self._get_modules(env, valid_module_names)
|
||||
if 'all' in parsed_args.modules:
|
||||
upgradable_modules = self._get_all_installed_modules(env)
|
||||
else:
|
||||
valid_module_names = self._get_module_names(parsed_args.modules)
|
||||
upgradable_modules = self._get_modules(env, valid_module_names)
|
||||
if parsed_args.outdated:
|
||||
upgradable_modules = upgradable_modules.filtered(
|
||||
lambda x: parse_version(x.installed_version) > parse_version(x.latest_version),
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ class Obfuscate(Command):
|
|||
return SQL("""CASE WHEN starts_with(%(field_name)s, 'odoo_cyph_') THEN pgp_sym_decrypt(decode(substring(%(field_name)s, 11)::text, 'base64'), %(pwd)s) ELSE %(field_name)s END""", field_name=sql_field, pwd=password)
|
||||
|
||||
def check_field(self, table, field):
|
||||
qry = "SELECT udt_name FROM information_schema.columns WHERE table_name=%s AND column_name=%s"
|
||||
qry = "SELECT udt_name FROM information_schema.columns WHERE table_name=%s AND column_name=%s AND table_schema = current_schema"
|
||||
self.cr.execute(qry, [table, field])
|
||||
if self.cr.rowcount == 1:
|
||||
res = self.cr.fetchone()
|
||||
|
|
@ -81,7 +81,10 @@ class Obfuscate(Command):
|
|||
return False
|
||||
|
||||
def get_all_fields(self):
|
||||
qry = "SELECT table_name, column_name FROM information_schema.columns WHERE table_schema='public' AND udt_name IN ['text', 'varchar', 'jsonb'] AND NOT table_name LIKE 'ir_%' ORDER BY 1,2"
|
||||
qry = (
|
||||
"SELECT table_name, column_name FROM information_schema.columns"
|
||||
" WHERE table_schema = current_schema AND udt_name IN ('text', 'varchar', 'jsonb') AND NOT table_name LIKE 'ir_%' ORDER BY 1,2"
|
||||
)
|
||||
self.cr.execute(qry)
|
||||
return self.cr.fetchall()
|
||||
|
||||
|
|
@ -158,7 +161,13 @@ class Obfuscate(Command):
|
|||
if opt.allfields and not opt.unobfuscate:
|
||||
_logger.error("--allfields can only be used in unobfuscate mode")
|
||||
sys.exit("ERROR: --allfields can only be used in unobfuscate mode")
|
||||
self.dbname = config['db_name']
|
||||
if not opt.db_name:
|
||||
_logger.error('Obfuscate command needs a database name. Use "-d" argument')
|
||||
sys.exit('ERROR: Obfuscate command needs a database name. Use "-d" argument')
|
||||
if len(opt.db_name) > 1:
|
||||
_logger.error("-d/--database has multiple databases, please provide a single one")
|
||||
sys.exit("ERROR: -d/--database has multiple databases, please provide a single one")
|
||||
self.dbname = config['db_name'][0]
|
||||
self.registry = Registry(self.dbname)
|
||||
with self.registry.cursor() as cr:
|
||||
self.cr = cr
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ class Populate(Command):
|
|||
help="Single character separator for char/text fields.",
|
||||
default=DEFAULT_SEPARATOR)
|
||||
parser.add_option_group(group)
|
||||
opt = config.parse_config(cmdargs, setup_logging=True)
|
||||
opt = config.parse_config(cmdargs + ['--no-http'], setup_logging=True)
|
||||
|
||||
# deduplicate models if necessary, and keep the last corresponding
|
||||
# factor for each model
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue