126 lines
3.6 KiB
Python
126 lines
3.6 KiB
Python
from django.core.management.base import BaseCommand, CommandError
|
|
|
|
from datetime import date
|
|
import datetime
|
|
from django.utils import timezone
|
|
import astropy
|
|
from astropy.io import ascii
|
|
import pandas as pd
|
|
import pymysql
|
|
from sqlalchemy import create_engine
|
|
|
|
from django.db.models import Q
|
|
|
|
from heasarc.models import HeasarcBase
|
|
from artsurvey.models import ArtSurveySource, ArtSurvey, EnergyBand
|
|
from srglib.utils import find_counterparts
|
|
from srgcat.models import SrgDataDump
|
|
|
|
def make_survey_replica(version,slug):
|
|
""" note that we don't copy catalogs, i.e. papers reletions """
|
|
|
|
|
|
""" delete all replicas of this survey """
|
|
try:
|
|
replicas = ArtSurvey.objects.filter(Q(version=version) & Q(parent__isnull=False))
|
|
for replica in replicas:
|
|
print("Delete Replica ArtSurvey {} --> {}".format(replica,replica.parent))
|
|
replicas.delete()
|
|
except ArtSurvey.DoesNotExist:
|
|
pass
|
|
|
|
|
|
|
|
""" For cloning select only original surveys, i.e. without parents """
|
|
try:
|
|
survey = ArtSurvey.objects.get(Q(version=version) & Q(parent=None))
|
|
except ArtSurvey.DoesNotExist:
|
|
print("For cloning select only original surveys, i.e. without parents")
|
|
print("Survey {} with parent=None not found".format(version))
|
|
return
|
|
|
|
|
|
|
|
print("use ArtSurvey {}".format(survey))
|
|
|
|
try:
|
|
band = EnergyBand.objects.get(slug=slug)
|
|
print("use EnergyBand {}".format(band))
|
|
except EnergyBand.DoesNotExist:
|
|
print("EnergyBand not found")
|
|
return
|
|
|
|
child = ArtSurvey(version=version,parent=survey)
|
|
child.save()
|
|
|
|
srcs = survey.artsurveysource_set.all().filter(band=band)
|
|
print("Selected {}".format(srcs.count()))
|
|
|
|
for src in srcs:
|
|
print("Cloning {}".format(src))
|
|
self_pk = src.pk
|
|
onames = src.othername_set.all()
|
|
for o in onames:
|
|
print("{} OtherNames {}".format(src,o))
|
|
ads = src.ads.all()
|
|
simbad = src.simbad.all()
|
|
nvss = src.nvss.all()
|
|
first = src.first.all()
|
|
sumss = src.sumss.all()
|
|
heasarc = src.heasarc.all()
|
|
allwise = src.allwise.all()
|
|
gaia3 = src.gaia3.all()
|
|
gaia3_primary = src.gaia3_primary
|
|
|
|
clone = src
|
|
clone.pk = None
|
|
clone.id = None
|
|
clone._state.adding = True
|
|
clone.survey = child
|
|
clone.save()
|
|
try:
|
|
parent = ArtSurveySource.objects.get(pk=self_pk)
|
|
except ArtSurveySource.DoesNotExist:
|
|
print("Parent source not found for {}".format(clone))
|
|
return
|
|
|
|
clone.parent = parent
|
|
clone.ads.set(ads)
|
|
clone.simbad.set(simbad)
|
|
clone.nvss.set(nvss)
|
|
clone.first.set(first)
|
|
clone.sumss.set(sumss)
|
|
clone.heasarc.set(heasarc)
|
|
clone.allwise.set(allwise)
|
|
clone.gaia3.set(gaia3)
|
|
|
|
""" clone OtherName """
|
|
for o in onames:
|
|
print("clone OtherName {}".format(o))
|
|
o.source=clone
|
|
o.pk=None
|
|
o.id=None
|
|
o._state.adding = True
|
|
o.save()
|
|
|
|
clone.save()
|
|
|
|
|
|
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = 'Initiates data dase'
|
|
|
|
def handle(self, *args, **options):
|
|
|
|
"""
|
|
bands = ['E0','E1','E2','E3','E4']
|
|
for slug in bands:
|
|
init_survey(12.5,'S12',slug)
|
|
"""
|
|
|
|
make_survey_replica(12.5,'E0')
|
|
|
|
self.stdout.write(self.style.SUCCESS('Done'))
|