linting R0101
too-many-nested-blocks - pulled a break point out for utils.py/decode_data to get rid of a nested block Signed-off-by: Corey Shields <cshields@gmail.com>merge-requests/399/head
parent
389194b076
commit
3ce647e374
|
@ -9,7 +9,6 @@ disable=
|
||||||
C0412,
|
C0412,
|
||||||
E1101,
|
E1101,
|
||||||
E0213,
|
E0213,
|
||||||
R0101,
|
|
||||||
R0201,
|
R0201,
|
||||||
R0401,
|
R0401,
|
||||||
R0801,
|
R0801,
|
||||||
|
|
120
db/base/utils.py
120
db/base/utils.py
|
@ -188,67 +188,69 @@ def decode_data(norad, period=None):
|
||||||
otherwise attempt to decode everything
|
otherwise attempt to decode everything
|
||||||
"""
|
"""
|
||||||
sat = Satellite.objects.get(norad_cat_id=norad)
|
sat = Satellite.objects.get(norad_cat_id=norad)
|
||||||
if sat.has_telemetry_decoders:
|
if not sat.has_telemetry_decoders:
|
||||||
now = datetime.utcnow()
|
return
|
||||||
if period:
|
|
||||||
time_period = now - timedelta(hours=4)
|
|
||||||
time_period = make_aware(time_period)
|
|
||||||
data = DemodData.objects.filter(
|
|
||||||
satellite__norad_cat_id=norad, timestamp__gte=time_period
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
data = DemodData.objects.filter(satellite=sat)
|
|
||||||
telemetry_decoders = Telemetry.objects.filter(satellite=sat)
|
|
||||||
|
|
||||||
# iterate over DemodData objects
|
now = datetime.utcnow()
|
||||||
for obj in data:
|
if period:
|
||||||
# iterate over Telemetry decoders
|
time_period = now - timedelta(hours=4)
|
||||||
for tlmdecoder in telemetry_decoders:
|
time_period = make_aware(time_period)
|
||||||
try:
|
data = DemodData.objects.filter(
|
||||||
decoder_class = getattr(decoder, tlmdecoder.decoder.capitalize())
|
satellite__norad_cat_id=norad, timestamp__gte=time_period
|
||||||
except AttributeError:
|
)
|
||||||
continue
|
else:
|
||||||
try:
|
data = DemodData.objects.filter(satellite=sat)
|
||||||
with open(obj.payload_frame.path) as frame_file:
|
telemetry_decoders = Telemetry.objects.filter(satellite=sat)
|
||||||
# we get data frames in hex but kaitai requires binary
|
|
||||||
hexdata = frame_file.read()
|
|
||||||
bindata = binascii.unhexlify(hexdata)
|
|
||||||
|
|
||||||
# if we are set to use InfluxDB, send the decoded data
|
# iterate over DemodData objects
|
||||||
# there, otherwise we store it in the local DB.
|
for obj in data:
|
||||||
if settings.USE_INFLUX:
|
# iterate over Telemetry decoders
|
||||||
try:
|
for tlmdecoder in telemetry_decoders:
|
||||||
frame = decoder_class.from_bytes(bindata)
|
try:
|
||||||
json_obj = create_point(
|
decoder_class = getattr(decoder, tlmdecoder.decoder.capitalize())
|
||||||
decoder.get_fields(frame), sat, tlmdecoder, obj, decoders_version
|
except AttributeError:
|
||||||
)
|
continue
|
||||||
write_influx(json_obj)
|
try:
|
||||||
obj.payload_decoded = 'influxdb'
|
with open(obj.payload_frame.path) as frame_file:
|
||||||
obj.is_decoded = True
|
# we get data frames in hex but kaitai requires binary
|
||||||
obj.save()
|
hexdata = frame_file.read()
|
||||||
break
|
bindata = binascii.unhexlify(hexdata)
|
||||||
except Exception: # pylint: disable=broad-except
|
|
||||||
obj.is_decoded = False
|
# if we are set to use InfluxDB, send the decoded data
|
||||||
obj.save()
|
# there, otherwise we store it in the local DB.
|
||||||
continue
|
if settings.USE_INFLUX:
|
||||||
else: # store in the local db instead of influx
|
try:
|
||||||
try:
|
frame = decoder_class.from_bytes(bindata)
|
||||||
frame = decoder_class.from_bytes(bindata)
|
json_obj = create_point(
|
||||||
except Exception: # pylint: disable=broad-except
|
decoder.get_fields(frame), sat, tlmdecoder, obj, decoders_version
|
||||||
obj.payload_decoded = ''
|
)
|
||||||
obj.is_decoded = False
|
write_influx(json_obj)
|
||||||
obj.save()
|
obj.payload_decoded = 'influxdb'
|
||||||
continue
|
obj.is_decoded = True
|
||||||
else:
|
obj.save()
|
||||||
json_obj = create_point(
|
break
|
||||||
decoder.get_fields(frame), sat, tlmdecoder, obj, decoders_version
|
except Exception: # pylint: disable=broad-except
|
||||||
)
|
obj.is_decoded = False
|
||||||
obj.payload_decoded = json_obj
|
obj.save()
|
||||||
obj.is_decoded = True
|
continue
|
||||||
obj.save()
|
else: # store in the local db instead of influx
|
||||||
break
|
try:
|
||||||
except IOError:
|
frame = decoder_class.from_bytes(bindata)
|
||||||
continue
|
except Exception: # pylint: disable=broad-except
|
||||||
|
obj.payload_decoded = ''
|
||||||
|
obj.is_decoded = False
|
||||||
|
obj.save()
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
json_obj = create_point(
|
||||||
|
decoder.get_fields(frame), sat, tlmdecoder, obj, decoders_version
|
||||||
|
)
|
||||||
|
obj.payload_decoded = json_obj
|
||||||
|
obj.is_decoded = True
|
||||||
|
obj.save()
|
||||||
|
break
|
||||||
|
except IOError:
|
||||||
|
continue
|
||||||
|
|
||||||
|
|
||||||
# Caches stats about satellites and data
|
# Caches stats about satellites and data
|
||||||
|
|
Loading…
Reference in New Issue