diff --git a/.gitattributes b/.gitattributes index 75b2fda7be081058e26e465e55a87f64b7b16e5e..e036eb59253783c307f055f4ad549b89ccbfe039 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 3233b4df572b141aa97aaf8fd2d27322ecd4e75e..c582ee9d8927e49c80585d12066930e1d51ddc5d 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 36e27d6949cd840cd13f4f5e347a8184c9eeaf53..54a1edfb0bbbfb3af0aba70ce41cb866f83ec302 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 3fe497f37038951c5836083841f1b9ecd6f8a237..a4b62ae5af31ada174f3177d8ed557d95224f1e6 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 0000000000000000000000000000000000000000..f4b7915d7254d6d2b28d0dbd91de64f580ab1b45 --- /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 525d6331c9f724089ac1a64ffe5faabc792def0d..12b9dcbf38d0f791613f5b6f4090745c3398493d 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,