TIP: You can type at any time to perform a new search.

Security findings

Repository
odoo/odoo · module folder
Module version
0.1.0
Category
Supply Chain/Maintenance
Folder size
4.04 MB
License
LGPL-3
Application
Yes
Auto-installable
No
Website
https://www.odoo.com/app/maintenance
Last tracking update
2026-10-05 00:19:50
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Raphael Collet, Thibault Delavallée, Odoo Translation Bot, Christophe Matthieu, Aaron Bohy, Géry Debongnie, Yannick Tivisse, Xavier-Do, Victor Feyens, Sébastien Theys, David Beguin, Tiffany Chang (tic), Renaud Thiry, Dylan Kiss (dyki), Xavier Bol (xbo), adsh-odoo, Harsh Shah, Xavier Luyckx (xlu), kawkb, dhha-odoo, Pierre Pulinckx, Michaël Mattiello, Krzysztof Magusiak (krma), Julien Launois (jula), Youssef (abyo), Atri Patel(atpa), kame-odoo, chpa-odoo, Karim Gamaleldin, jeanschoenlaub, Louis Wicket, pusu-odoo
Odoo dependencies
odoo/odoo:
- web
- bus
Python dependencies
None
System dependencies
None
Required by
fleet_maintenance, hr_maintenance, stock_maintenance
Description
Track equipment and maintenance requests

Code Analysis info_outline

Views touched (27)
XML IDNameModelTypeStatus
hr_equipment_category_view_form equipment.category.form maintenance.equipment.category form New
hr_equipment_category_view_search equipment.category.search maintenance.equipment.category search New
hr_equipment_category_view_tree equipment.category.list maintenance.equipment.category list New
hr_equipment_request_view_card equipment.request.card maintenance.request New
hr_equipment_request_view_form equipment.request.form maintenance.request form New
hr_equipment_request_view_graph equipment.request.graph maintenance.request graph New
hr_equipment_request_view_kanban equipment.request.kanban maintenance.request kanban New
hr_equipment_request_view_pivot equipment.request.pivot maintenance.request pivot New
hr_equipment_request_view_search equipment.request.search maintenance.request search New
hr_equipment_request_view_tree equipment.request.list maintenance.request list New
hr_equipment_stage_view_form equipment.stage.form maintenance.stage form New
hr_equipment_stage_view_kanban equipment.stage.kanban maintenance.stage kanban New
hr_equipment_stage_view_search equipment.stage.search maintenance.stage search New
hr_equipment_stage_view_tree equipment.stage.list maintenance.stage list New
hr_equipment_view_calendar equipment.request.calendar maintenance.request calendar New
hr_equipment_view_form equipment.form maintenance.equipment form New
hr_equipment_view_kanban equipment.kanban maintenance.equipment kanban New
hr_equipment_view_search equipment.search maintenance.equipment search New
hr_equipment_view_tree equipment.list maintenance.equipment list New
maintenance_request_view_activity maintenance.request.view.activity maintenance.request activity New
maintenance_team_kanban maintenance.team.kanban maintenance.team kanban New
maintenance_team_view_form maintenance.team.form maintenance.team form New
maintenance_team_view_kanban maintenance.team.kanban maintenance.team kanban New
maintenance_team_view_search maintenance.team.search maintenance.team search New
maintenance_team_view_tree maintenance.team.list maintenance.team list New
res_config_settings_view_form res.config.settings.view.form.inherit.maintenance res.config.settings form Inherits base.res_config_settings_view_form
view_maintenance_equipment_category_kanban maintenance.equipment.category.kanban maintenance.equipment.category kanban New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (7)

New fields (20)
  • active Boolean
    default=True
  • assign_date Date
    compute='_compute_equipment_assignment_fields' readonly=False store=True string='Assigned Date' tracking=True
  • category_id Many2one → maintenance.equipment.category
    group_expand='_read_group_category_ids' index='btree_not_null' string='Equipment Category' tracking=True args: 'maintenance.equipment.category'
  • color Integer
    args: 'Color Index'
  • cost Float
    args: 'Cost'
  • equipment_assign_to Selection
    selection=[('other', 'Other')] string='Used By'
  • equipment_properties Properties
    copy=True definition='category_id.equipment_properties_definition' args: 'Properties'
  • equipment_req_properties_definition PropertiesDefinition
    args: 'Maintenance Request Properties'
  • is_assigned Boolean
    compute='_compute_is_assigned' search='_search_is_assigned'
  • maintenance_ids One2many → maintenance.request
    args: 'maintenance.request', 'equipment_id'
  • model Char
    args: 'Model'
  • name Char
    required=True translate=True args: 'Equipment Name'
  • note Html
    args: 'Note'
  • owner_user_id Many2one → res.users
    compute='_compute_owner' index='btree_not_null' readonly=False store=True string='Owner' tracking=True args: 'res.users'
  • partner_id Many2one → res.partner
    check_company=True string='Vendor' args: 'res.partner'
  • partner_ref Char
    args: 'Vendor Reference'
  • scrap_date Date
    args: 'Scrap Date'
  • serial_no Char
    copy=False args: 'Serial Number'
  • technician_user_id Many2one
    tracking=True
  • warranty_date Date
    args: 'Warranty Expiration Date'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (12)
  • color Integer
    args: 'Color Index'
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • equipment_count Integer
    compute='_compute_equipment_count' string='Equipment Count'
  • equipment_ids One2many → maintenance.equipment
    copy=False string='Equipment' args: 'maintenance.equipment', 'category_id'
  • equipment_properties_definition PropertiesDefinition
    args: 'Equipment Properties'
  • fold Boolean
    compute='_compute_fold' store=True string='Folded in Maintenance Pipe'
  • maintenance_count Integer
    compute='_compute_maintenance_count' string='Maintenance Count'
  • maintenance_ids One2many → maintenance.request
    copy=False args: 'maintenance.request', 'category_id'
  • maintenance_open_count Integer
    compute='_compute_maintenance_count' string='Current Maintenance'
  • name Char
    required=True translate=True args: 'Category Name'
  • note Html
    translate=True args: 'Comments'
  • technician_user_id Many2one → res.users
    default=<expr> args: 'res.users', 'Responsible'
Public methods (0)

No public methods.

New fields (12)
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • effective_date Date
    default=fields.Date.context_today help='This date will be used to compute the Mean Time Between Failure.' required=True args: 'Effective Date'
  • estimated_next_failure Date
    compute='_compute_maintenance_request' help='Computed as Latest Failure Date + MTBF' string='Estimated time before next failure (in days)'
  • expected_mtbf Integer
    help='Expected Mean Time Between Failure' string='Expected MTBF'
  • latest_failure_date Date
    compute='_compute_maintenance_request' string='Latest Failure Date'
  • maintenance_count Integer
    compute='_compute_maintenance_count' store=True string='Maintenance Count'
  • maintenance_ids One2many → maintenance.request
    args: 'maintenance.request'
  • maintenance_open_count Integer
    compute='_compute_maintenance_count' store=True string='Current Maintenance'
  • maintenance_team_id Many2one → maintenance.team
    check_company=True compute='_compute_maintenance_team_id' index='btree_not_null' readonly=False store=True string='Maintenance Team' args: 'maintenance.team'
  • mtbf Integer
    compute='_compute_maintenance_request' help='Mean Time Between Failure, computed based on done corrective maintenances.' string='MTBF'
  • mttr Integer
    compute='_compute_maintenance_request' help='Mean Time To Repair' string='MTTR'
  • technician_user_id Many2one → res.users
    string='Technician' args: 'res.users'
Public methods (0)

No public methods.

New fields (24)
  • category_id Many2one → maintenance.equipment.category
    index='btree_not_null' readonly=True related='equipment_id.category_id' store=True string='Category' args: 'maintenance.equipment.category'
  • close_date Date
    help='Date the maintenance was finished. ' args: 'Close Date'
  • color Integer
    args: 'Color Index'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • description Html
    args: 'Description'
  • duration Float
    compute='_compute_duration' help='Duration in hours.' store=True
  • equipment_id Many2one → maintenance.equipment
    check_company=True group_expand='_read_group_equipment_id' index=True ondelete='restrict' string='Equipment' args: 'maintenance.equipment'
  • equipment_req_properties Properties
    copy=True definition='equipment_id.equipment_req_properties_definition' precompute=False string='Maintenance Request Properties'
  • instruction_text Html
    args: 'Text'
  • maintenance_team_id Many2one → maintenance.team
    check_company=True compute='_compute_maintenance_team_id' default=_get_default_team_id index=True readonly=False required=True store=True string='Team' args: 'maintenance.team'
  • maintenance_type Selection
    default='corrective' string='Maintenance Type' args: [('corrective', 'Corrective'), ('preventive', 'Preventive')]
  • name Char
    copy=True required=True args: 'Subjects'
  • owner_user_id Many2one → res.users
    default=<expr> string='Created by User' args: 'res.users'
  • priority Selection
    string='Priority' args: [('0', 'Very Low'), ('1', 'Low'), ('2', 'Normal'), ('3', 'High')]
  • recurring_maintenance Boolean
    compute='_compute_recurring_maintenance' readonly=False store=True string='Recurrent'
  • repeat_interval Integer
    default=1 string='Repeat Every'
  • repeat_type Selection
    default='forever' string='Until' args: [('forever', 'Forever'), ('until', 'Until')]
  • repeat_unit Selection
    default='week' args: [('day', 'Days'), ('week', 'Weeks'), ('month', 'Months'), ('year', 'Years')]
  • repeat_until Date
    string='End Date'
  • schedule_date Datetime
    default=fields.Datetime.now help='Date the maintenance team plans the maintenance. It should not differ much from the Request Date. ' args: 'Scheduled Date'
  • schedule_end Datetime
    compute='_compute_schedule_end' help='Expected completion date and time of the maintenance request.' readonly=False store=True string='Scheduled End'
  • stage_id Many2one → maintenance.stage
    compute='_compute_stage_id' copy=False domain="['|', ('maintenance_team_ids', '=', False), ('maintenance_team_ids', 'in', [maintenance_team_id])]" group_expand='_read_group_stage_ids' ondelete='restrict' readonly=False store=True string='Stage' tracking=True args: 'maintenance.stage'
  • state Selection
    copy=False default='normal' required=True string='State' tracking=True args: [('normal', 'In Progress'), ('changes_requested', 'Changes Requested'), ('approved', 'Approved'), ('done', 'Done'), ('cancelled', 'Cancelled')]
  • user_ids Many2many → res.users
    compute='_compute_user_ids' readonly=False store=True string='Technicians' tracking=True args: 'res.users'
Public methods (4)
  • cancel_equipment_request(self)
  • create(self, vals_list)
    @api.model_create_multi
  • reset_equipment_request(self)
    Reinsert the maintenance request into the maintenance pipe in the first stage
  • write(self, vals)

New fields (4)
  • fold Boolean
    args: 'Folded in Maintenance Pipe'
  • maintenance_team_ids Many2many → maintenance.team
    copy=False string='Maintenance Teams' args: 'maintenance.team'
  • name Char
    required=True translate=True args: 'Name'
  • sequence Integer
    default=20 args: 'Sequence'
Public methods (0)

No public methods.

New fields (14)
  • active Boolean
    default=True
  • alias_id Many2one
    help='Email alias for this maintenance team.'
  • color Integer
    default=0 args: 'Color Index'
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • equipment_ids One2many → maintenance.equipment
    copy=False args: 'maintenance.equipment', 'maintenance_team_id'
  • member_ids Many2many → res.users
    domain="[('company_ids', 'in', company_id)]" string='Team Members' args: 'res.users', 'maintenance_team_users_rel'
  • name Char
    required=True translate=True args: 'Team Name'
  • request_ids One2many → maintenance.request
    copy=False args: 'maintenance.request', 'maintenance_team_id'
  • todo_request_count Integer
    compute='_compute_todo_requests' string='Number of Requests'
  • todo_request_count_changes_requested Integer
    compute='_compute_todo_requests' string='Number of Requests with Changes Requested'
  • todo_request_count_date Integer
    compute='_compute_todo_requests' string='Number of Requests Scheduled'
  • todo_request_count_high_priority Integer
    compute='_compute_todo_requests' string='Number of Requests in High Priority'
  • todo_request_count_unscheduled Integer
    compute='_compute_todo_requests' string='Number of Requests Unscheduled'
  • todo_request_ids One2many → maintenance.request
    compute='_compute_todo_requests' copy=False string='Requests' args: 'maintenance.request'
Public methods (0)

No public methods.

New fields (1)
  • module_maintenance_worksheet Boolean
    string='Custom Maintenance Worksheets'
Public methods (0)

No public methods.

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…