Skip to content
Snippets Groups Projects
Commit d140aad8 authored by Mattia Mancini's avatar Mattia Mancini
Browse files

OSB-28: removed test insertion into the serializers

parent 906eb84b
No related branches found
No related tags found
2 merge requests!89Monitoring maintenance Epic branch merge,!1Resolve OSB-13 "Monitoringmaintenance "
......@@ -6,14 +6,12 @@ from ..models.component import Component
from ..models.component_error import ComponentError
from ..models.element import Element
from ..models.element_error import ElementError
from ..models.error_details import ErrorDetails
from ..models.station import Station
from ..models.station_test import StationTest
from ..serializers.component import ComponentSerializer
from ..serializers.component_error import ComponentErrorSerializer
from ..serializers.element import ElementSerializer
from ..serializers.element_error import ElementErrorSerializer
from ..serializers.error_details import ErrorDetailsSerializer
from ..serializers.station import StationSerializer
from ..serializers.station_tests import StationTestSerializer
from ..station_test_raw_parser import parse_raw_station_test
......@@ -90,12 +88,6 @@ class StationTestViewSet(ReadOnlyModelViewSet):
filterset_class = StationTestFilterSet
class ErrorDetailsViewSet(ReadOnlyModelViewSet):
serializer_class = ErrorDetailsSerializer
queryset = ErrorDetails.objects.all()
filter_fields = '__all__'
class ElementErrorViewSet(ReadOnlyModelViewSet):
serializer_class = ElementErrorSerializer
queryset = ElementError.objects.all().order_by('-component_error__station_test__start_datetime',
......@@ -112,130 +104,6 @@ class ElementViewSet(ReadOnlyModelViewSet):
filter_fields = '__all__'
def insert_component_error(station_test_entry,
station_entry,
component_error):
component = component_error.pop('component')
if 'details' in component_error:
component_error_details = component_error.pop('details')
else:
component_error_details = None
component_entry = Component.objects.filter(station=station_entry,
**component).first()
if component_entry is None:
logger.debug('Component entry is not present, inserting ...')
component_entry = Component(station=station_entry,
**component)
logger.debug(component_entry, component_error)
component_entry.save()
component_error_entry = ComponentError.objects.filter(component=component_entry,
station_test=station_test_entry,
**component_error).first()
if component_error_entry is None:
logger.debug('Component error entry is not present, inserting ...')
if component_error_details:
component_error_details_entry = ErrorDetails(**component_error_details)
component_error_details_entry.save()
component_error_entry = ComponentError(component=component_entry,
details=component_error_details_entry,
station_test=station_test_entry,
**component_error)
else:
component_error_entry = ComponentError(component=component_entry,
station_test=station_test_entry,
**component_error)
component_error_entry.save()
return component_error_entry
def insert_component_errors(station_test_entry,
station_entry,
component_errors):
for component_error in component_errors:
insert_component_error(station_test_entry, station_entry, component_error)
def insert_element(component, element):
element_entry = Element.objects.filter(component=component,
**element).first()
if element_entry is None:
element_entry = Element(component=component,
**element)
element_entry.save()
return element_entry
def insert_element_error(station_test_entry,
station_entry,
element_error):
component_error = element_error.pop('component_error')
component_error_entry = insert_component_error(station_test_entry,
station_entry,
component_error)
component = component_error_entry.component
element = element_error.pop('element')
element_error_details = element_error.pop('details')
element_entry = insert_element(component, element)
element_error_entry = ElementError.objects.filter(element=element_entry,
component_error=component_error_entry,
**element_error).first()
if element_error_entry is None:
element_error_details_entry = ErrorDetails(**element_error_details)
element_error_details_entry.save()
element_error_entry = ElementError(element=element_entry,
details=element_error_details_entry,
component_error=component_error_entry,
**element_error)
element_error_entry.save()
return element_error_entry
def insert_element_errors(station_test_entry,
station_entry,
element_errors):
for element in element_errors:
insert_element_error(station_test_entry,
station_entry,
element)
def insert_station_test(station_test):
station = station_test.pop('station')
component_errors = station_test.pop('component_errors')
element_errors = station_test.pop('element_errors')
station_entry = Station.objects.filter(**station).first()
if station_entry is None:
logger.debug('Station is not present, inserting ...')
station_entry = Station(**station)
station_entry.save()
station_test_entry = StationTest.objects.filter(**station_test).first()
if station_test_entry is None:
logger.debug('Station test is not present, inserting ...')
station_test_entry = StationTest(station=station_entry,
**station_test)
station_test_entry.save()
insert_component_errors(station_test_entry,
station_entry,
component_errors)
insert_element_errors(station_test_entry,
station_entry,
element_errors)
return (1,1)
@api_view(['POST'])
def insert_raw_station_test(request):
"""
......@@ -259,9 +127,9 @@ def insert_raw_station_test(request):
raise Exception('cannot parse test {}'.format(content))
logger.info('data parsed successfully for test')
station_test_ids = []
station_test_ids_already_present = []
for entry in parsed_content:
existing_id, new_id = insert_station_test(entry)
station_test = StationTestSerializer.insert_station_test(entry)
station_test_ids.append(station_test.pk)
except Exception as e:
logger.exception("exception occurred while parsing raw station info: %s", e)
......@@ -275,11 +143,6 @@ def insert_raw_station_test(request):
data="the post message is not correct." +
" It has to be of the form \{'content':[RAWSTRING]\}",
status=status.HTTP_400_BAD_REQUEST)
logger.info('request processed correctly inserted %d of %d', len(station_test_ids),
len(station_test_ids) + len(station_test_ids_already_present))
logger.info('Request processed correctly. Processed station test ids: %s', station_test_ids)
return Response(status=status.HTTP_200_OK,
data='Station tests inserted with ids {} \n'.format(station_test_ids) +
'Station tests already present with ids {}'.format(
station_test_ids_already_present
)
)
data='Station tests inserted with ids {} \n'.format(station_test_ids))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment