diff --git a/db/base/structured_data.py b/db/base/structured_data.py index 62110f7..a556f33 100644 --- a/db/base/structured_data.py +++ b/db/base/structured_data.py @@ -66,31 +66,44 @@ class SatelliteStructuredData(StructuredData): "status": "status", "decoder": "decoder" } + + if isinstance(data, dict): + self.data = self.structure_satellite_data(data) + return + structured_data = [] - satellite_id_domain = Site.objects.get_current().domain + '/satellite/' - for satellite in data: - data_to_append = { - "satellite": { - "@id": satellite_id_domain + str(satellite['norad_cat_id']), - "norad_cat_id": satellite['norad_cat_id'], - "name": satellite['name'], - "status": satellite['status'], - } - } - - if satellite['names']: - data_to_append['satellite']['names'] = satellite['names'].replace('\r', - '').split('\n') - - if satellite['telemetries']: - data_to_append['satellite']['decoder'] = [] - for decoder in satellite['telemetries']: - data_to_append['satellite']['decoder'].append(decoder["decoder"]) - + data_to_append = self.structure_satellite_data(satellite) structured_data.append(data_to_append) + self.data = structured_data + @staticmethod + def structure_satellite_data(satellite): + """Return structured data for one satellite. + + :param satellite: the satellite to be structured + """ + satellite_id_domain = Site.objects.get_current().domain + '/satellite/' + data_to_append = { + "satellite": { + "@id": satellite_id_domain + str(satellite['norad_cat_id']), + "norad_cat_id": satellite['norad_cat_id'], + "name": satellite['name'], + "status": satellite['status'], + } + } + + if satellite['names']: + data_to_append['satellite']['names'] = satellite['names'].replace('\r', '').split('\n') + + if satellite['telemetries']: + data_to_append['satellite']['decoder'] = [] + for decoder in satellite['telemetries']: + data_to_append['satellite']['decoder'].append(decoder["decoder"]) + + return data_to_append + class TransmitterStructuredData(StructuredData): """Generic structered data class for Transmitter model"""