我的日程表动作不起作用Odoo 13为什么?

问题描述

我不明白:

scheduler_demo / data / sheduler_data.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
  <data noupdate="1">
    <record id="ir_cron_scheduler_demo_action" model="ir.cron">
      <field name="name">Demo scheduler</field>
      <field name="model_id" ref="model_scheduler_demo"></field>
      <field name="state">code</field>
      <field name="code">model.process_demo_scheduler_queue()</field>
      <field name="active" eval="True"></field>
      <field name="user_id" ref="base.user_root"></field>
      <field name="interval_number">1</field>
      <field name="interval_type">days</field>
      <field name="numbercall">-1</field>
    </record>
  </data>
</odoo>

scheduler_demo / models / 初始 .py:

from . import scheduler_demo

scheduler_demo / models / sheduler_demo.py:

# -*- coding: utf-8 -*-
from odoo import models,fields,api


class SchedulerDemo(models.Model):
    _name = 'scheduler.demo'

    name = fields.Char(required=True)
    number_of_updates = fields.Integer('Number of updates')

    @api.model
    def _process_demo_scheduler_queue(self):
        # Contains all records for the model scheduler.demo
        scheduler_demo_records = self.env['scheduler.demo'].search([])

        # Loop over the records one by one
        for demo_record in scheduler_demo_records:
            number_of_updates = demo_record.number_of_updates + 1

            # Update the record with the new number of updates
            demo_record.write({
                'number_of_updates': number_of_updates
            })

scheduler_demo / security / ir.model.access.csv:

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_scheduler_demo,access_scheduler_demo,model_scheduler_demo,base.group_user,1,1

scheduler_demo / views / menu.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
    <menuitem id="scheduler_demo_menu_root"
              name="Scheduler tutorial"
              sequence="98"></menuitem>

    <menuitem id="menu_scheduler_demo"
              name="Scheduler records"
              parent="scheduler_demo_menu_root"
              action="action_scheduler_demo_records"
              sequence="1"></menuitem>

    <record id="action_scheduler_demo_records" model="ir.actions.act_window">
        <field name="name">Scheduler records</field>
        <field name="type">ir.actions.act_window</field>
        <field name="res_model">scheduler.demo</field>
        <field name="search_view_id" ref="scheduler_demo_search_view"></field>
        <field name="view_mode">tree,form</field>
        <field name="help" type="html">
            <p class="o_view_nocontent_smiling_face">
                Create a new scheduler record by clicking on 'Create'.
            </p>
        </field>
    </record>
</odoo>

scheduler_demo / scheduler_demo.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
 <record id="scheduler_demo_tree_view" model="ir.ui.view">
 <field name="name">scheduler.demo.tree</field>
 <field name="model">scheduler.demo</field>
 <field name="arch" type="xml">
 <tree string="Scheduler records">
 <field name="name"></field>
 <field name="number_of_updates"></field>
 </tree>
 </field>
 </record>

 <record id="scheduler_demo_form_view" model="ir.ui.view">
 <field name="name">scheduler.demo.form</field>
 <field name="model">scheduler.demo</field>
 <field name="arch" type="xml">
 <form string="Scheduler record">
 <sheet>
 <group name="main_info">
 <field name="name"></field>
 <field name="number_of_updates"></field>
 <field name="write_date"></field>
 </group>
 </sheet>
 </form>
 </field>
 </record>

 <record id="scheduler_demo_search_view" model="ir.ui.view">
 <field name="name">scheduler.demo.search</field>
 <field name="model">scheduler.demo</field>
 <field name="arch" type="xml">
 <search string="Scheduler records">
 <field name="name"></field>
 <field name="number_of_updates"></field>
 </search>
 </field>
 </record>
</odoo>

scheduler_demo / __ init__py:

from . import models

scheduler_demo / 清单 .py:

{
    'name': "scheduler_demo",'depends': ['base','web'],'data': [
        'security/ir.model.access.csv','data/scheduler_data.xml','views/scheduler_demo.xml','views/menu.xml',],'installable': True,'application': False,'auto_install': False,}

错误

odoo server error

psycopg2.IntegrityError: ERREUR:  une valeur NULL viole la contrainte NOT NULL de la colonne « activity_user_type »

DETAIL:  La ligne en échec contient (586,Demo scheduler,ir.actions.server,null,action,list,form,2020-09-25 13:32:44.223276,ir_cron,code,5,394,model.process_demo_scheduler_queue(),null)

During handling of the above exception,another exception occurred:



Traceback (most recent call last):
  File "/opt/odoo/odoo/http.py",line 624,in _handle_exception
    return super(JsonRequest,self)._handle_exception(exception)
  File "/opt/odoo/odoo/http.py",line 310,in _handle_exception
    raise pycompat.reraise(type(exception),exception,sys.exc_info()[2])
  File "/opt/odoo/odoo/tools/pycompat.py",line 14,in reraise
    raise value
  File "/opt/odoo/odoo/http.py",line 669,in dispatch
    result = self._call_function(**self.params)
  File "/opt/odoo/odoo/http.py",line 350,in _call_function
    return checked_call(self.db,*args,**kwargs)
  File "/opt/odoo/odoo/service/model.py",line 94,in wrapper
    return f(dbname,**kwargs)
  File "/opt/odoo/odoo/http.py",line 339,in checked_call
    result = self.endpoint(*a,**kw)
  File "/opt/odoo/odoo/http.py",line 915,in __call__
    return self.method(*args,line 515,in response_wrap
    response = f(*args,**kw)
  File "/opt/odoo/addons/web/controllers/main.py",line 1326,in call_button
    action = self._call_kw(model,method,args,kwargs)
  File "/opt/odoo/addons/web/controllers/main.py",line 1314,in _call_kw
    return call_kw(request.env[model],kwargs)
  File "/opt/odoo/odoo/api.py",line 387,in call_kw
    result = _call_kw_multi(method,model,line 374,in _call_kw_multi
    result = method(recs,**kwargs)
  File "<decorator-gen-65>",line 2,in button_immediate_upgrade
  File "/opt/odoo/odoo/addons/base/models/ir_module.py",line 72,in check_and_log
    return method(self,**kwargs)
  File "/opt/odoo/odoo/addons/base/models/ir_module.py",line 634,in button_immediate_upgrade
    return self._button_immediate_function(type(self).button_upgrade)
  File "/opt/odoo/odoo/addons/base/models/ir_module.py",line 573,in _button_immediate_function
    modules.registry.Registry.new(self._cr.dbname,update_module=True)
  File "/opt/odoo/odoo/modules/registry.py",line 86,in new
    odoo.modules.load_modules(registry._db,force_demo,status,update_module)
  File "/opt/odoo/odoo/modules/loading.py",line 419,in load_modules
    force,report,loaded_modules,update_module,models_to_check)
  File "/opt/odoo/odoo/modules/loading.py",line 315,in load_marked_modules
    perform_checks=perform_checks,models_to_check=models_to_check
  File "/opt/odoo/odoo/modules/loading.py",line 225,in load_module_graph
    load_data(cr,idref,mode,kind='data',package=package,report=report)
  File "/opt/odoo/odoo/modules/loading.py",line 68,in load_data
    tools.convert_file(cr,package.name,filename,noupdate,kind,report)
  File "/opt/odoo/odoo/tools/convert.py",line 736,in convert_file
    convert_xml_import(cr,module,fp,line 803,in convert_xml_import
    obj.parse(doc.getroot())
  File "/opt/odoo/odoo/tools/convert.py",line 721,in parse
    exc_info[2]
  File "/opt/odoo/odoo/tools/pycompat.py",line 13,in reraise
    raise value.with_traceback(tb)
  File "/opt/odoo/odoo/tools/convert.py",line 712,in parse
    self._tag_root(de)
  File "/opt/odoo/odoo/tools/convert.py",line 674,in _tag_root
    f(rec)
  File "/opt/odoo/odoo/tools/convert.py",line 577,in _tag_record
   record = model._load_records([data],self.mode == 'update')
  File "/opt/odoo/odoo/models.py",line 4084,in _load_records
    records = self._load_records_create([data['values'] for data in to_create])
  File "/opt/odoo/odoo/models.py",line 3998,in _load_records_create
    return self.create(values)
  File "<decorator-gen-40>",in create
  File "/opt/odoo/odoo/api.py",line 317,in _model_create_single
    return self.browse().concat(*(create(self,vals) for vals in arg))
  File "/opt/odoo/odoo/api.py",in <genexpr>
    return self.browse().concat(*(create(self,vals) for vals in arg))
  File "/opt/odoo/odoo/addons/base/models/ir_cron.py",line 71,in create
    return super(ir_cron,self).create(values)
  File "<decorator-gen-3>",line 335,in _model_create_multi
    return create(self,[arg])
  File "/opt/odoo/odoo/models.py",line 3740,in create
    for data in parent_data_list
  File "<decorator-gen-34>",line 336,arg)
  File "/opt/odoo/odoo/addons/base/models/ir_actions.py",line 59,in create
    res = super(IrActions,self).create(vals_list)
  File "<decorator-gen-3>",arg)
  File "/opt/odoo/odoo/models.py",line 3746,in create
    records = self._create(data_list)
  File "/opt/odoo/odoo/models.py",line 3832,in _create
    cr.execute(query,params)
  File "/opt/odoo/odoo/sql_db.py",line 168,in wrapper
    return f(self,**kwargs)
  File "/opt/odoo/odoo/sql_db.py",line 245,in execute
    res = self._obj.execute(query,params)

odoo.tools.convert.ParseError: "ERREUR:  une valeur NULL viole la contrainte NOT NULL de la colonne « activity_user_type »
DETAIL:  La ligne en échec contient (586,null)
" while parsing /home/brenda/Code/app_odoo/scheduler_demo/data/scheduler_data.xml:2,near

<odoo>
  <data noupdate="1">
    <record id="ir_cron_scheduler_demo_action" model="ir.cron">
      <field name="name">Demo scheduler</field>
      <field name="model_id" ref="model_scheduler_demo"/>
      <field name="state">code</field>
      <field name="code">model.process_demo_scheduler_queue()</field>
      <field name="active" eval="True"/>
      <field name="user_id" ref="base.user_root"/>
      <field name="interval_number">1</field>
      <field name="interval_type">days</field>
      <field name="numbercall">-1</field>
    </record>
  </data>
</odoo>

我不了解该错误,我测试了很多修改但均未成功,请有人帮我。

解决方法

Odoo定义了ir_actions_server_id字段(在ir.crom模型中),并将delegate属性设置为True(对应于_inherits),这意味着{{1} }字段在ir.actions.server模型中可用。

ir.cron字段是在mail模块中定义的(将其添加到模块依赖项)模块中,作为必填字段,默认情况下设置为activity_user_type,因此,使用默认实现。

您可以通过继承specific模型并更改必填字段的ir.actions.server属性(将其设置为default)来重现类似的错误。

以下代码将引发一个False

odoo.tools.convert.ParseError

这也可能是由于重写class IrActionsServer(models.Model): _inherit = 'ir.actions.server' usage = fields.Selection(default=False) 方法并将create的值设置为另一个字段值,该值最终被评估为activity_user_type的结果。