我的任务:odoo中的动态进度条.
我正在使用Odoo小部件:'progressbar'.我希望每次更新值时更新视图 - 因此我想on_change_input
在我的python write方法中触发javascript函数来呈现视图.
@api.one
def updatevalue(self, val):
self.value = val
# TODO call javascript function on_change_input()
Run Code Online (Sandbox Code Playgroud)
目的是,在进程运行时应更新进度条,用户应该在不更新站点的情况下查看进度.
我的任务是否可以使用进度条小部件?或者是否有其他可能在Odoo中显示动态内容?
如果我使用我的updatevalue
方法作为按钮,单击按钮后更新进度条而不调用javascript函数并且不刷新页面...但我确实想在我的代码中调用该方法(并且可能在rpc上调用)因此这不是救命 -.-
感谢您的时间!
这是我到目前为止的工作流程:
用户单击该按钮do_time_consuming_task
并调用以下函数:
def do_timeconsuming_task(self):
ws = websocket.WebSocket()
ws.connect('ws:/129.0.0.1:1234/')
data = { 'topic' : 'server_command', 'id' : self.id, 'commandName' : 'do_sth',}
payload = ujson.dumps(data)
ws.send(payload)
ws.close()
Run Code Online (Sandbox Code Playgroud)
在服务器上,接收并处理命令.有一个开放的rpc连接:
odoo = odoorpc.ODOO("129.0.0.1", port=8069)
odoo.login("database", "user", "password")
my_module = odoo.env['my_module.progress_widget_test']
progress_instance = my_module.browse(id)
Run Code Online (Sandbox Code Playgroud)
每次进度值更改时,我都会调用模块的以下方法:
progress_instance.updatevalue(new_value)
Run Code Online (Sandbox Code Playgroud)
当值等于100%时,我关闭连接
odoo.logout()
Run Code Online (Sandbox Code Playgroud) 我是Odoo的新手.我想将最顶层的菜单名称(没有操作)Employee
更改为My new string
.
<record id="hr.menu_hr_root" model="ir.ui.menu">
<field name="name">My new string</field>
<field name="sequence">92</field>
</record>
Run Code Online (Sandbox Code Playgroud)
我确定id是正确的,因为sequence
属性按预期更改.问题是name
无论如何都要保持不变.我想要修改的菜单来自默认hr
模块.我现在唯一的解决方案是删除记录并使用新值重新创建它.我尝试更新我自己的其他菜单视图,它们按照我的预期工作,但是默认hr
模块的情况被翻译成我的语言(越南语).谁能告诉我一些关于这个的想法?
有时,在Odoo后端中,窗口将仅显示菜单项,其余屏幕保持空白。
单击任何菜单都会将URL更改为 https:// my_server_ip / web?debug#menu_id = 68&action =
唯一会更改的是menu_id
的值,但action
的值将保持为空。
起初,它以为是刷新我已经在浏览的页面。但是我无法始终如一地重现该错误(一旦发生,每次都会重现该错误,但是如果我清除缓存/ Cookie可以在短时间内解决问题,该问题将在某个时候重现,但是我找不到可以在需要时复制它的行为。它只会在某个随机点发生)。它只是在一段时间(有时是一个小时的使用时间)之后,有时在两个页面加载之后发生的。有时,一天没问题,但是明天尝试时,错误会再次发生。
这是尝试过的relevent解决方案:
ir_attachment
其中包含的所有条目web/content
。(如有关Odoo git问题的建议)。以相同的顺序 :
odoo.conf的内容
; This is the password that allows database operations:
; admin_passwd = [admin_password]
db_host = False
db_port = False
db_user = odoo
db_password = [db_password]
addons_path …
Run Code Online (Sandbox Code Playgroud) 如果我使用小部件显示 many2many 字段,则many2many_tags
下拉菜单中会出现“搜索更多...”选项。我怎样才能避免它?
<field name="groups_id"
widget="many2many_tags"
create="0"
options="{'no_create_edit': True,'no_quick_create':True,'no_create':True,'no_open':True}"/>
Run Code Online (Sandbox Code Playgroud)
有没有办法删除“搜索更多...”选项?
我尝试在发票报告中打印发票行。为了
<span t-field="l.price_subtotal" t-options='{"widget": "monetary", "display_currency": o.currency_id}'/>
Run Code Online (Sandbox Code Playgroud)
并为
<span t-field="l.price_subtotal" />
Run Code Online (Sandbox Code Playgroud)
有一个输出:“111.11 $”但我需要不带符号的行价格。
如果我做类似的事情
<span t-esc="round(l.price_total, 2)"/>
Run Code Online (Sandbox Code Playgroud)
它有效,是的,但我失去了货币格式
有没有办法告诉货币小部件它不应该显示货币?
“display_currency”:“False”不起作用(
货币小部件代码在哪里?我在源文件中找不到它(
在 Ubuntu Linux 上启动了一个新的 Odoo 服务器。使用了 Yenthe Van Ginekken 的脚本(可能是最受欢迎的):
sudo wget https://raw.githubusercontent.com/Yenthe666/InstallScript/11.0/odoo_install.sh
Run Code Online (Sandbox Code Playgroud)
没有花哨的模块。安装 SSL 证书(使用 Certbot)后,我意识到 Discuss & Chat 应用程序无法正常工作。所以我更新了我的配置(workers=4,代理模式为 true)以及 Nginx 配置。
奥多配置:
[options]
addons_path = /odoo/odoo-server/addons,/odoo/custom/addons
admin_passwd = pwd
csv_internal_sep = ,
data_dir = /odoo/.local/share/Odoo
db_host = False
db_maxconn = 64
db_name = False
db_password = False
db_port = False
db_sslmode = prefer
db_template = template1
db_user = False
dbfilter =
demo = {}
email_from = False
geoip_database = /usr/share/GeoIP/GeoLite2-City.mmdb
http_enable = True
http_interface =
http_port = …
Run Code Online (Sandbox Code Playgroud) company = self.env['res.company'].search([('id', '=', 1)])
print company.name # prints 'my company' which is correct
print json.dumps(company) # error TypeError: res.company(1,) is not JSON serializable
Run Code Online (Sandbox Code Playgroud)
问题是如何简单地导出company
json对象?
我正在寻找一种适用于任何模型的通用方法。
我在odoo 11中有这样的代码
@api.multi
def report_team(self):
teambao = self.env['hr.department'].search([])
tongteam = len(teambao)
i = 0
while i < tongteam:
if teambao[i].id:
now = datetime.now()
print(now.date())
project = self.env['project.project'].search([('deadline', '=', now.date())])
print (project)
i = i + 1
Run Code Online (Sandbox Code Playgroud)
当我运行这个函数时,它得到这样的错误
"object of type 'datetime.date' has no len()" while evaluating 'model.report_team()'
in report_team
project = self.env['project.project'].search([('deadline', '=', now.date())])
Run Code Online (Sandbox Code Playgroud)
我想要的只是得到今天有截止日期的项目
对我有什么建议吗?
谢谢
我一生都找不到任何地方解释常见 Odoo 方法名称的后缀execute_kw
。后缀是做什么kw
用的?它只是两个任意字母吗?
odoo-11 ×10
odoo ×7
python ×3
odoo-10 ×2
xml ×2
javascript ×1
json ×1
long-polling ×1
many-to-many ×1
nginx ×1
odoo-12 ×1
openerp ×1
python-3.x ×1
server ×1
session ×1