Erreur:
Odoo Server Error
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 712, in parse
self._tag_root(de)
File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 674, in _tag_root
f(rec)
File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 577, in _tag_record
record = model._load_records([data], self.mode == 'update')
File "/usr/lib/python3/dist-packages/odoo/models.py", line 4080, in _load_records
records = self._load_records_create([data['values'] for data in to_create])
File "/usr/lib/python3/dist-packages/odoo/models.py", line 3994, in _load_records_create
return self.create(values)
File "<decorator-gen-31>", line 2, in create
File "/usr/lib/python3/dist-packages/odoo/api.py", line 336, in _model_create_multi
return create(self, arg)
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 475, in create
return super(View, self).create(vals_list)
File "<decorator-gen-3>", line 2, in create
File "/usr/lib/python3/dist-packages/odoo/api.py", line 336, in _model_create_multi
return create(self, arg)
File "/usr/lib/python3/dist-packages/odoo/models.py", line 3775, in create
fields[0].determine_inverse(batch_recs)
File "/usr/lib/python3/dist-packages/odoo/fields.py", line 1120, in determine_inverse
getattr(records, self.inverse)()
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 299, in _inverse_arch
view.write(data)
File "/usr/lib/python3/dist-packages/odoo/addons/website_theme_install/models/theme_models.py", line 226, in write
res = super(IrUiView, other_views).write(vals)
File "/usr/lib/python3/dist-packages/odoo/addons/website/models/ir_ui_view.py", line 51, in write
return super(View, self).write(vals)
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 493, in write
res = super(View, self).write(self._compute_defaults(vals))
File "/usr/lib/python3/dist-packages/odoo/models.py", line 3564, in write
real_recs._validate_fields(set(vals) - set(inverse_fields))
File "/usr/lib/python3/dist-packages/odoo/models.py", line 1176, in _validate_fields
check(self)
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 406, in _check_xml
raise ValidationError(_('Invalid view %s definition in %s') % (view_name, view.arch_fs))
odoo.exceptions.ValidationError: ('Définition de vue dms_file.search non conforme dans dms/views/dms_file.xml', None)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/http.py", line 624, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 310, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/usr/lib/python3/dist-packages/odoo/tools/pycompat.py", line 14, in reraise
raise value
File "/usr/lib/python3/dist-packages/odoo/http.py", line 669, in dispatch
result = self._call_function(**self.params)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 350, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/service/model.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 339, in checked_call
result = self.endpoint(*a, **kw)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 915, in __call__
return self.method(*args, **kw)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 515, in response_wrap
response = f(*args, **kw)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 1326, in call_button
action = self._call_kw(model, method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 1314, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 387, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 374, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "<decorator-gen-59>", line 2, in button_immediate_install
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_module.py", line 72, in check_and_log
return method(self, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_module.py", line 463, in button_immediate_install
return self._button_immediate_function(type(self).button_install)
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_module.py", line 573, in _button_immediate_function
modules.registry.Registry.new(self._cr.dbname, update_module=True)
File "/usr/lib/python3/dist-packages/odoo/modules/registry.py", line 86, in new
odoo.modules.load_modules(registry._db, force_demo, status, update_module)
File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 423, in load_modules
loaded_modules, update_module, models_to_check)
File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 315, in load_marked_modules
perform_checks=perform_checks, models_to_check=models_to_check
File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 225, in load_module_graph
load_data(cr, idref, mode, kind='data', package=package, report=report)
File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 68, in load_data
tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind, report)
File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 736, in convert_file
convert_xml_import(cr, module, fp, idref, mode, noupdate, report)
File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 803, in convert_xml_import
obj.parse(doc.getroot())
File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 721, in parse
exc_info[2]
File "/usr/lib/python3/dist-packages/odoo/tools/pycompat.py", line 13, in reraise
raise value.with_traceback(tb)
File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 712, in parse
self._tag_root(de)
File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 674, in _tag_root
f(rec)
File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 577, in _tag_record
record = model._load_records([data], self.mode == 'update')
File "/usr/lib/python3/dist-packages/odoo/models.py", line 4080, in _load_records
records = self._load_records_create([data['values'] for data in to_create])
File "/usr/lib/python3/dist-packages/odoo/models.py", line 3994, in _load_records_create
return self.create(values)
File "<decorator-gen-31>", line 2, in create
File "/usr/lib/python3/dist-packages/odoo/api.py", line 336, in _model_create_multi
return create(self, arg)
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 475, in create
return super(View, self).create(vals_list)
File "<decorator-gen-3>", line 2, in create
File "/usr/lib/python3/dist-packages/odoo/api.py", line 336, in _model_create_multi
return create(self, arg)
File "/usr/lib/python3/dist-packages/odoo/models.py", line 3775, in create
fields[0].determine_inverse(batch_recs)
File "/usr/lib/python3/dist-packages/odoo/fields.py", line 1120, in determine_inverse
getattr(records, self.inverse)()
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 299, in _inverse_arch
view.write(data)
File "/usr/lib/python3/dist-packages/odoo/addons/website_theme_install/models/theme_models.py", line 226, in write
res = super(IrUiView, other_views).write(vals)
File "/usr/lib/python3/dist-packages/odoo/addons/website/models/ir_ui_view.py", line 51, in write
return super(View, self).write(vals)
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 493, in write
res = super(View, self).write(self._compute_defaults(vals))
File "/usr/lib/python3/dist-packages/odoo/models.py", line 3564, in write
real_recs._validate_fields(set(vals) - set(inverse_fields))
File "/usr/lib/python3/dist-packages/odoo/models.py", line 1176, in _validate_fields
check(self)
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 406, in _check_xml
raise ValidationError(_('Invalid view %s definition in %s') % (view_name, view.arch_fs))
odoo.tools.convert.ParseError: "Définition de vue dms_file.search non conforme dans dms/views/dms_file.xml
None" while parsing /mnt/extra-addons/dms/views/dms_file.xml:9, near
<odoo>
<record id="search_dms_file" model="ir.ui.view">
<field name="name">dms_file.search</field>
<field name="model">dms.file</field>
<field name="arch" type="xml">
<search>
<field name="name" filter_domain="[('name','ilike',self)]"/>
<filter string="All Files" name="all" domain="['|',('active', '=', False), ('active', '!=', False)]"/>
<filter string="My Files" name="filter_user" domain="[('create_uid', '=', uid)]"/>
<separator/>
<filter string="Archived Files" name="filter_active" domain="[('active', '=', False)]"/>
<separator/>
<filter string="Creation Date" name="filter_create" date="create_date"/>
<filter string="Modification Date" name="filter_write" date="write_date"/>
<group expand="0" string="Group By">
<filter name="group_color" string="Color" domain="[]" context="{'group_by':'color'}"/>
<filter name="group_category" string="Category" domain="[]" context="{'group_by':'category_id'}"/>
<separator/>
<filter name="group_storage" string="Storage" domain="[]" context="{'group_by':'storage_id'}"/>
<filter name="group_directory" string="Directories" domain="[]" context="{'group_by':'directory_id'}"/>
</group>
<searchpanel>
<field name="directory_id" icon="fa-folder" context="{'directory_short_name': True}" enable_counters="1"/>
<field name="category_id" icon="fa-users" enable_counters="1"/>
</searchpanel>
</search>
</field>
</record>
<record id="view_dms_file_kanban" model="ir.ui.view">
<field name="name">dms_file.kanban</field>
<field name="model">dms.file</field>
<field name="arch" type="xml">
<kanban js_class="file_kanban" class="mk_file_kanban_view o_kanban_small_column align-content-start" banner_route="/dms/document_onboarding/file">
<field name="id"/>
<field name="tag_ids"/>
<field name="name"/>
<field name="color"/>
<field name="active"/>
<field name="mimetype"/>
<field name="icon_url"/>
<field name="create_uid"/>
<field name="write_date"/>
<field name="locked_by"/>
<field name="is_locked"/>
<field name="is_lock_editor"/>
<field name="permission_write"/>
<field name="permission_unlink"/>
<field name="__last_update"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="#{kanban_color(record.color.raw_value)} oe_kanban_global_click">
<div class="o_dropdown_kanban dropdown">
<a class="dropdown-toggle o-no-caret btn" href="#" role="button" data-toggle="dropdown" aria-label="Dropdown menu" title="Dropdown menu">
<span class="fa fa-ellipsis-v"/>
</a>
<div class="dropdown-menu" role="menu">
<div class="row">
<div class="col-6 mk_file_kanban_operations">
<h6 class="dropdown-header">
Operations
</h6>
<a t-if="record.permission_write.raw_value and !record.is_locked.raw_value" role="menuitem" name="lock" type="object" class="dropdown-item">
<i class="fa fa-lock"/>
Lock
</a>
<a t-if="record.is_locked.raw_value and record.is_lock_editor.raw_value" role="menuitem" name="unlock" type="object" class="dropdown-item">
<i class="fa fa-unlock-alt"/>
Unlock
</a>
<a t-if="record.permission_write.raw_value and record.active.raw_value" role="menuitem" name="toggle_active" type="object" class="dropdown-item">
<i class="fa fa-archive"/>
Archive
</a>
<a t-if="record.permission_write.raw_value and !record.active.raw_value" role="menuitem" name="toggle_active" type="object" class="dropdown-item">
<i class="fa fa-archive"/>
Unarchive
</a>
<a role="menuitem" class="dropdown-item" t-attf-href="/web/content?id=#{record.id.raw_value}&field=content&model=dms.file&filename_field=name&download=true">
<i class="fa fa-download"/>
Download
</a>
</div>
<div class="col-6 border-left mk_file_kanban_actions">
<h6 class="dropdown-header">
Actions
</h6>
<a role="menuitem" type="open" class="dropdown-item">
<i class="fa fa-external-link"/>
Open
</a>
<a t-if="record.permission_write.raw_value" role="menuitem" type="edit" class="dropdown-item">
<i class="fa fa-pencil-square-o"/>
Edit
</a>
<a t-if="record.permission_unlink.raw_value" role="menuitem" type="delete" class="dropdown-item">
<i class="fa fa-trash-o"/>
Delete
</a>
</div>
</div>
<div t-if="record.permission_write.raw_value" class="row">
<div role="menuitem" class="col-12">
<ul class="oe_kanban_colorpicker" data-field="color"/>
</div>
</div>
</div>
</div>
<div class="oe_kanban_content">
<div class="o_kanban_image">
<div class="o_kanban_image_wrapper">
<a class="o_kanban_dms_file_preview" t-att-data-id="widget.db_id">
<img t-att-src="record.icon_url.raw_value" alt="Icon"/>
</a>
</div>
</div>
<div class="o_kanban_details">
<div class="o_kanban_details_wrapper">
<div class="o_kanban_record_title o_text_overflow">
<a class="o_kanban_dms_file_preview fa fa-search" title="Search" t-att-data-id="widget.db_id"/>
<field name="name"/>
</div>
<div class="o_kanban_record_body">
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}"/>
</div>
<div class="o_kanban_record_bottom">
<div class="oe_kanban_bottom_left">
<field name="write_date" widget="date"/>
</div>
<div class="oe_kanban_bottom_right">
<span t-if="record.is_locked.raw_value" class="mk_file_kanban_lock">
<i t-attf-class="fa #{(record.is_locked.raw_value and !record.is_lock_editor.raw_value) ? 'fa-lock' : ''} #{((record.is_locked.raw_value and record.is_lock_editor.raw_value)) ? 'fa-unlock-alt' : ''}" t-att-title="record.locked_by.value"/>
</span>
<img t-att-src="kanban_image('res.users', 'image_128', record.create_uid.raw_value)" t-att-alt="record.create_uid.value" class="oe_kanban_avatar"/>
</div>
</div>
</div>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="view_dms_file_tree" model="ir.ui.view">
<field name="name">dms_file.tree</field>
<field name="model">dms.file</field>
<field name="arch" type="xml">
<tree string="Files" js_class="file_list" decoration-warning="not active" decoration-muted="(is_locked and not is_lock_editor)">
<field name="active" invisible="1"/>
<field name="is_locked" invisible="1"/>
<field name="is_lock_editor" invisible="1"/>
<field name="name"/>
<field name="write_date"/>
<field name="size"/>
<field name="mimetype"/>
<field name="path_names" widget="path_names" string="Path"/>
</tree>
</field>
</record>
<record id="view_dms_file_graph" model="ir.ui.view">
<field name="name">dms_file.graph</field>
<field name="model">dms.file</field>
<field name="arch" type="xml">
<graph type="pie">
<field name="directory_id" type="row"/>
<field name="size" type="measure"/>
</graph>
</field>
</record>
<record id="view_dms_file_pivot" model="ir.ui.view">
<field name="name">dms_file.pivot</field>
<field name="model">dms.file</field>
<field name="arch" type="xml">
<pivot display_quantity="true">
<field name="storage_id" type="row"/>
<field name="directory_id" type="row"/>
<field name="size" type="measure"/>
</pivot>
</field>
</record>
<record id="view_dms_file_form" model="ir.ui.view">
<field name="name">dms_file.form</field>
<field name="model">dms.file</field>
<field name="arch" type="xml">
<form string="Files">
<header>
<button class="oe_highlight" name="lock" type="object" string="Lock" attrs="{'invisible':['|',('is_locked', '!=', False),('permission_write', '=', False)]}"/>
<button class="oe_highlight" name="unlock" type="object" string="Unlock" attrs="{'invisible':['|',('is_locked', '=', False),('is_lock_editor', '=', False)]}"/>
<button name="%(portal.portal_share_action)d" string="Share" type="action" class="oe_highlight oe_read_only"/>
</header>
<sheet>
<div class="oe_button_box" name="button_box"/>
<field name="image_1920" widget="image" class="oe_avatar" nolabel="1" options="{'image_preview': 'image_128'}"/>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1>
<field name="name"/>
<field name="active" invisible="1"/>
</h1>
<h4>
<field name="path_json" widget="path_json" options="{'prefix': True, 'suffix': False}" attrs="{'invisible': ['|', ('name', '=', False), ('directory_id', '=', False)]}"/>
</h4>
</div>
<group name="content">
<group>
<field name="content" filename="name" widget="preview_binary"/>
</group>
<group>
<field name="extension"/>
<field name="mimetype"/>
</group>
</group>
<group name="settings">
<group>
<field name="directory_id" options="{'no_quick_create': True}"/>
<field name="storage_id" options="{'no_open': True}"/>
</group>
<group>
<field name="category_id" placeholder="Internal / Human Resource" options="{'no_open': True, 'no_create': True}"/>
<field name="tag_ids" widget="many2many_tags" placeholder="Tags..." options="{'color_field': 'color', 'no_create_edit': True}"/>
</group>
</group>
<group>
<field name="storage_id_save_type" invisible="True"/>
<field name="res_model" readonly="True" attrs="{'invisible': [('storage_id_save_type', '!=', 'attachment')]}"/>
<field name="res_id" readonly="True" attrs="{'invisible': [('storage_id_save_type', '!=', 'attachment')]}"/>
<field name="record_ref" attrs="{'invisible': [('storage_id_save_type', '!=', 'attachment')]}"/>
</group>
<notebook>
<page name="page_meta" string="Meta Information">
<group>
<group>
<field name="create_date" readonly="1"/>
<field name="create_uid" readonly="1"/>
</group>
<group>
<field name="write_date" readonly="1"/>
<field name="write_uid" readonly="1"/>
</group>
</group>
</page>
<page name="page_access" string="Access Information">
<group>
<group>
<field name="permission_write" readonly="1"/>
<field name="permission_unlink" readonly="1"/>
</group>
<group>
<field name="is_lock_editor" invisible="1"/>
<field name="is_locked" invisible="1"/>
<field name="locked_by"/>
</group>
</group>
</page>
<page name="page_technical" string="Technical Information" invisible="1" groups="dms.group_dms_manager,base.group_no_one">
<group name="technical">
<group name="technical_left">
</group>
<group name="technical_right">
</group>
</group>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<record id="view_dms_file_manager_form" model="ir.ui.view">
<field name="name">dms_file.form</field>
<field name="model">dms.file</field>
<field name="inherit_id" ref="view_dms_file_form"/>
<field name="groups_id" eval="[(6, 0, [ref('dms.group_dms_manager')])]"/>
<field name="arch" type="xml">
<field name="storage_id" position="attributes">
<attribute name="options">{}</attribute>
</field>
</field>
</record>
<record id="action_dms_file" model="ir.actions.act_window">
<field name="name">Files</field>
<field name="res_model">dms.file</field>
<field name="view_mode">kanban,tree,graph,pivot,form</field>
<field name="domain">[("is_hidden", "=", False)]</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Add a new File.
</p>
<p>
Files are used to save content directly in Odoo.
</p>
</field>
</record>
<menuitem id="menu_dms_file" name="Files" sequence="20" parent="main_menu_dms" action="action_dms_file"/>
<record id="search_dms_file_migration" model="ir.ui.view">
<field name="name">dms_file.search</field>
<field name="model">dms.file</field>
<field name="arch" type="xml">
<search>
<field name="name" filter_domain="[('name','ilike',self)]"/>
<group expand="0" string="Group By">
<filter name="group_storage" string="Storage" domain="[]" context="{'group_by':'storage_id'}"/>
</group>
<searchpanel>
<field name="directory_id" icon="fa-folder" enable_counters="1"/>
<field name="category_id" icon="fa-users" enable_counters="1"/>
</searchpanel>
</search>
</field>
</record>
<record id="view_dms_file_migration_tree" model="ir.ui.view">
<field name="name">dms_file.tree</field>
<field name="model">dms.file</field>
<field name="arch" type="xml">
<tree string="Files" decoration-muted="(is_locked and not is_lock_editor)" create="0" delete="0">
<field name="is_locked" invisible="1"/>
<field name="is_lock_editor" invisible="1"/>
<field name="name"/>
<field name="write_date"/>
<field name="content"/>
<field name="mimetype"/>
<field name="storage_id"/>
<field name="migration"/>
</tree>
</field>
</record>
<record id="action_dms_file_migration" model="ir.actions.act_window">
<field name="name">Files</field>
<field name="res_model">dms.file</field>
<field name="view_mode">tree</field>
<field name="search_view_id" ref="search_dms_file_migration"/>
<field name="domain">[('require_migration', '=', True), '|',('active', '=', False), ('active', '!=', False)]
</field>
<field name="context">{'search_default_group_storage': 1}</field>
<field name="view_ids" eval="[(5, 0, 0), (0, 0, {'view_mode': 'tree', 'view_id': ref('view_dms_file_migration_tree')})]"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Add a new File.
</p>
<p>
Files are used to save content directly in Odoo.
</p>
</field>
</record>
<menuitem id="menu_dms_file_migration" name="Migration" parent="cat_menu_dms_config_system" action="action_dms_file_migration" sequence="8"/>
<record id="view_dms_file_new_form" model="ir.ui.view">
<field name="name">dms_file.form</field>
<field name="model">dms.file</field>
<field name="inherit_id" ref="view_dms_file_form"/>
<field name="mode">primary</field>
<field name="arch" type="xml">
<xpath expr="//header" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
<xpath expr="//sheet//div[hasclass('oe_button_box')]" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
<form position="inside">
<footer>
<button class="btn btn-primary" type="object" string="Create" name="action_save_onboarding_file_step"/>
<button special="cancel" string="Cancel"/>
</footer>
</form>
</field>
</record>
<record id="action_dms_file_new" model="ir.actions.act_window">
<field name="name">New Root Directory</field>
<field name="res_model">dms.file</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="view_id" ref="view_dms_file_new_form"/>
</record>
</odoo>