srg/monthplan/management/commands/real_time_track.py
2024-04-26 12:43:00 +03:00

92 lines
2.8 KiB
Python

from django.core.management.base import BaseCommand, CommandError
from datetime import datetime as dt
from datetime import date
from django.utils import dateparse
from logbook.models import LogBookPlan, LogBookDay
from plan.models import INPUT_DATA_DIR
from plan.models import LaunchDate
from srglib.utils import make_source_name
from monthplan.models import Head, Observation, Seance, Correction, Scan, Survey, FlightPlan
from astropy.io import fits
import datetime
from django.utils import timezone
from astropy.io import fits
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
#import xlrd
from astropy.table import Table
import math
from django.db.models import Q
def find_closest(now, closest_greater_qs, closest_less_qs):
try:
try:
closest_greater = closest_greater_qs[0]
except IndexError:
closest = closest_less_qs[0]
try:
closest_less = closest_less_qs[0]
except IndexError:
closest = closest_greater_qs[0]
except IndexError:
raise self.model.DoesNotExist("There is no closest object"
" because there are no objects.")
if closest_greater.dtime - now > now - closest_less.dtime:
closest = closest_less
else:
closest = closest_greater
return closest.ra, closest.dec
class Command(BaseCommand):
help = 'Initiates data base'
# def add_arguments(self, parser):
# parser.add_argument('poll_id', nargs='+', type=int)
def handle(self, *args, **options):
name = make_source_name('SRG A',0.87,45.0)
print(name)
return
now = timezone.localtime(timezone.now())
print(now)
ra='n/a'
dec='n/a'
request_path='load'
try:
surveys = Survey.objects.filter(Q(start__lte=now) & Q(stop__gte=now))
# take first element only:
for survey in surveys:
print(survey.ra_p)
target = survey.target
obsid = survey.experiment
url = survey.get_absolute_url()
ra="%.4f" % survey.ra_p
dec="%.4f" % survey.dec_p
mode='Survey'
if request_path == "load":
path=list(survey.surveypath_set.all().values('ra', 'dec'))[::500]
closest_greater_qs = survey.surveypath_set.filter(dtime__gt=now).order_by('dtime')
closest_less_qs = survey.surveypath_set.filter(dtime__lt=now).order_by('-dtime')
closest_ra, closest_dec = find_closest(now, closest_greater_qs, closest_less_qs)
ra="%.4f" % closest_ra
dec="%.4f" % closest_dec
print("*** closest found ***")
break
except NameError as error:
print('pass',error)
pass
print(ra, dec)