콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
3 답글
7295 화면

Hi,

I have added a custom field to my already installed module:

class Users(models.Model):
     _inherit = 'res.users'
    authentication_token = fields.Char()

When I call "odoo -u my_module -d databasename" the fields are not created in the database, so I need to go to "Apps" and click on "Upgrade" then the field is created automatically.

Is this the normal behavior? How to deploy new versions automatically?


아바타
취소

Please check the following link for custom module:

https://youtu.be/Xya_fCNr6tw

Thanks & Regards

베스트 답변

I faced the same issue. I fixed it by just restarting the odoo server (my case is docker container)

아바타
취소
작성자 베스트 답변

No it doesn't work. Tried with different servers. -d database -u module, doesn't upgrade module. I need to run manually.

I have created a cli option to upgrade modules from command line. Can upgrade or install a module with 'odoo upgrade -u module1 -u module1' adding this to a module:

# -*- coding: UTF-7 -*-
from __future__ import unicode_literals
from odoo.cli.command import Command
import odoo
from odoo.tools import config
from odoo import models, fields, api, modules
import argparse
import logging

_logger = logging.getLogger(__name__)

class Upgrade(Command):
def init(self, args):
config.parse_config(args)
odoo.cli.server.report_configuration()
odoo.service.server.start(preload=[], stop=True)

"""Upgrade modules"""
def run(self, args):
self.init(args)
dbname=config['db_name']
parser = argparse.ArgumentParser()
parser.add_argument("-u", action='append')
(args2, unknown) = parser.parse_known_args(args)

with odoo.api.Environment.manage():
registry = odoo.registry(dbname)
with registry.cursor() as cr:
uid = odoo.SUPERUSER_ID
ctx = odoo.api.Environment(cr, uid, {})['res.users'].context_get()
env = odoo.api.Environment(cr, uid, ctx)

try:
# This is done because the installation/uninstallation/upgrade can modify a currently # running cron job and prevent it from finishing, and since the ir_cron table is locked
# during execution, the lock won't be released until timeout.
cr.execute("SELECT * FROM ir_cron FOR UPDATE NOWAIT")
except psycopg2.OperationalError:
raise UserError(_("The server is busy right now, module operations are not possible at"
" this time, please try again later."))

ir_module = env['ir.module.module']

for module_name in args2.u:
module = ir_module.search([('name', '=', module_name)])
if module.state not in ('installed', 'to upgrade'):
module.button_install()
else:
module.button_upgrade()
cr.commit()
api.Environment.reset()
modules.registry.Registry.new(cr.dbname, update_module=True)

cr.commit()
아바타
취소
베스트 답변

Specify also the database name:

-d [ODOO_POSTGRESQL_DATABASE] -u my_module

E.g.  -d my_company -u my_module

아바타
취소
관련 게시물 답글 화면 활동
1
1월 16
4526
3
7월 25
2042
3
5월 25
3562
1
5월 24
2562
2
6월 25
4096