From b8172d5f9671175403912d9a2a425077a4492bbd Mon Sep 17 00:00:00 2001 From: clementthomas Date: Tue, 9 Apr 2024 11:14:25 +0200 Subject: [PATCH] [NEW] maintenance_server_monitoring_equipment_status --- .../models/maintenance_equipment.py | 48 +++++++++++++------ .../.gitignore | 2 + .../README.rst | 44 +++++++++++++++++ .../__init__.py | 3 ++ .../__manifest__.py | 38 +++++++++++++++ .../models/__init__.py | 2 + .../models/maintenance_equipment.py | 23 +++++++++ .../models/maintenance_equipment_status.py | 11 +++++ .../maintenance_equipment_status_views.xml | 29 +++++++++++ 9 files changed, 185 insertions(+), 15 deletions(-) create mode 100644 maintenance_server_monitoring_maintenance_equipment_status/.gitignore create mode 100644 maintenance_server_monitoring_maintenance_equipment_status/README.rst create mode 100644 maintenance_server_monitoring_maintenance_equipment_status/__init__.py create mode 100644 maintenance_server_monitoring_maintenance_equipment_status/__manifest__.py create mode 100644 maintenance_server_monitoring_maintenance_equipment_status/models/__init__.py create mode 100644 maintenance_server_monitoring_maintenance_equipment_status/models/maintenance_equipment.py create mode 100644 maintenance_server_monitoring_maintenance_equipment_status/models/maintenance_equipment_status.py create mode 100644 maintenance_server_monitoring_maintenance_equipment_status/views/maintenance_equipment_status_views.xml diff --git a/maintenance_server_monitoring/models/maintenance_equipment.py b/maintenance_server_monitoring/models/maintenance_equipment.py index ee918af..171e9ad 100644 --- a/maintenance_server_monitoring/models/maintenance_equipment.py +++ b/maintenance_server_monitoring/models/maintenance_equipment.py @@ -59,7 +59,7 @@ class MaintenanceEquipment(models.Model): """Class to make the tests """ WARNING = "warning" - ERROR = "error" + ERROR = "error" def __init__(self, name): self.name = name # name of the test @@ -208,22 +208,40 @@ class MaintenanceEquipment(models.Model): existing_not_done_warning_request = equipment.warning_maintenance_request if (error and not existing_not_done_error_request) \ or (warning and not existing_not_done_warning_request and not existing_not_done_error_request): - maintenance_request = self.env['maintenance.request'].create({ - "name":f'[{"ERROR" if error else "WARNING"}] {equipment.name}', - "equipment_id":equipment.id, - "user_id":equipment.technician_user_id.id, - "maintenance_team_id":equipment.maintenance_team_id.id or self.env["maintenance.team"].search([], limit=1), - "priority":'2' if error else '3', - "maintenance_type":"corrective" if error else "preventive", - "description":new_log - }) - if error: - equipment.error_maintenance_request = maintenance_request - else: - equipment.warning_maintenance_request = maintenance_request - + equipment.create_maintenance_request(self.MonitoringTest.ERROR if error else self.MonitoringTest.WARNING, new_log) + else: + self.no_error() + + def create_maintenance_request(self, error_level, description): + """create a maintenance request for equipment (self) + + Args: + error_level (string): MonitoringTest.ERROR or MonitoringTest.WARNING + description (string): description of maintenance request + """ + maintenance_request = self.env['maintenance.request'].create({ + "name":f'[{error_level.upper()}] {self.name}', + "equipment_id":self.id, + "user_id":self.technician_user_id.id, + "maintenance_team_id":self.maintenance_team_id.id or self.env["maintenance.team"].search([], limit=1), + "priority":'2' if error_level == self.MonitoringTest.ERROR else '3', + "maintenance_type":"corrective" if error_level == self.MonitoringTest.ERROR else "preventive", + "description":description + }) + if error_level == self.MonitoringTest.ERROR: + self.error_maintenance_request = maintenance_request + self.warning_maintenance_request = None + else: + self.warning_maintenance_request = maintenance_request + self.error_maintenance_request = None + def no_error(self): + """set error and warning maintenance request to None + """ + self.error_maintenance_request = None + self.warning_maintenance_request = None + def install_dependencies(self): """ install dependencies needed to do all tests, as python or shell programs diff --git a/maintenance_server_monitoring_maintenance_equipment_status/.gitignore b/maintenance_server_monitoring_maintenance_equipment_status/.gitignore new file mode 100644 index 0000000..6da5887 --- /dev/null +++ b/maintenance_server_monitoring_maintenance_equipment_status/.gitignore @@ -0,0 +1,2 @@ +*.*~ +*pyc diff --git a/maintenance_server_monitoring_maintenance_equipment_status/README.rst b/maintenance_server_monitoring_maintenance_equipment_status/README.rst new file mode 100644 index 0000000..4e6fa50 --- /dev/null +++ b/maintenance_server_monitoring_maintenance_equipment_status/README.rst @@ -0,0 +1,44 @@ +====================================== +maintenance_server_monitoring +====================================== + +Monitor some data on remote hosts + +Installation +============ + +Use Odoo normal module installation procedure to install +``maintenance_server_monitoring``. + +Known issues / Roadmap +====================== + +None yet. + +Bug Tracker +=========== + +Bugs are tracked on `our issues website `_. 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 +------------ + +* Clément Thomas + +Funders +------- + +The development of this module has been financially supported by: +* Elabore (https://elabore.coop) + + +Maintainer +---------- + +This module is maintained by Elabore. diff --git a/maintenance_server_monitoring_maintenance_equipment_status/__init__.py b/maintenance_server_monitoring_maintenance_equipment_status/__init__.py new file mode 100644 index 0000000..cde864b --- /dev/null +++ b/maintenance_server_monitoring_maintenance_equipment_status/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models diff --git a/maintenance_server_monitoring_maintenance_equipment_status/__manifest__.py b/maintenance_server_monitoring_maintenance_equipment_status/__manifest__.py new file mode 100644 index 0000000..a1a38c3 --- /dev/null +++ b/maintenance_server_monitoring_maintenance_equipment_status/__manifest__.py @@ -0,0 +1,38 @@ +# Copyright 2023 Stéphan Sainléger (Elabore) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "maintenance_server_monitoring_maintenance_equipment_status", + "version": "14.0.1.0.0", + "author": "Elabore", + "website": "https://elabore.coop", + "maintainer": "Clément Thomas", + "license": "AGPL-3", + "category": "Tools", + "summary": "Monitor some data on remote hosts", + # any module necessary for this one to work correctly + "depends": [ + "base", + "maintenance_server_monitoring", + "maintenance_equipment_status" + ], + "qweb": [ + # "static/src/xml/*.xml", + ], + "external_dependencies": { + "python": [], + }, + # always loaded + "data": [ + "views/maintenance_equipment_status_views.xml", + ], + # only loaded in demonstration mode + "demo": [], + "js": [], + "css": [], + "installable": True, + # Install this module automatically if all dependency have been previously + # and independently installed. Used for synergetic or glue modules. + "auto_install": True, + "application": False, +} \ No newline at end of file diff --git a/maintenance_server_monitoring_maintenance_equipment_status/models/__init__.py b/maintenance_server_monitoring_maintenance_equipment_status/models/__init__.py new file mode 100644 index 0000000..5621c3d --- /dev/null +++ b/maintenance_server_monitoring_maintenance_equipment_status/models/__init__.py @@ -0,0 +1,2 @@ +from . import maintenance_equipment +from . import maintenance_equipment_status \ No newline at end of file diff --git a/maintenance_server_monitoring_maintenance_equipment_status/models/maintenance_equipment.py b/maintenance_server_monitoring_maintenance_equipment_status/models/maintenance_equipment.py new file mode 100644 index 0000000..1da61f7 --- /dev/null +++ b/maintenance_server_monitoring_maintenance_equipment_status/models/maintenance_equipment.py @@ -0,0 +1,23 @@ +from odoo import fields, models, api + + +class MaintenanceEquipment(models.Model): + _inherit = 'maintenance.equipment' + + def create_maintenance_request(self, error_level, description): + res = super(MaintenanceEquipment, self).create_maintenance_request(error_level, description) + if self.error_maintenance_request: + error_status = self.env["maintenance.equipment.status"].search([("is_error_status",'=',True),'|', ('category_ids', 'in', [self.category_id.id]), ('category_ids', '=', False)]) + if error_status: + self.status_id = error_status + else: + warning_status = self.env["maintenance.equipment.status"].search([("is_warning_status",'=',True),'|', ('category_ids', 'in', [self.category_id.id]), ('category_ids', '=', False)]) + if warning_status: + self.status_id = warning_status + return res + + def no_error(self): + res = super(MaintenanceEquipment, self).no_error() + ok_status = self.env["maintenance.equipment.status"].search([("is_error_status",'=',False),("is_warning_status",'=',False),'|', ('category_ids', 'in', [self.category_id.id]), ('category_ids', '=', False)]) + self.status_id = ok_status + return res diff --git a/maintenance_server_monitoring_maintenance_equipment_status/models/maintenance_equipment_status.py b/maintenance_server_monitoring_maintenance_equipment_status/models/maintenance_equipment_status.py new file mode 100644 index 0000000..bcf1e0f --- /dev/null +++ b/maintenance_server_monitoring_maintenance_equipment_status/models/maintenance_equipment_status.py @@ -0,0 +1,11 @@ +from odoo import fields, models, api +import subprocess +import sys +import psutil +from io import StringIO + +class MaintenanceEquipmentStatus(models.Model): + _inherit = "maintenance.equipment.status" + + is_warning_status = fields.Boolean('Is warning status') + is_error_status = fields.Boolean('Is error status') \ No newline at end of file diff --git a/maintenance_server_monitoring_maintenance_equipment_status/views/maintenance_equipment_status_views.xml b/maintenance_server_monitoring_maintenance_equipment_status/views/maintenance_equipment_status_views.xml new file mode 100644 index 0000000..2d435df --- /dev/null +++ b/maintenance_server_monitoring_maintenance_equipment_status/views/maintenance_equipment_status_views.xml @@ -0,0 +1,29 @@ + + + + maintenance.equipment.status.form.inherit + maintenance.equipment.status + + + + + + + + + + + + + maintenance.equipment.status.tree.inherit + maintenance.equipment.status + + + + + + + + + + \ No newline at end of file