python - Odoo14:模块无法安装 - 取消安装
问题描述
我正在使用 Odoo 14,但在尝试为事件安装自定义模块时无法安装。我不知道我哪里出错了。在应用程序下,在我的模块上显示了一个名为“取消安装”的按钮。我想创建一个名为“事件”的新模块。我在 model.py 和 views.xml 的代码下面附上了。请指导我,因为我是 Python 和 Odoo 14 的新手。
# -*- coding: utf-8 -*-
import base64
from werkzeug.urls import url_encode
from odoo import models, fields, api
from datetime import datetime
from odoo.modules.module import get_module_resource
class Events(models.Model):
_name = 'test-events'
_description = 'test-events'
_order = 'name'
name = fields.Char(string="Event Name", size=200, store=True, readonly=False)
description = fields.Text(string="Description")
event_type = fields.Integer(string="Event Type", required=True)
status = fields.Integer(string="Status", required=True)
start_at = fields.Datetime.to_string(datetime.datetime.now(string="Start at", help='Event Start Date & Time', required=True))
end_at = fields.Datetime.to_string(datetime.datetime.now(string="End at", help='Event End Date & Time', required=True))
created_at = fields.Datetime.now(string="Created at", help='Event Create Date & Time', required=True)
updated_at = fields.Datetime.to_string(datetime.datetime.now(string="Updated at", help='Event Update Date & Time', required=True))
thumbnail_url = fields.Char(string="Thumbnail URL", size=500, help='Event Image URL', required=True)
@api.model
def _default_image(self):
image_path = get_module_resource('events', 'img', 'default_image.png')
return base64.b64encode(open(image_path, 'rb').read())
image_1920 = fields.Image(default=_default_image)
@api.model
def create(self, vals):
"""Method Override for allocate leaves to the employee."""
if vals.get('id'):
user = self.env['test-events'].browse(vals['id'])
vals.update(self._sync_user(user, vals.get('image_1920') == self._default_image()))
vals['name'] = vals.get('name', user.name)
events = super(Events, self).create(vals)
url = '/web#%s' % url_encode({
'active_id': events.id,
'active_model': 'test-events',
})
events_allocations = self.env['test-events']
for events_allocation in events_allocations:
events_dict = {
'name': events_allocation.name,
'description': events_allocation.description,
'event_type': events_allocation.event_type,
'status': events_allocation.status,
'start_at': events_allocation.start_at,
'end_at': events_allocation.end_at,
'created_at': events_allocation.created_at,
'updated_at': events_allocation.updated_at,
'thumbnail_url': url,
}
new_allocation = self.env['test-events'].create(events_dict)
new_allocation.sudo().action_approve()
return events
以上是我的model.py 文件。下面是我的views.xml 文件。
<odoo>
<data>
<!-- explicit list view definition -->
<record model="ir.ui.view" id="events.list">
<field name="name">events list</field>
<field name="model">test-events</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="description"/>
<field name="event_type"/>
<field name="status"/>
<field name="start_at"/>
<field name="end_at"/>
<field name="created_at"/>
<field name="updated_at"/>
</tree>
</field>
</record>
<record id="test_events_view_form" model="ir.ui.view">
<field name="name">test-events.form</field>
<field name="model">test-events</field>
<field name="arch" type="xml">
<form string="Events" create="0" write="0" js_class="events_form">
<header/>
<sheet>
<field name="image_1920" widget='image' class="oe_avatar" options='{"zoom": true, "preview_image":"image_128"}'/>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1>
<field name="name" placeholder="Events's Name" required="True"/>
</h1>
<h2>
<field name="description" placeholder="Event's Description" />
</h2>
</div>
<group>
<group>
<field name="event_type"/>
<field name="start_at"/>
<field name="created_at"/>
</group>
<group>
<field name="status"/>
<field name="end_at"/>
<field name="updated_at"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<!-- actions opening views on models -->
<record model="ir.actions.act_window" id="action_event_view">
<field name="name">Events</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">test-events</field>
<field name="view_mode">kanban,calendar,tree,form,pivot,graph</field>
</record>
<!-- server action to the one above -->
<record model="ir.actions.server" id="events.action_server">
<field name="name">events server</field>
<field name="model_id" ref="model_events_events"/>
<field name="state">code</field>
<field name="code">
action = {
"type": "ir.actions.act_window",
"view_mode": "kanban,calendar,tree,form,pivot,graph",
"res_model": test-events,
}
</field>
</record>
<!-- Top menu item -->
<!-- MAIN MENU -->
<menuitem name="Events"
id="events_main_menu"
web_icon="event,static/description/icon.png"/>
<!-- HEADER: EVENTS -->
<menuitem name="Events"
id="header_menu_events"
parent="events_main_menu"/>
</data>
</odoo>
接下来是我的清单.py 文件。请帮帮我。我真的不确定我们哪里错了。odoo
# -*- coding: utf-8 -*-
{
'name': "events",
'summary': """
Organize, publish, and manage on-site & online events """,
'description': """
An all-in-one event management platform, capable of handling events of any type or scale. Odoo
Events covers all aspects of an Event Planner's job from organize, publish, and manage events
like Conferences, Webinars, Meetings, Classes, Registrations, Charity, Exhibitions, and Festivals.
""",
'author': "My Company",
'website': "http://www.yourcompany.com",
# Categories can be used to filter modules in modules listing
# Check https://github.com/odoo/odoo/blob/14.0/odoo/addons/base/data/ir_module_category_data.xml
# for the full list
'category': 'Marketing/Events',
'version': '0.1',
# any module necessary for this one to work correctly
'depends': ['base', 'base_setup', 'mail', 'portal', 'utm'],
# always loaded
'data': [
# 'security/ir.model.access.csv',
'views/views.xml',
'views/templates.xml',
],
# only loaded in demonstration mode
'demo': [
'demo/demo.xml',
],
'installable': True,
'auto_install': False,
}
解决方案
考虑使用标准方式创建自定义模块:
odoo-bin scaffold events ~/src/user/
它将为您的模块创建默认访问规则,您可以将现有代码复制/粘贴到标准目录(模块、控件、视图、数据......)更多信息(官方文档):https://www.odoo。 com/documentation/14.0/administration/odoo_sh/getting_started/first_module.html
推荐阅读
- keras - InceptionResnetV2 STEM block keras implementation 与原始论文中的不匹配?
- git - 如何加密文件并将其存储在 LFS 上?
- spring-boot - 按配置文件和名称选择 Bean
- flutter - Flutter firebase_admob 给出未注册的服务未处理异常
- r - 删除 R 中符号(连字符)后的空格
- sql - BigQuery 中的计算返回 E-4 SQL
- python - 带有标题和描述标签的 SEO 和 Django
- javascript - 省略 javascript 中另一个数组中存在的对象中的键
- excel - Excel VBA问题排序+插入值
- mysql - 如果有其他表的值,则更新表“visita”