Добавил информацию о типе объекта. Просто фиксы
This commit is contained in:
@@ -7,6 +7,7 @@ from django.utils import timezone
|
||||
from django.views import View
|
||||
|
||||
from ..models import ObjItem
|
||||
from ..utils import format_coordinate, format_coords_display, format_frequency, format_symbol_rate
|
||||
|
||||
|
||||
class GetLocationsView(LoginRequiredMixin, View):
|
||||
@@ -76,11 +77,11 @@ class LyngsatDataAPIView(LoginRequiredMixin, View):
|
||||
data = {
|
||||
'id': lyngsat.id,
|
||||
'satellite': lyngsat.id_satellite.name if lyngsat.id_satellite else '-',
|
||||
'frequency': f"{lyngsat.frequency:.3f}" if lyngsat.frequency else '-',
|
||||
'frequency': format_frequency(lyngsat.frequency),
|
||||
'polarization': lyngsat.polarization.name if lyngsat.polarization else '-',
|
||||
'modulation': lyngsat.modulation.name if lyngsat.modulation else '-',
|
||||
'standard': lyngsat.standard.name if lyngsat.standard else '-',
|
||||
'sym_velocity': f"{lyngsat.sym_velocity:.0f}" if lyngsat.sym_velocity else '-',
|
||||
'sym_velocity': format_symbol_rate(lyngsat.sym_velocity),
|
||||
'fec': lyngsat.fec or '-',
|
||||
'channel_info': lyngsat.channel_info or '-',
|
||||
'last_update': last_update_str,
|
||||
@@ -146,13 +147,13 @@ class SigmaParameterDataAPIView(LoginRequiredMixin, View):
|
||||
sigma_data.append({
|
||||
'id': sigma.id,
|
||||
'satellite': sigma.id_satellite.name if sigma.id_satellite else '-',
|
||||
'frequency': f"{sigma.frequency:.3f}" if sigma.frequency else '-',
|
||||
'transfer_frequency': f"{sigma.transfer_frequency:.3f}" if sigma.transfer_frequency else '-',
|
||||
'freq_range': f"{sigma.freq_range:.3f}" if sigma.freq_range else '-',
|
||||
'frequency': format_frequency(sigma.frequency),
|
||||
'transfer_frequency': format_frequency(sigma.transfer_frequency),
|
||||
'freq_range': format_frequency(sigma.freq_range),
|
||||
'polarization': sigma.polarization.name if sigma.polarization else '-',
|
||||
'modulation': sigma.modulation.name if sigma.modulation else '-',
|
||||
'standard': sigma.standard.name if sigma.standard else '-',
|
||||
'bod_velocity': f"{sigma.bod_velocity:.0f}" if sigma.bod_velocity else '-',
|
||||
'bod_velocity': format_symbol_rate(sigma.bod_velocity),
|
||||
'snr': f"{sigma.snr:.1f}" if sigma.snr is not None else '-',
|
||||
'power': f"{sigma.power:.1f}" if sigma.power is not None else '-',
|
||||
'status': sigma.status or '-',
|
||||
@@ -235,6 +236,7 @@ class SourceObjItemsAPIView(LoginRequiredMixin, View):
|
||||
# Get parameter data
|
||||
param = getattr(objitem, 'parameter_obj', None)
|
||||
satellite_name = '-'
|
||||
satellite_id = None
|
||||
frequency = '-'
|
||||
freq_range = '-'
|
||||
polarization = '-'
|
||||
@@ -248,11 +250,12 @@ class SourceObjItemsAPIView(LoginRequiredMixin, View):
|
||||
parameter_id = param.id
|
||||
if hasattr(param, 'id_satellite') and param.id_satellite:
|
||||
satellite_name = param.id_satellite.name
|
||||
frequency = f"{param.frequency:.3f}" if param.frequency is not None else '-'
|
||||
freq_range = f"{param.freq_range:.3f}" if param.freq_range is not None else '-'
|
||||
satellite_id = param.id_satellite.id
|
||||
frequency = format_frequency(param.frequency)
|
||||
freq_range = format_frequency(param.freq_range)
|
||||
if hasattr(param, 'polarization') and param.polarization:
|
||||
polarization = param.polarization.name
|
||||
bod_velocity = f"{param.bod_velocity:.0f}" if param.bod_velocity is not None else '-'
|
||||
bod_velocity = format_symbol_rate(param.bod_velocity)
|
||||
if hasattr(param, 'modulation') and param.modulation:
|
||||
modulation = param.modulation.name
|
||||
if hasattr(param, 'standard') and param.standard:
|
||||
@@ -272,11 +275,7 @@ class SourceObjItemsAPIView(LoginRequiredMixin, View):
|
||||
geo_location = objitem.geo_obj.location or '-'
|
||||
|
||||
if objitem.geo_obj.coords:
|
||||
longitude = objitem.geo_obj.coords.coords[0]
|
||||
latitude = objitem.geo_obj.coords.coords[1]
|
||||
lon = f"{longitude}E" if longitude > 0 else f"{abs(longitude)}W"
|
||||
lat = f"{latitude}N" if latitude > 0 else f"{abs(latitude)}S"
|
||||
geo_coords = f"{lat} {lon}"
|
||||
geo_coords = format_coords_display(objitem.geo_obj.coords)
|
||||
|
||||
# Get created/updated info
|
||||
created_at = '-'
|
||||
@@ -332,6 +331,7 @@ class SourceObjItemsAPIView(LoginRequiredMixin, View):
|
||||
'id': objitem.id,
|
||||
'name': objitem.name or '-',
|
||||
'satellite_name': satellite_name,
|
||||
'satellite_id': satellite_id,
|
||||
'frequency': frequency,
|
||||
'freq_range': freq_range,
|
||||
'polarization': polarization,
|
||||
@@ -454,12 +454,12 @@ class TransponderDataAPIView(LoginRequiredMixin, View):
|
||||
'id': transponder.id,
|
||||
'name': transponder.name or '-',
|
||||
'satellite': transponder.sat_id.name if transponder.sat_id else '-',
|
||||
'downlink': f"{transponder.downlink:.3f}" if transponder.downlink else '-',
|
||||
'uplink': f"{transponder.uplink:.3f}" if transponder.uplink else None,
|
||||
'frequency_range': f"{transponder.frequency_range:.3f}" if transponder.frequency_range else '-',
|
||||
'downlink': format_frequency(transponder.downlink),
|
||||
'uplink': format_frequency(transponder.uplink) if transponder.uplink else None,
|
||||
'frequency_range': format_frequency(transponder.frequency_range),
|
||||
'polarization': transponder.polarization.name if transponder.polarization else '-',
|
||||
'zone_name': transponder.zone_name or '-',
|
||||
'transfer': f"{transponder.transfer:.3f}" if transponder.transfer else None,
|
||||
'transfer': format_frequency(transponder.transfer) if transponder.transfer else None,
|
||||
'snr': f"{transponder.snr:.1f}" if transponder.snr is not None else None,
|
||||
'created_at': created_at_str,
|
||||
'created_by': created_by_str,
|
||||
@@ -470,3 +470,57 @@ class TransponderDataAPIView(LoginRequiredMixin, View):
|
||||
return JsonResponse({'error': 'Транспондер не найден'}, status=404)
|
||||
except Exception as e:
|
||||
return JsonResponse({'error': str(e)}, status=500)
|
||||
|
||||
|
||||
class SatelliteDataAPIView(LoginRequiredMixin, View):
|
||||
"""API endpoint for getting Satellite data."""
|
||||
|
||||
def get(self, request, satellite_id):
|
||||
from ..models import Satellite
|
||||
|
||||
try:
|
||||
satellite = Satellite.objects.prefetch_related(
|
||||
'band',
|
||||
'created_by__user',
|
||||
'updated_by__user'
|
||||
).get(id=satellite_id)
|
||||
|
||||
# Format dates
|
||||
created_at_str = '-'
|
||||
if satellite.created_at:
|
||||
local_time = timezone.localtime(satellite.created_at)
|
||||
created_at_str = local_time.strftime("%d.%m.%Y %H:%M")
|
||||
|
||||
updated_at_str = '-'
|
||||
if satellite.updated_at:
|
||||
local_time = timezone.localtime(satellite.updated_at)
|
||||
updated_at_str = local_time.strftime("%d.%m.%Y %H:%M")
|
||||
|
||||
launch_date_str = '-'
|
||||
if satellite.launch_date:
|
||||
launch_date_str = satellite.launch_date.strftime("%d.%m.%Y")
|
||||
|
||||
# Get bands
|
||||
bands_list = list(satellite.band.values_list('name', flat=True))
|
||||
bands_str = ', '.join(bands_list) if bands_list else '-'
|
||||
|
||||
data = {
|
||||
'id': satellite.id,
|
||||
'name': satellite.name,
|
||||
'norad': satellite.norad if satellite.norad else '-',
|
||||
'undersat_point': f"{satellite.undersat_point}°" if satellite.undersat_point is not None else '-',
|
||||
'bands': bands_str,
|
||||
'launch_date': launch_date_str,
|
||||
'url': satellite.url or None,
|
||||
'comment': satellite.comment or '-',
|
||||
'created_at': created_at_str,
|
||||
'created_by': str(satellite.created_by) if satellite.created_by else '-',
|
||||
'updated_at': updated_at_str,
|
||||
'updated_by': str(satellite.updated_by) if satellite.updated_by else '-',
|
||||
}
|
||||
|
||||
return JsonResponse(data)
|
||||
except Satellite.DoesNotExist:
|
||||
return JsonResponse({'error': 'Спутник не найден'}, status=404)
|
||||
except Exception as e:
|
||||
return JsonResponse({'error': str(e)}, status=500)
|
||||
|
||||
Reference in New Issue
Block a user