0
点赞
收藏
分享

微信扫一扫

odoo15 action 原码分析

佳简诚锄 2022-01-05 阅读 62
python
class Action(http.Controller):

    @http.route('/web/action/load', type='json', auth="user")
    def load(self, action_id, additional_context=None):
        Actions = request.env['ir.actions.actions']
        value = False
        print('Load----无id', action_id)
        try:
            action_id = int(action_id)
        except ValueError:
            try:
                action = request.env.ref(action_id)
                assert action._name.startswith('ir.actions.')
                action_id = action.id
            except Exception:
                action_id = 0   # force failed read

        base_action = Actions.browse([action_id]).sudo().read(['type'])
        print('action::--',base_action)
        if base_action:
            ctx = dict(request.context)
            print('ctx--',ctx)
            print('base_action',base_action)
            action_type = base_action[0]['type']
            if action_type == 'ir.actions.report':
                ctx.update({'bin_size': True})
            if additional_context:
                ctx.update(additional_context)
            request.context = ctx
            print('action_type',action_type)
            print(request.context)
            action = request.env[action_type].sudo().browse([action_id]).read()
            print('查询action',action)
            if action:
                value = clean_action(action[0], env=request.env)
        print('value',value)
        return value

    @http.route('/web/action/run', type='json', auth="user")
    def run(self, action_id):
        action = request.env['ir.actions.server'].browse([action_id])
        result = action.run()
        return clean_action(result, env=action.env) if result else False

2022-01-05 03:09:06,338 5448 INFO od001 werkzeug: 127.0.0.1 - - [05/Jan/2022 03:09:06] "POST /longpolling/im_status HTTP/1.1" 200 - 19 0.014 0.170
2022-01-05 03:09:08,360 5448 INFO od001 werkzeug: 127.0.0.1 - - [05/Jan/2022 03:09:08] "GET /web HTTP/1.1" 200 - 425 0.196 0.910
Load----无id 179
action::-- [{'id': 179, 'type': 'ir.actions.act_window'}]
ctx-- {'lang': 'zh_CN', 'tz': 'Asia/Shanghai', 'uid': 2}
base_action [{'id': 179, 'type': 'ir.actions.act_window'}]
action_type ir.actions.act_window
{'lang': 'zh_CN', 'tz': 'Asia/Shanghai', 'uid': 2}
查询action [{'id': 179, 'name': '项目', 'type': 'ir.actions.act_window', 'xml_id': 'project.open_view_project_all', 'help': Markup('<p class="o_view_nocontent_smiling_face">\n                    还没有项目。 让我们创建一个!\n                </p><p>\n                    Projects regroup tasks on the same topic, and each has its dashboard.\n                </p>\n            '), 'binding_model_id': False, 'binding_type': 'action', 'binding_view_types': 'list,form', '__last_update': datetime.datetime(2022, 1, 5, 0, 15, 10, 724200), 'display_name': '项目', 'create_uid': (1, 'OdooBot'), 'create_date': datetime.datetime(2021, 12, 29, 14, 16, 54, 718800), 'write_uid': (1, 'OdooBot'), 'write_date': datetime.datetime(2022, 1, 5, 0, 15, 10, 724200), 'view_id': (507, 'project.project.kanban'), 'domain': "[('is_internal_project', '=', False)]", 'context': '{}', 'res_id': 0, 'res_model': 'project.project', 'target': 'main', 'view_mode': 'tree,kanban,timeline,form', 'usage': False, 'view_ids': [167, 168], 'views': [(507, 'kanban'), (503, 'tree'), (False, 'timeline'), (False, 'form')], 'limit': 80, 'groups_id': [], 'search_view_id': (502, 'project.project.select'), 'filter': False, 'search_view': '{\'model\': \'project.project\', \'field_parent\': False, \'arch\': \'<search string="搜索项目">\\n                    <field name="name" string="项目" modifiers="{&quot;required&quot;: true}"/>\\n                    <field name="user_id" string="项目管理员" can_create="true" can_write="true" modifiers="{}"/>\\n                    <field name="partner_id" string="客户" filter_domain="[(\\\'partner_id\\\', \\\'child_of\\\', self)]" on_change="1" can_create="true" can_write="true" modifiers="{}"/>\\n                <field name="sale_order_id" can_create="true" can_write="true" modifiers="{&quot;readonly&quot;: true}"/>\\n            \\n                    <field name="analytic_account_id" can_create="true" can_write="true" modifiers="{}"/>\\n                    <field name="tag_ids" can_create="true" can_write="true" modifiers="{}"/>\\n                    <filter string="我的收藏夹" name="my_projects" domain="[(\\\'favorite_user_ids\\\', \\\'in\\\', uid)]"/>\\n                    <separator/>\\n                    <filter string="关注" name="followed_by_me" domain="[(\\\'message_is_follower\\\', \\\'=\\\', True)]"/>\\n                    <filter string="我的项目" name="own_projects" domain="[(\\\'user_id\\\', \\\'=\\\', uid)]"/>\\n                    <separator/>\\n                    <filter string="打开" name="open" domain="[(\\\'stage_id.fold\\\', \\\'=\\\', False)]"/>\\n                    <separator/>\\n                    <filter string="已归档" name="inactive" domain="[(\\\'active\\\', \\\'=\\\', False)]"/>\\n                    <group expand="0" string="分组">\\n                        <filter string="项目管理员" name="Manager" context="{\\\'group_by\\\': \\\'user_id\\\'}"/>\\n                        <filter string="客户" name="Partner" context="{\\\'group_by\\\': \\\'partner_id\\\'}"/>\\n                        <filter string="状态" name="status" context="{\\\'group_by\\\': \\\'last_update_status\\\'}"/>\\n                        <filter string="阶段" name="groupby_stage" context="{\\\'group_by\\\': \\\'stage_id\\\'}" invisible="1" modifiers="{&quot;invisible&quot;: true}"/>\\n                    </group>\\n                </search>\', \'name\': \'project.project.select\', \'type\': \'search\', \'view_id\': 502, \'base_model\': \'project.project\', \'fields\': {\'name\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'char\', \'change_default\': False, \'company_dependent\': False, \'depends\': (), \'manual\': False, \'readonly\': False, \'required\': True, \'searchable\': True, \'sortable\': True, \'store\': True, \'string\': \'名称\', \'translate\': True, \'trim\': True, \'name\': \'name\'}, \'user_id\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2one\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (), \'domain\': [], \'manual\': False, \'readonly\': False, \'relation\': \'res.users\', \'required\': False, \'searchable\': True, \'sortable\': True, \'store\': True, \'string\': \'项目管理员\', \'name\': \'user_id\'}, \'partner_id\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2one\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (\'sale_line_employee_ids.sale_line_id\', \'sale_line_id\'), \'domain\': "[\'|\', (\'company_id\', \'=\', False), (\'company_id\', \'=\', company_id)]", \'manual\': False, \'readonly\': False, \'relation\': \'res.partner\', \'required\': False, \'searchable\': True, \'sortable\': True, \'store\': True, \'string\': \'客户\', \'name\': \'partner_id\'}, \'sale_order_id\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2one\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (\'sale_line_id.order_id\',), \'domain\': [], \'help\': \'项目关联单销售订单。\', \'manual\': False, \'readonly\': True, \'related\': \'sale_line_id.order_id\', \'relation\': \'sale.order\', \'required\': False, \'searchable\': True, \'sortable\': False, \'store\': False, \'string\': \'销售订单\', \'name\': \'sale_order_id\'}, \'analytic_account_id\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2one\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (), \'domain\': "[\\n            \'|\', (\'company_id\', \'=\', False), (\'company_id\', \'=\', company_id),\\n            (\'partner_id\', \'=?\', partner_id),\\n        ]", \'help\': \'与该项目关联的分析帐户,用于财务管理。 使用分析帐户记录项目的成本和收入。\', \'manual\': False, \'readonly\': False, \'relation\': \'account.analytic.account\', \'required\': False, \'searchable\': True, \'sortable\': True, \'store\': True, \'string\': \'分析账户\', \'name\': \'analytic_account_id\'}, \'tag_ids\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2many\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (), \'domain\': [], \'manual\': False, \'readonly\': False, \'relation\': \'project.tags\', \'required\': False, \'searchable\': True, \'sortable\': False, \'store\': True, \'string\': \'标签\', \'name\': \'tag_ids\'}}}'}]
传来参数action-- {'id': 179, 'name': '项目', 'type': 'ir.actions.act_window', 'xml_id': 'project.open_view_project_all', 'help': Markup('<p class="o_view_nocontent_smiling_face">\n                    还没有项目。 让我们创建一个!\n                </p><p>\n                    Projects regroup tasks on the same topic, and each has its dashboard.\n                </p>\n            '), 'binding_model_id': False, 'binding_type': 'action', 'binding_view_types': 'list,form', '__last_update': datetime.datetime(2022, 1, 5, 0, 15, 10, 724200), 'display_name': '项目', 'create_uid': (1, 'OdooBot'), 'create_date': datetime.datetime(2021, 12, 29, 14, 16, 54, 718800), 'write_uid': (1, 'OdooBot'), 'write_date': datetime.datetime(2022, 1, 5, 0, 15, 10, 724200), 'view_id': (507, 'project.project.kanban'), 'domain': "[('is_internal_project', '=', False)]", 'context': '{}', 'res_id': 0, 'res_model': 'project.project', 'target': 'main', 'view_mode': 'tree,kanban,timeline,form', 'usage': False, 'view_ids': [167, 168], 'views': [(507, 'kanban'), (503, 'tree'), (False, 'timeline'), (False, 'form')], 'limit': 80, 'groups_id': [], 'search_view_id': (502, 'project.project.select'), 'filter': False, 'search_view': '{\'model\': \'project.project\', \'field_parent\': False, \'arch\': \'<search string="搜索项目">\\n                    <field name="name" string="项目" modifiers="{&quot;required&quot;: true}"/>\\n                    <field name="user_id" string="项目管理员" can_create="true" can_write="true" modifiers="{}"/>\\n                    <field name="partner_id" string="客户" filter_domain="[(\\\'partner_id\\\', \\\'child_of\\\', self)]" on_change="1" can_create="true" can_write="true" modifiers="{}"/>\\n                <field name="sale_order_id" can_create="true" can_write="true" modifiers="{&quot;readonly&quot;: true}"/>\\n            \\n                    <field name="analytic_account_id" can_create="true" can_write="true" modifiers="{}"/>\\n                    <field name="tag_ids" can_create="true" can_write="true" modifiers="{}"/>\\n                    <filter string="我的收藏夹" name="my_projects" domain="[(\\\'favorite_user_ids\\\', \\\'in\\\', uid)]"/>\\n                    <separator/>\\n                    <filter string="关注" name="followed_by_me" domain="[(\\\'message_is_follower\\\', \\\'=\\\', True)]"/>\\n                    <filter string="我的项目" name="own_projects" domain="[(\\\'user_id\\\', \\\'=\\\', uid)]"/>\\n                    <separator/>\\n                    <filter string="打开" name="open" domain="[(\\\'stage_id.fold\\\', \\\'=\\\', False)]"/>\\n                    <separator/>\\n                    <filter string="已归档" name="inactive" domain="[(\\\'active\\\', \\\'=\\\', False)]"/>\\n                    <group expand="0" string="分组">\\n                        <filter string="项目管理员" name="Manager" context="{\\\'group_by\\\': \\\'user_id\\\'}"/>\\n                        <filter string="客户" name="Partner" context="{\\\'group_by\\\': \\\'partner_id\\\'}"/>\\n                        <filter string="状态" name="status" context="{\\\'group_by\\\': \\\'last_update_status\\\'}"/>\\n                        <filter string="阶段" name="groupby_stage" context="{\\\'group_by\\\': \\\'stage_id\\\'}" invisible="1" modifiers="{&quot;invisible&quot;: true}"/>\\n                    </group>\\n                </search>\', \'name\': \'project.project.select\', \'type\': \'search\', \'view_id\': 502, \'base_model\': \'project.project\', \'fields\': {\'name\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'char\', \'change_default\': False, \'company_dependent\': False, \'depends\': (), \'manual\': False, \'readonly\': False, \'required\': True, \'searchable\': True, \'sortable\': True, \'store\': True, \'string\': \'名称\', \'translate\': True, \'trim\': True, \'name\': \'name\'}, \'user_id\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2one\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (), \'domain\': [], \'manual\': False, \'readonly\': False, \'relation\': \'res.users\', \'required\': False, \'searchable\': True, \'sortable\': True, \'store\': True, \'string\': \'项目管理员\', \'name\': \'user_id\'}, \'partner_id\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2one\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (\'sale_line_employee_ids.sale_line_id\', \'sale_line_id\'), \'domain\': "[\'|\', (\'company_id\', \'=\', False), (\'company_id\', \'=\', company_id)]", \'manual\': False, \'readonly\': False, \'relation\': \'res.partner\', \'required\': False, \'searchable\': True, \'sortable\': True, \'store\': True, \'string\': \'客户\', \'name\': \'partner_id\'}, \'sale_order_id\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2one\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (\'sale_line_id.order_id\',), \'domain\': [], \'help\': \'项目关联单销售订单。\', \'manual\': False, \'readonly\': True, \'related\': \'sale_line_id.order_id\', \'relation\': \'sale.order\', \'required\': False, \'searchable\': True, \'sortable\': False, \'store\': False, \'string\': \'销售订单\', \'name\': \'sale_order_id\'}, \'analytic_account_id\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2one\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (), \'domain\': "[\\n            \'|\', (\'company_id\', \'=\', False), (\'company_id\', \'=\', company_id),\\n            (\'partner_id\', \'=?\', partner_id),\\n        ]", \'help\': \'与该项目关联的分析帐户,用于财务管理。 使用分析帐户记录项目的成本和收入。\', \'manual\': False, \'readonly\': False, \'relation\': \'account.analytic.account\', \'required\': False, \'searchable\': True, \'sortable\': True, \'store\': True, \'string\': \'分析账户\', \'name\': \'analytic_account_id\'}, \'tag_ids\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2many\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (), \'domain\': [], \'manual\': False, \'readonly\': False, \'relation\': \'project.tags\', \'required\': False, \'searchable\': True, \'sortable\': False, \'store\': True, \'string\': \'标签\', \'name\': \'tag_ids\'}}}'}
变后action {'id': 179, 'name': '项目', 'type': 'ir.actions.act_window', 'xml_id': 'project.open_view_project_all', 'help': Markup('<p class="o_view_nocontent_smiling_face">\n                    还没有项目。 让我们创建一个!\n                </p><p>\n                    Projects regroup tasks on the same topic, and each has its dashboard.\n                </p>\n            '), 'binding_model_id': False, 'binding_type': 'action', 'binding_view_types': 'list,form', '__last_update': datetime.datetime(2022, 1, 5, 0, 15, 10, 724200), 'display_name': '项目', 'create_uid': (1, 'OdooBot'), 'create_date': datetime.datetime(2021, 12, 29, 14, 16, 54, 718800), 'write_uid': (1, 'OdooBot'), 'write_date': datetime.datetime(2022, 1, 5, 0, 15, 10, 724200), 'view_id': (507, 'project.project.kanban'), 'domain': "[('is_internal_project', '=', False)]", 'context': '{}', 'res_id': 0, 'res_model': 'project.project', 'target': 'main', 'view_mode': 'list,kanban,timeline,form', 'usage': False, 'view_ids': [167, 168], 'views': [[507, 'kanban'], [503, 'list'], [False, 'timeline'], [False, 'form']], 'limit': 80, 'groups_id': [], 'search_view_id': (502, 'project.project.select'), 'filter': False, 'search_view': '{\'model\': \'project.project\', \'field_parent\': False, \'arch\': \'<search string="搜索项目">\\n                    <field name="name" string="项目" modifiers="{&quot;required&quot;: true}"/>\\n                    <field name="user_id" string="项目管理员" can_create="true" can_write="true" modifiers="{}"/>\\n                    <field name="partner_id" string="客户" filter_domain="[(\\\'partner_id\\\', \\\'child_of\\\', self)]" on_change="1" can_create="true" can_write="true" modifiers="{}"/>\\n                <field name="sale_order_id" can_create="true" can_write="true" modifiers="{&quot;readonly&quot;: true}"/>\\n            \\n                    <field name="analytic_account_id" can_create="true" can_write="true" modifiers="{}"/>\\n                    <field name="tag_ids" can_create="true" can_write="true" modifiers="{}"/>\\n                    <filter string="我的收藏夹" name="my_projects" domain="[(\\\'favorite_user_ids\\\', \\\'in\\\', uid)]"/>\\n                    <separator/>\\n                    <filter string="关注" name="followed_by_me" domain="[(\\\'message_is_follower\\\', \\\'=\\\', True)]"/>\\n                    <filter string="我的项目" name="own_projects" domain="[(\\\'user_id\\\', \\\'=\\\', uid)]"/>\\n                    <separator/>\\n                    <filter string="打开" name="open" domain="[(\\\'stage_id.fold\\\', \\\'=\\\', False)]"/>\\n                    <separator/>\\n                    <filter string="已归档" name="inactive" domain="[(\\\'active\\\', \\\'=\\\', False)]"/>\\n                    <group expand="0" string="分组">\\n                        <filter string="项目管理员" name="Manager" context="{\\\'group_by\\\': \\\'user_id\\\'}"/>\\n                        <filter string="客户" name="Partner" context="{\\\'group_by\\\': \\\'partner_id\\\'}"/>\\n                        <filter string="状态" name="status" context="{\\\'group_by\\\': \\\'last_update_status\\\'}"/>\\n                        <filter string="阶段" name="groupby_stage" context="{\\\'group_by\\\': \\\'stage_id\\\'}" invisible="1" modifiers="{&quot;invisible&quot;: true}"/>\\n                    </group>\\n                </search>\', \'name\': \'project.project.select\', \'type\': \'search\', \'view_id\': 502, \'base_model\': \'project.project\', \'fields\': {\'name\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'char\', \'change_default\': False, \'company_dependent\': False, \'depends\': (), \'manual\': False, \'readonly\': False, \'required\': True, \'searchable\': True, \'sortable\': True, \'store\': True, \'string\': \'名称\', \'translate\': True, \'trim\': True, \'name\': \'name\'}, \'user_id\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2one\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (), \'domain\': [], \'manual\': False, \'readonly\': False, \'relation\': \'res.users\', \'required\': False, \'searchable\': True, \'sortable\': True, \'store\': True, \'string\': \'项目管理员\', \'name\': \'user_id\'}, \'partner_id\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2one\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (\'sale_line_employee_ids.sale_line_id\', \'sale_line_id\'), \'domain\': "[\'|\', (\'company_id\', \'=\', False), (\'company_id\', \'=\', company_id)]", \'manual\': False, \'readonly\': False, \'relation\': \'res.partner\', \'required\': False, \'searchable\': True, \'sortable\': True, \'store\': True, \'string\': \'客户\', \'name\': \'partner_id\'}, \'sale_order_id\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2one\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (\'sale_line_id.order_id\',), \'domain\': [], \'help\': \'项目关联单销售订单。\', \'manual\': False, \'readonly\': True, \'related\': \'sale_line_id.order_id\', \'relation\': \'sale.order\', \'required\': False, \'searchable\': True, \'sortable\': False, \'store\': False, \'string\': \'销售订单\', \'name\': \'sale_order_id\'}, \'analytic_account_id\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2one\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (), \'domain\': "[\\n            \'|\', (\'company_id\', \'=\', False), (\'company_id\', \'=\', company_id),\\n            (\'partner_id\', \'=?\', partner_id),\\n        ]", \'help\': \'与该项目关联的分析帐户,用于财务管理。 使用分析帐户记录项目的成本和收入。\', \'manual\': False, \'readonly\': False, \'relation\': \'account.analytic.account\', \'required\': False, \'searchable\': True, \'sortable\': True, \'store\': True, \'string\': \'分析账户\', \'name\': \'analytic_account_id\'}, \'tag_ids\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2many\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (), \'domain\': [], \'manual\': False, \'readonly\': False, \'relation\': \'project.tags\', \'required\': False, \'searchable\': True, \'sortable\': False, \'store\': True, \'string\': \'标签\', \'name\': \'tag_ids\'}}}'}
clean_action----- {'id': 179, 'name': '项目', 'type': 'ir.actions.act_window', 'xml_id': 'project.open_view_project_all', 'help': Markup('<p class="o_view_nocontent_smiling_face">\n                    还没有项目。 让我们创建一个!\n                </p><p>\n                    Projects regroup tasks on the same topic, and each has its dashboard.\n                </p>\n            '), 'binding_model_id': False, 'binding_type': 'action', 'binding_view_types': 'list,form', '__last_update': datetime.datetime(2022, 1, 5, 0, 15, 10, 724200), 'display_name': '项目', 'create_uid': (1, 'OdooBot'), 'create_date': datetime.datetime(2021, 12, 29, 14, 16, 54, 718800), 'write_uid': (1, 'OdooBot'), 'write_date': datetime.datetime(2022, 1, 5, 0, 15, 10, 724200), 'view_id': (507, 'project.project.kanban'), 'domain': "[('is_internal_project', '=', False)]", 'context': '{}', 'res_id': 0, 'res_model': 'project.project', 'target': 'main', 'view_mode': 'list,kanban,timeline,form', 'usage': False, 'view_ids': [167, 168], 'views': [[507, 'kanban'], [503, 'list'], [False, 'timeline'], [False, 'form']], 'limit': 80, 'groups_id': [], 'search_view_id': (502, 'project.project.select'), 'filter': False, 'search_view': '{\'model\': \'project.project\', \'field_parent\': False, \'arch\': \'<search string="搜索项目">\\n                    <field name="name" string="项目" modifiers="{&quot;required&quot;: true}"/>\\n                    <field name="user_id" string="项目管理员" can_create="true" can_write="true" modifiers="{}"/>\\n                    <field name="partner_id" string="客户" filter_domain="[(\\\'partner_id\\\', \\\'child_of\\\', self)]" on_change="1" can_create="true" can_write="true" modifiers="{}"/>\\n                <field name="sale_order_id" can_create="true" can_write="true" modifiers="{&quot;readonly&quot;: true}"/>\\n            \\n                    <field name="analytic_account_id" can_create="true" can_write="true" modifiers="{}"/>\\n                    <field name="tag_ids" can_create="true" can_write="true" modifiers="{}"/>\\n                    <filter string="我的收藏夹" name="my_projects" domain="[(\\\'favorite_user_ids\\\', \\\'in\\\', uid)]"/>\\n                    <separator/>\\n                    <filter string="关注" name="followed_by_me" domain="[(\\\'message_is_follower\\\', \\\'=\\\', True)]"/>\\n                    <filter string="我的项目" name="own_projects" domain="[(\\\'user_id\\\', \\\'=\\\', uid)]"/>\\n                    <separator/>\\n                    <filter string="打开" name="open" domain="[(\\\'stage_id.fold\\\', \\\'=\\\', False)]"/>\\n                    <separator/>\\n                    <filter string="已归档" name="inactive" domain="[(\\\'active\\\', \\\'=\\\', False)]"/>\\n                    <group expand="0" string="分组">\\n                        <filter string="项目管理员" name="Manager" context="{\\\'group_by\\\': \\\'user_id\\\'}"/>\\n                        <filter string="客户" name="Partner" context="{\\\'group_by\\\': \\\'partner_id\\\'}"/>\\n                        <filter string="状态" name="status" context="{\\\'group_by\\\': \\\'last_update_status\\\'}"/>\\n                        <filter string="阶段" name="groupby_stage" context="{\\\'group_by\\\': \\\'stage_id\\\'}" invisible="1" modifiers="{&quot;invisible&quot;: true}"/>\\n                    </group>\\n                </search>\', \'name\': \'project.project.select\', \'type\': \'search\', \'view_id\': 502, \'base_model\': \'project.project\', \'fields\': {\'name\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'char\', \'change_default\': False, \'company_dependent\': False, \'depends\': (), \'manual\': False, \'readonly\': False, \'required\': True, \'searchable\': True, \'sortable\': True, \'store\': True, \'string\': \'名称\', \'translate\': True, \'trim\': True, \'name\': \'name\'}, \'user_id\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2one\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (), \'domain\': [], \'manual\': False, \'readonly\': False, \'relation\': \'res.users\', \'required\': False, \'searchable\': True, \'sortable\': True, \'store\': True, \'string\': \'项目管理员\', \'name\': \'user_id\'}, \'partner_id\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2one\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (\'sale_line_employee_ids.sale_line_id\', \'sale_line_id\'), \'domain\': "[\'|\', (\'company_id\', \'=\', False), (\'company_id\', \'=\', company_id)]", \'manual\': False, \'readonly\': False, \'relation\': \'res.partner\', \'required\': False, \'searchable\': True, \'sortable\': True, \'store\': True, \'string\': \'客户\', \'name\': \'partner_id\'}, \'sale_order_id\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2one\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (\'sale_line_id.order_id\',), \'domain\': [], \'help\': \'项目关联单销售订单。\', \'manual\': False, \'readonly\': True, \'related\': \'sale_line_id.order_id\', \'relation\': \'sale.order\', \'required\': False, \'searchable\': True, \'sortable\': False, \'store\': False, \'string\': \'销售订单\', \'name\': \'sale_order_id\'}, \'analytic_account_id\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2one\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (), \'domain\': "[\\n            \'|\', (\'company_id\', \'=\', False), (\'company_id\', \'=\', company_id),\\n            (\'partner_id\', \'=?\', partner_id),\\n        ]", \'help\': \'与该项目关联的分析帐户,用于财务管理。 使用分析帐户记录项目的成本和收入。\', \'manual\': False, \'readonly\': False, \'relation\': \'account.analytic.account\', \'required\': False, \'searchable\': True, \'sortable\': True, \'store\': True, \'string\': \'分析账户\', \'name\': \'analytic_account_id\'}, \'tag_ids\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2many\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (), \'domain\': [], \'manual\': False, \'readonly\': False, \'relation\': \'project.tags\', \'required\': False, \'searchable\': True, \'sortable\': False, \'store\': True, \'string\': \'标签\', \'name\': \'tag_ids\'}}}'}
value {'id': 179, 'name': '项目', 'type': 'ir.actions.act_window', 'xml_id': 'project.open_view_project_all', 'help': Markup('<p class="o_view_nocontent_smiling_face">\n                    还没有项目。 让我们创建一个!\n                </p><p>\n                    Projects regroup tasks on the same topic, and each has its dashboard.\n                </p>\n            '), 'binding_model_id': False, 'binding_type': 'action', 'binding_view_types': 'list,form', 'display_name': '项目', 'view_id': (507, 'project.project.kanban'), 'domain': "[('is_internal_project', '=', False)]", 'context': '{}', 'res_id': 0, 'res_model': 'project.project', 'target': 'main', 'view_mode': 'list,kanban,timeline,form', 'views': [[507, 'kanban'], [503, 'list'], [False, 'timeline'], [False, 'form']], 'limit': 80, 'groups_id': [], 'search_view_id': (502, 'project.project.select'), 'filter': False, 'search_view': '{\'model\': \'project.project\', \'field_parent\': False, \'arch\': \'<search string="搜索项目">\\n                    <field name="name" string="项目" modifiers="{&quot;required&quot;: true}"/>\\n                    <field name="user_id" string="项目管理员" can_create="true" can_write="true" modifiers="{}"/>\\n                    <field name="partner_id" string="客户" filter_domain="[(\\\'partner_id\\\', \\\'child_of\\\', self)]" on_change="1" can_create="true" can_write="true" modifiers="{}"/>\\n                <field name="sale_order_id" can_create="true" can_write="true" modifiers="{&quot;readonly&quot;: true}"/>\\n            \\n                    <field name="analytic_account_id" can_create="true" can_write="true" modifiers="{}"/>\\n                    <field name="tag_ids" can_create="true" can_write="true" modifiers="{}"/>\\n                    <filter string="我的收藏夹" name="my_projects" domain="[(\\\'favorite_user_ids\\\', \\\'in\\\', uid)]"/>\\n                    <separator/>\\n                    <filter string="关注" name="followed_by_me" domain="[(\\\'message_is_follower\\\', \\\'=\\\', True)]"/>\\n                    <filter string="我的项目" name="own_projects" domain="[(\\\'user_id\\\', \\\'=\\\', uid)]"/>\\n                    <separator/>\\n                    <filter string="打开" name="open" domain="[(\\\'stage_id.fold\\\', \\\'=\\\', False)]"/>\\n                    <separator/>\\n                    <filter string="已归档" name="inactive" domain="[(\\\'active\\\', \\\'=\\\', False)]"/>\\n                    <group expand="0" string="分组">\\n                        <filter string="项目管理员" name="Manager" context="{\\\'group_by\\\': \\\'user_id\\\'}"/>\\n                        <filter string="客户" name="Partner" context="{\\\'group_by\\\': \\\'partner_id\\\'}"/>\\n                        <filter string="状态" name="status" context="{\\\'group_by\\\': \\\'last_update_status\\\'}"/>\\n                        <filter string="阶段" name="groupby_stage" context="{\\\'group_by\\\': \\\'stage_id\\\'}" invisible="1" modifiers="{&quot;invisible&quot;: true}"/>\\n                    </group>\\n                </search>\', \'name\': \'project.project.select\', \'type\': \'search\', \'view_id\': 502, \'base_model\': \'project.project\', \'fields\': {\'name\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'char\', \'change_default\': False, \'company_dependent\': False, \'depends\': (), \'manual\': False, \'readonly\': False, \'required\': True, \'searchable\': True, \'sortable\': True, \'store\': True, \'string\': \'名称\', \'translate\': True, \'trim\': True, \'name\': \'name\'}, \'user_id\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2one\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (), \'domain\': [], \'manual\': False, \'readonly\': False, \'relation\': \'res.users\', \'required\': False, \'searchable\': True, \'sortable\': True, \'store\': True, \'string\': \'项目管理员\', \'name\': \'user_id\'}, \'partner_id\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2one\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (\'sale_line_employee_ids.sale_line_id\', \'sale_line_id\'), \'domain\': "[\'|\', (\'company_id\', \'=\', False), (\'company_id\', \'=\', company_id)]", \'manual\': False, \'readonly\': False, \'relation\': \'res.partner\', \'required\': False, \'searchable\': True, \'sortable\': True, \'store\': True, \'string\': \'客户\', \'name\': \'partner_id\'}, \'sale_order_id\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2one\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (\'sale_line_id.order_id\',), \'domain\': [], \'help\': \'项目关联单销售订单。\', \'manual\': False, \'readonly\': True, \'related\': \'sale_line_id.order_id\', \'relation\': \'sale.order\', \'required\': False, \'searchable\': True, \'sortable\': False, \'store\': False, \'string\': \'销售订单\', \'name\': \'sale_order_id\'}, \'analytic_account_id\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2one\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (), \'domain\': "[\\n            \'|\', (\'company_id\', \'=\', False), (\'company_id\', \'=\', company_id),\\n            (\'partner_id\', \'=?\', partner_id),\\n        ]", \'help\': \'与该项目关联的分析帐户,用于财务管理。 使用分析帐户记录项目的成本和收入。\', \'manual\': False, \'readonly\': False, \'relation\': \'account.analytic.account\', \'required\': False, \'searchable\': True, \'sortable\': True, \'store\': True, \'string\': \'分析账户\', \'name\': \'analytic_account_id\'}, \'tag_ids\': {\'id\': None, \'select\': None, \'views\': {}, \'type\': \'many2many\', \'change_default\': False, \'company_dependent\': False, \'context\': {}, \'depends\': (), \'domain\': [], \'manual\': False, \'readonly\': False, \'relation\': \'project.tags\', \'required\': False, \'searchable\': True, \'sortable\': False, \'store\': True, \'string\': \'标签\', \'name\': \'tag_ids\'}}}'}
2022-01-05 03:09:09,338 5448 INFO od001 werkzeug: 127.0.0.1 - - [05/Jan/2022 03:09:09] "POST /web/action/load HTTP/1.1" 200 - 62 0.036 0.291
2022-01-05 03:09:09,553 5448 INFO od001 werkzeug: 127.0.0.1 - - [05/Jan/2022 03:09:09] "POST /mail/init_messaging HTTP/1.1" 200 - 49 0.045 0.157

举报

相关推荐

0 条评论