Compare commits

...

3 Commits

Author SHA1 Message Date
Stéphan Sainléger
fd9b169925 [MIG] maintenance_create_requests_from_project_task: Migration to 18.0 2026-03-17 22:44:45 +01:00
Stéphan Sainléger
9897d7ebe8 [MIG] maintenance_service_http_monitoring: Migration to 18.0 2026-03-17 22:44:45 +01:00
Stéphan Sainléger
8558f5b79f [MIG] maintenance_server_data: Migration to 18.0 2026-03-17 22:44:34 +01:00
15 changed files with 45 additions and 195 deletions

View File

@@ -1,48 +0,0 @@
=============================================
maintenance_create_requests_from_project_task
=============================================
Allow the creation of multiple maintenance requests from a projet task.
When user click on the button "Create maintenance requests", a wizard appears.
The wizard allows the user to configure the requests and to select the maintenance equipments concerned.
At wizard validation, one or several maintenance requests are created, one for each equipement selected.
Installation
============
Use Odoo normal module installation procedure to install
``maintenance_create_requests_from_project_task``.
Known issues / Roadmap
======================
None yet.
Bug Tracker
===========
Bugs are tracked on `our issues website <https://github.com/elabore-coop/maintenance-tools/issues>`_. In case of
trouble, please check there if your issue has already been
reported. If you spotted it first, help us smashing it by providing a
detailed and welcomed feedback.
Credits
=======
Contributors
------------
* Stéphan Sainléger
Funders
-------
The development of this module has been financially supported by:
* Elabore (https://elabore.coop)
Maintainer
----------
This module is maintained by Elabore.

View File

@@ -3,7 +3,7 @@
{
"name": "maintenance_create_requests_from_project_task",
"version": "16.0.1.0.0",
"version": "18.0.1.0.0",
"author": "Elabore",
"website": "https://elabore.coop",
"maintainer": "Stéphan Sainléger",

View File

@@ -11,7 +11,7 @@
<button
name="action_view_maintenance_request_ids"
type="object"
attrs="{'invisible': [('maintenance_request_count', '=', 0)]}"
invisible="maintenance_request_count == 0"
class="oe_stat_button"
icon="fa-tasks"
>

View File

@@ -1,4 +1,5 @@
from odoo import _, api, fields, models
from odoo.exceptions import UserError
from odoo.tools.safe_eval import safe_eval
@@ -77,7 +78,10 @@ class CreateMaintenanceRequestsWizard(models.TransientModel):
)
if len(equipment_list) == 0:
raise UserError(
"No equipment is matching the domain. Maintenance request creation is not possible."
_(
"No equipment is matching the domain. "
"Maintenance request creation is not possible."
)
)
vals_list = []
@@ -104,7 +108,7 @@ class CreateMaintenanceRequestsWizard(models.TransientModel):
def _get_action(self, maintenance_requests):
"""
Provide the action to go to the tree view of the maintenance requests created.
Provide the action to go to the list view of the maintenance requests created.
"""
search_view_ref = self.env.ref(
"maintenance.hr_equipment_request_view_search", False
@@ -112,7 +116,7 @@ class CreateMaintenanceRequestsWizard(models.TransientModel):
form_view_ref = self.env.ref(
"maintenance.hr_equipment_request_view_form", False
)
tree_view_ref = self.env.ref(
list_view_ref = self.env.ref(
"maintenance.hr_equipment_request_view_tree", False
)
@@ -121,6 +125,6 @@ class CreateMaintenanceRequestsWizard(models.TransientModel):
"name": "Maintenance Requests",
"res_model": "maintenance.request",
"type": "ir.actions.act_window",
"views": [(tree_view_ref.id, "tree"), (form_view_ref.id, "form")],
"views": [(list_view_ref.id, "list"), (form_view_ref.id, "form")],
"search_view_id": search_view_ref and [search_view_ref.id],
}

View File

@@ -1,44 +0,0 @@
======================================
maintenance_server_data
======================================
Gather several identification data about the servers to maintain.
Installation
============
Use Odoo normal module installation procedure to install
``maintenance_server_data``.
Known issues / Roadmap
======================
None yet.
Bug Tracker
===========
Bugs are tracked on `our issues website <https://github.com/elabore-coop/maintenance-tools/issues>`_. In case of
trouble, please check there if your issue has already been
reported. If you spotted it first, help us smashing it by providing a
detailed and welcomed feedback.
Credits
=======
Contributors
------------
* Stéphan Sainléger
Funders
-------
The development of this module has been financially supported by:
* Elabore (https://elabore.coop)
Maintainer
----------
This module is maintained by Elabore.

View File

@@ -3,7 +3,7 @@
{
"name": "maintenance_server_data",
"version": "16.0.1.0.0",
"version": "18.0.1.0.0",
"author": "Elabore",
"website": "https://git.elabore.coop/elabore/maintenance-tools",
"maintainer": "Stéphan Sainléger",

View File

@@ -23,14 +23,14 @@
<xpath expr="//notebook" position="inside">
<page name="services" string="Services">
<field name="service_ids" nolabel="1">
<tree create="true" delete="true" editable="top">
<list create="true" delete="true" editable="top">
<field name="service_id" />
<field
name="version_id"
domain="[('service_id', '=', service_id)]"
/>
<field name="service_url" />
</tree>
</list>
</field>
</page>
</xpath>
@@ -39,7 +39,7 @@
<record id="equipment_view_tree_server_inherit" model="ir.ui.view">
<field name="name">equipment.tree.server.inherit</field>
<field name="name">equipment.list.server.inherit</field>
<field name="model">maintenance.equipment</field>
<field name="inherit_id" ref="maintenance.hr_equipment_view_tree" />
<field name="arch" type="xml">

View File

@@ -1,20 +1,20 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="os_distribution_view_tree" model="ir.ui.view">
<field name="name">os.distribution.view.tree</field>
<field name="name">os.distribution.view.list</field>
<field name="model">os.distribution</field>
<field name="arch" type="xml">
<tree string="OS Distributions" editable="top">
<list editable="top">
<field name="distrib_name" />
<field name="distrib_version" />
</tree>
</list>
</field>
</record>
<record id="os_distribution_action" model="ir.actions.act_window">
<field name="name">OS Distribution</field>
<field name="res_model">os.distribution</field>
<field name="view_mode">tree</field>
<field name="view_mode">list</field>
<field name="view_id" ref="os_distribution_view_tree" />
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">

View File

@@ -2,46 +2,46 @@
<odoo>
<!-- VIEWS -->
<record id="service_view_tree" model="ir.ui.view">
<field name="name">service.view.tree</field>
<field name="name">service.view.list</field>
<field name="model">service</field>
<field name="arch" type="xml">
<tree string="Services" editable="top">
<list editable="top">
<field name="name" />
</tree>
</list>
</field>
</record>
<record id="service_version_view_tree" model="ir.ui.view">
<field name="name">service.version.view.tree</field>
<field name="name">service.version.view.list</field>
<field name="model">service.version</field>
<field name="arch" type="xml">
<tree string="Service versions" editable="top">
<list editable="top">
<field name="service_id" />
<field name="name" />
<field name="is_last_version" />
</tree>
</list>
</field>
</record>
<record id="backup_server_view_tree" model="ir.ui.view">
<field name="name">backup.server.view.tree</field>
<field name="name">backup.server.view.list</field>
<field name="model">backup.server</field>
<field name="arch" type="xml">
<tree string="Backup Servers" editable="top">
<list editable="top">
<field name="name" />
</tree>
</list>
</field>
</record>
<record id="service_instance_view_tree" model="ir.ui.view">
<field name="name">service.instance.view.tree</field>
<field name="name">service.instance.view.list</field>
<field name="model">service.instance</field>
<field name="arch" type="xml">
<tree>
<list>
<field name="equipment_id" />
<field name="service_id" />
<field name="version_id" />
</tree>
</list>
</field>
</record>
@@ -86,7 +86,7 @@
<record id="service_action" model="ir.actions.act_window">
<field name="name">Service</field>
<field name="res_model">service</field>
<field name="view_mode">tree</field>
<field name="view_mode">list</field>
<field name="view_id" ref="service_view_tree" />
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
@@ -98,7 +98,7 @@
<record id="service_version_action" model="ir.actions.act_window">
<field name="name">Service Version</field>
<field name="res_model">service.version</field>
<field name="view_mode">tree</field>
<field name="view_mode">list</field>
<field name="view_id" ref="service_version_view_tree" />
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
@@ -110,7 +110,7 @@
<record id="backup_server_action" model="ir.actions.act_window">
<field name="name">Backup server</field>
<field name="res_model">backup.server</field>
<field name="view_mode">tree</field>
<field name="view_mode">list</field>
<field name="view_id" ref="backup_server_view_tree" />
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
@@ -122,7 +122,7 @@
<record id="service_instance_action" model="ir.actions.act_window">
<field name="name">Services</field>
<field name="res_model">service.instance</field>
<field name="view_mode">tree</field>
<field name="view_mode">list</field>
<field name="view_id" ref="service_instance_view_tree" />
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">

View File

@@ -1,58 +0,0 @@
======================================
maintenance_service_http_monitoring
======================================
Module that allows monitoring of different services by checking their HTTP 200 responses:
- Uses the `maintenance_server_data` service for each device.
If the service has a URL, a request is made.
- Adds maintenance mode for a device:
- Allows disabling HTTP checks for a specified time (defined in the cron job).
## Logic:
If a request fails and a maintenance task has already been created for the same day,
no new task is added.
The default values for the cron jobs are located in `data/cron.xml`.
Installation
============
Use Odoo normal module installation procedure to install
``maintenance_service_http_monitoring``.
Known issues / Roadmap
======================
None yet.
Bug Tracker
===========
Bugs are tracked on `our issues website <https://github.com/elabore-coop/maintenance-tools/issues>`_. In case of
trouble, please check there if your issue has already been
reported. If you spotted it first, help us smashing it by providing a
detailed and welcomed feedback.
Credits
=======
Contributors
------------
* Boris Gallet
Funders
-------
The development of this module has been financially supported by:
* Elabore (https://elabore.coop)
Maintainer
----------
This module is maintained by Elabore.

View File

@@ -1,6 +1,6 @@
{
"name": "maintenance_service_http_monitoring",
"version": "16.0.1.0.0",
"version": "18.0.1.0.0",
"author": "Elabore",
"license": "AGPL-3",
"category": "Tools",

View File

@@ -7,8 +7,6 @@
<field name="code">model.cron_check_http_services()</field>
<field name="interval_number">15</field>
<field name="interval_type">minutes</field>
<field name="numbercall">-1</field>
<field name="doall">False</field>
</record>
<record id="ir_cron_maintenance_mode_expiry" model="ir.cron">
<field
@@ -22,7 +20,5 @@
<field name="code">model.cron_deactivate_expired_maintenance_mode()</field>
<field name="interval_number">15</field>
<field name="interval_type">minutes</field>
<field name="numbercall">-1</field>
<field name="doall">False</field>
</record>
</odoo>

View File

@@ -42,7 +42,7 @@ class ServiceInstance(models.Model):
now = fields.Datetime.now()
url = rec.service_url
if not url.lower().startswith("https://"):
url = "https://" + url.lstrip("http://")
url = "https://" + url.removeprefix("http://").removeprefix("HTTP://")
try:
response = requests.get(url, timeout=HTTP_CHECK_TIMEOUT)
status_code = response.status_code

View File

@@ -9,7 +9,7 @@
<div
class="alert alert-warning"
role="alert"
attrs="{'invisible': [('maintenance_mode', '=', False)]}"
invisible="not maintenance_mode"
>
Mode maintenance actif — Vérifications HTTP désactivées.<br />
Fin prévue : <field name="maintenance_mode_end" readonly="1" />
@@ -20,14 +20,14 @@
name="action_activate_maintenance_mode"
type="object"
string="Activer le mode maintenance"
attrs="{'invisible': [('maintenance_mode', '=', True)]}"
invisible="maintenance_mode"
class="oe_highlight"
/>
<button
name="action_deactivate_maintenance_mode"
type="object"
string="Désactiver le mode maintenance"
attrs="{'invisible': [('maintenance_mode', '=', False)]}"
invisible="not maintenance_mode"
/>
</xpath>
<xpath expr="//notebook" position="inside">
@@ -43,11 +43,11 @@
</field>
</record>
<record id="view_equipment_tree_http_monitoring" model="ir.ui.view">
<field name="name">maintenance.equipment.tree.http.monitoring</field>
<field name="name">maintenance.equipment.list.http.monitoring</field>
<field name="model">maintenance.equipment</field>
<field name="inherit_id" ref="maintenance.hr_equipment_view_tree" />
<field name="arch" type="xml">
<xpath expr="//tree" position="inside">
<xpath expr="//list" position="inside">
<field name="maintenance_mode" optional="hide" />
</xpath>
</field>

View File

@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Inherit from base tree view to add HTTP monitoring fields -->
<!-- Inherit from base list view to add HTTP monitoring fields -->
<record id="service_instance_http_monitoring_tree" model="ir.ui.view">
<field name="name">service.instance.http.monitoring.tree</field>
<field name="name">service.instance.http.monitoring.list</field>
<field name="model">service.instance</field>
<field
name="inherit_id"
ref="maintenance_server_data.service_instance_view_tree"
/>
<field name="arch" type="xml">
<tree position="attributes">
<list position="attributes">
<attribute name="decoration-danger">http_status_ok == False</attribute>
</tree>
</list>
<field name="version_id" position="after">
<field name="service_url" />
<field name="last_http_check_date" />