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'))