Overslaan naar inhoud
Menu
Je moet geregistreerd zijn om te kunnen communiceren met de community.
Deze vraag is gerapporteerd
3 Antwoorden
7110 Weergaven

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?


Avatar
Annuleer

Please check the following link for custom module:

https://youtu.be/Xya_fCNr6tw

Thanks & Regards

Beste antwoord

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

Avatar
Annuleer
Auteur Beste antwoord

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()
Avatar
Annuleer
Beste antwoord

Specify also the database name:

-d [ODOO_POSTGRESQL_DATABASE] -u my_module

E.g.  -d my_company -u my_module

Avatar
Annuleer
Gerelateerde posts Antwoorden Weergaven Activiteit
1
jan. 16
4347
3
jul. 25
1861
3
mei 25
3303
1
mei 24
2319
2
jun. 25
3887