From c0a5d31926c3f025e28633259acadc0b9f13ab8c Mon Sep 17 00:00:00 2001 From: Mattia Mancini <mancini@astron.nl> Date: Wed, 10 Oct 2018 14:30:28 +0000 Subject: [PATCH] OSB-28: add logging when inserting models --- .gitattributes | 1 + .../serializers/component_error.py | 8 +++++ .../monitoringdb/serializers/element.py | 3 ++ .../monitoringdb/serializers/element_error.py | 3 ++ .../monitoringdb/serializers/log.py | 33 +++++++++++++++++++ .../monitoringdb/serializers/station_tests.py | 5 +++ 6 files changed, 53 insertions(+) create mode 100644 LCU/Maintenance/DBInterface/monitoringdb/serializers/log.py diff --git a/.gitattributes b/.gitattributes index 75b2fda7be0..e036eb59253 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1818,6 +1818,7 @@ LCU/Maintenance/DBInterface/monitoringdb/serializers/component.py -text LCU/Maintenance/DBInterface/monitoringdb/serializers/component_error.py -text LCU/Maintenance/DBInterface/monitoringdb/serializers/element.py -text LCU/Maintenance/DBInterface/monitoringdb/serializers/element_error.py -text +LCU/Maintenance/DBInterface/monitoringdb/serializers/log.py -text LCU/Maintenance/DBInterface/monitoringdb/serializers/rtsm.py -text LCU/Maintenance/DBInterface/monitoringdb/serializers/station.py -text LCU/Maintenance/DBInterface/monitoringdb/serializers/station_tests.py -text diff --git a/LCU/Maintenance/DBInterface/monitoringdb/serializers/component_error.py b/LCU/Maintenance/DBInterface/monitoringdb/serializers/component_error.py index 3233b4df572..c582ee9d892 100644 --- a/LCU/Maintenance/DBInterface/monitoringdb/serializers/component_error.py +++ b/LCU/Maintenance/DBInterface/monitoringdb/serializers/component_error.py @@ -5,6 +5,7 @@ from rest_framework.serializers import PrimaryKeyRelatedField, CharField, Intege from .utils import NotNullModelSerializer from ..models.component import Component from ..models.component_error import ComponentError +from .log import ActionLogSerializer logger = logging.getLogger(__name__) @@ -37,7 +38,11 @@ class ComponentErrorSerializer(NotNullModelSerializer): component_entry = Component(station=station_entry, **component) logger.debug(component_entry, component_error) + + component_entry.save() + # Log the action + ActionLogSerializer.log_model_insert(component_entry) component_error_entry = ComponentError.objects.filter(component=component_entry, station_test=station_test_entry, @@ -49,6 +54,9 @@ class ComponentErrorSerializer(NotNullModelSerializer): station_test=station_test_entry, **component_error) component_error_entry.save() + # Log the action + ActionLogSerializer.log_model_insert(component_error_entry) + return component_error_entry @staticmethod diff --git a/LCU/Maintenance/DBInterface/monitoringdb/serializers/element.py b/LCU/Maintenance/DBInterface/monitoringdb/serializers/element.py index 36e27d6949c..54a1edfb0bb 100644 --- a/LCU/Maintenance/DBInterface/monitoringdb/serializers/element.py +++ b/LCU/Maintenance/DBInterface/monitoringdb/serializers/element.py @@ -1,5 +1,6 @@ from rest_framework.serializers import ModelSerializer from ..models.element import Element +from .log import ActionLogSerializer class ElementSerializer(ModelSerializer): @@ -16,4 +17,6 @@ class ElementSerializer(ModelSerializer): element_entry = Element(component=component, **element) element_entry.save() + # Log the action + ActionLogSerializer.log_model_insert(element_entry) return element_entry \ No newline at end of file diff --git a/LCU/Maintenance/DBInterface/monitoringdb/serializers/element_error.py b/LCU/Maintenance/DBInterface/monitoringdb/serializers/element_error.py index 3fe497f3703..a4b62ae5af3 100644 --- a/LCU/Maintenance/DBInterface/monitoringdb/serializers/element_error.py +++ b/LCU/Maintenance/DBInterface/monitoringdb/serializers/element_error.py @@ -3,6 +3,7 @@ from rest_framework.serializers import ModelSerializer from .component_error import ComponentErrorSerializer from .element import ElementSerializer from ..models.element_error import ElementError +from .log import ActionLogSerializer import logging @@ -41,6 +42,8 @@ class ElementErrorSerializer(ModelSerializer): **element_error) element_error_entry.save() + # Log the action + ActionLogSerializer.log_model_insert(element_error_entry) return element_error_entry diff --git a/LCU/Maintenance/DBInterface/monitoringdb/serializers/log.py b/LCU/Maintenance/DBInterface/monitoringdb/serializers/log.py new file mode 100644 index 00000000000..f4b7915d725 --- /dev/null +++ b/LCU/Maintenance/DBInterface/monitoringdb/serializers/log.py @@ -0,0 +1,33 @@ +from rest_framework.serializers import ModelSerializer +from ..models.log import ActionLog +import logging + +logger = logging.getLogger(__name__) + +class ActionLogSerializer(): + + class Meta: + model = ActionLog + fields = '__all__' + depth = 1 + + @staticmethod + def append_log(primary_key, model_name, who, what): + action_log = ActionLog(entry_id=primary_key, + model_name=model_name, + who=who, + what=what) + action_log.save() + + return action_log + + @staticmethod + def log_model_insert(element_entry, who='system'): + try: + ActionLogSerializer.append_log(element_entry.pk, + model_name=element_entry.__class__.__name__, + who=who, + what='Inserted') + except Exception as e: + logger.exception('Cannot log entry %s', element_entry) + raise e \ No newline at end of file diff --git a/LCU/Maintenance/DBInterface/monitoringdb/serializers/station_tests.py b/LCU/Maintenance/DBInterface/monitoringdb/serializers/station_tests.py index 525d6331c9f..12b9dcbf38d 100644 --- a/LCU/Maintenance/DBInterface/monitoringdb/serializers/station_tests.py +++ b/LCU/Maintenance/DBInterface/monitoringdb/serializers/station_tests.py @@ -3,6 +3,7 @@ from ..models.station_test import StationTest from ..models.station import Station from .component_error import ComponentErrorSerializer from .element_error import ElementErrorSerializer +from .log import ActionLogSerializer import logging @@ -34,6 +35,8 @@ class StationTestSerializer(ModelSerializer): logger.debug('Station is not present, inserting ...') station_entry = Station(**station) station_entry.save() + # Log the action + ActionLogSerializer.log_model_insert(station_entry) station_test_entry = StationTest.objects.filter(**station_test).first() if station_test_entry is None: @@ -41,6 +44,8 @@ class StationTestSerializer(ModelSerializer): station_test_entry = StationTest(station=station_entry, **station_test) station_test_entry.save() + # Log the action + ActionLogSerializer.log_model_insert(station_test_entry) ComponentErrorSerializer.insert_component_errors(station_test_entry, station_entry, -- GitLab