Curso odoo (Módulos)
Se pide que incorpores la información de las revisiones por la que pasa un vehiculo. Un vehiculo puede tener multiples revisiones.
Crea:
- El modelo correspondiente
- Las vistas necesarias en los vehiculos puedan gestionar sus revisiones.
- Las vistas para poder visualizar las revisiones.
- Vista de lista
- Vista de formulario
- Un menú para acceder a las revisiones desde el menú principal.
## Solución
Crea el fichero
models/revisionModel.py
1from odoo import fields, models 2 3class Revision(models.Model): 4 _name = "viajes.revision" 5 _description = "Revisiones de los Vehiculos" 6 7 titulo = fields.Char(string="Titulo", required=True) 8 descripcion = fields.Text(string="Descripción") 9 fecha = fields.Date(string="Fecha", default=fields.Date.today) 10 superada = fields.Boolean(default=False) 11 12 vehiculo_id = fields.Many2one('viajes.vehiculo', 13 ondelete='cascade', string="Vehiculo", index=True)
Modifica el fichero
models/vehiculoModel.py
1...... 2 3 revision_ids = fields.One2many('viajes.revision', 'vehiculo_id', string="Revisiones del coche")
Modifica el fichero
models/__init__.py
1# -*- coding: utf-8 -*- 2 3from . import VehiculoModel 4from . import ViajeModel 5from . import PartnerModel 6from . import ParadaModel 7from . import RevisionModel
Modifica el fichero
security/ir.model.access.csv
1id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink 2access_viajes_vehiculo,viajes.vehiculo,model_viajes_vehiculo,,1,1,1,1 3access_viajes_viaje,viajes.viaje,model_viajes_viaje,,1,1,1,1 4access_viajes_parada,viajes.parada,model_viajes_parada,,1,1,1,1 5access_viajes_revision,viajes.revision,model_viajes_revision,,1,1,1,1
Crea el fichero
views/revision.xml
1<odoo> 2 <data> 3 <record model="ir.ui.view" id="revision_form_view"> 4 <field name="name">revision.form</field> 5 <field name="model">viajes.revision</field> 6 <field name="arch" type="xml"> 7 <form string="Formulario de Revision"> 8 <sheet> 9 <group> 10 <field name="titulo" /> 11 <field name="fecha" /> 12 <field name="superada" /> 13 <field name="vehiculo_id" /> 14 </group> 15 <notebook> 16 <page string="Descripcion"> 17 <field name="descripcion" /> 18 </page> 19 </notebook> 20 </sheet> 21 </form> 22 </field> 23 </record> 24 <record model="ir.ui.view" id="revision_list_view"> 25 <field name="name">revision.list</field> 26 <field name="model">viajes.revision</field> 27 <field name="arch" type="xml"> 28 <list string="Revision List"> 29 <field name="titulo" /> 30 <field name="fecha" /> 31 <field name="superada" /> 32 </list> 33 </field> 34 </record> 35 36 <record model="ir.actions.act_window" id="revision_list_action"> 37 <field name="name">Revisiones</field> 38 <field name="res_model">viajes.revision</field> 39 <field name="view_mode">list,form</field> 40 <field name="help" type="html"> 41 <p class="oe_view_nocontent_smiling_face">Crear tu primera revisión</p> 42 </field> 43 </record> 44 </data> 45</odoo>
Modifica el fichero
__manifest__.py
1# any module necessary for this one to work correctly 2 'depends': ['base'], 3 4 # always loaded 5 'data': [ 6 'security/ir.model.access.csv', 7 'views/vehiculo.xml', 8 'views/viaje.xml', 9 'views/partner.xml', 10 'views/parada.xml', 11 'views/revision.xml', 12 'views/menus.xml' 13 ],
Crea el fichero
views/menus.xml
1<odoo> 2 <data> 3 <menuitem id="main_viajes_menu" name="Viajes" /> 4 <menuitem id="viajes_menu" name="Elementos" parent="main_viajes_menu" /> 5 <menuitem id="vehiculo_menu" name="Vehiculos" parent="viajes_menu" action="vehiculo_list_action" /> 6 <menuitem id="viaje_menu" name="Viajes" parent="viajes_menu" action="viaje_list_action" /> 7 <menuitem id="configuration_menu" name="Configuration" parent="main_viajes_menu" /> 8 <menuitem id="contact_menu" name="Viajeros" parent="configuration_menu" action="contact_list_action" /> 9 10 11 <menuitem id="parada_menu" name="Paradas" parent="viajes_menu" action="parada_list_action" /> 12 <menuitem id="revision_menu" name="Revisiones" parent="viajes_menu" action="revision_list_action" /> 13 </data> 14</odoo>
Modifica el fichero
views/vehiculo.xml
1<record model="ir.ui.view" id="vehiculo_form_view"> 2 <field name="name">vehiculo.form</field> 3 <field name="model">viajes.vehiculo</field> 4 <field name="arch" type="xml"> 5 <form string="Formulario de Vehiculo"> 6 <sheet> 7 <group> 8 <field name="modelo" /> 9 <field name="marca" /> 10 <field name="propietario_id"/> 11 <field name="matricula"/> 12 </group> 13 <notebook> 14 <page string="Descripcion"> 15 <field name="descripcion"/> 16 </page> 17 <page string="Acerca de"> 18 Esto es un ejemplo 19 </page> 20 <page string="Viajes"> 21 <field name="viaje_ids"> 22 <list string="Viajes registrados"> 23 <field name="titulo"/> 24 <field name="conductor_id"/> 25 </list> 26 </field> 27 </page> 28 <page string="Revisiones"> 29 <field name="revision_ids"> 30 <list string="Revisiones registradas"> 31 <field name="titulo"/> 32 <field name="fecha"/> 33 <field name="superada"/> 34 </list> 35 </field> 36 </page> 37 </notebook> 38 </sheet> 39 </form> 40 </field> 41</record>