from django.shortcuts import render from astrobasis.models import ZTFAlert, ALeRCE from django.db.models import Q from srglib.utils import make_source_name from srglib.utils import srg_auth, srg_group_auth, srg_group_auth_stats, status_code from django.shortcuts import get_object_or_404 from heasarc.models import HeasarcBase from astropy import units as u from astropy.coordinates import SkyCoord from astropy.coordinates import ICRS, Galactic, FK5 from astropy.coordinates import BarycentricTrueEcliptic from astropy.coordinates import HeliocentricTrueEcliptic from astropy.coordinates import GeocentricTrueEcliptic from astropy_healpix import HEALPix from astropy.coordinates.name_resolve import get_icrs_coordinates from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden from astrobasis.models import Magnitude, MagnitudeForm from astrobasis.models import AstroBasisUserCat from astrobasis.models import AstroBasisUserCatForm # Create your views here. def index(request): """ status=srg_group_auth(request.user, "srg-erosita-transients") if status != 0: return HttpResponse(status_code[status]) """ #ztf_alerts = ZTFAlert.objects.all().order_by('-created') ztf_alerts = ALeRCE.objects.all() #.order_by('-created') ztf_ntotal=ztf_alerts.count() agn_count = ALeRCE.objects.filter(classearly=18).count() sn_count = ALeRCE.objects.filter(classearly=19).count() vs_count = ALeRCE.objects.filter(classearly=20).count() asteroid_count = ALeRCE.objects.filter(classearly=21).count() bogus_count = ALeRCE.objects.filter(classearly=22).count() return render(request,'astrobasis/index.html', {#'ztf_alerts':ztf_alerts, 'ztf_ntotal':ztf_ntotal, 'agn_count':agn_count, 'sn_count':sn_count, 'vs_count':vs_count, 'asteroid_count':asteroid_count, 'bogus_count':bogus_count,}) def ztf_alerce_agn(request): ztf_alerts = ALeRCE.objects.filter(classearly=18).order_by('-created') ztf_ntotal=ztf_alerts.count() agn_count = ALeRCE.objects.filter(classearly=18).count() sn_count = ALeRCE.objects.filter(classearly=19).count() vs_count = ALeRCE.objects.filter(classearly=20).count() asteroid_count = ALeRCE.objects.filter(classearly=21).count() bogus_count = ALeRCE.objects.filter(classearly=22).count() return render(request,'astrobasis/index.html', {'ztf_alerts':ztf_alerts, 'ztf_ntotal':ztf_ntotal, 'agn_count':agn_count, 'sn_count':sn_count, 'vs_count':vs_count, 'asteroid_count':asteroid_count, 'bogus_count':bogus_count,}) def ztf_alerce_sn(request): ztf_alerts = ALeRCE.objects.filter(classearly=19).order_by('-created') ztf_ntotal=ztf_alerts.count() agn_count = ALeRCE.objects.filter(classearly=18).count() sn_count = ALeRCE.objects.filter(classearly=19).count() vs_count = ALeRCE.objects.filter(classearly=20).count() asteroid_count = ALeRCE.objects.filter(classearly=21).count() bogus_count = ALeRCE.objects.filter(classearly=22).count() return render(request,'astrobasis/index.html', {'ztf_alerts':ztf_alerts, 'ztf_ntotal':ztf_ntotal, 'agn_count':agn_count, 'sn_count':sn_count, 'vs_count':vs_count, 'asteroid_count':asteroid_count, 'bogus_count':bogus_count,}) def ztf_alerce_vs(request): ztf_alerts = ALeRCE.objects.filter(classearly=20).order_by('-created') ztf_ntotal=ztf_alerts.count() agn_count = ALeRCE.objects.filter(classearly=18).count() sn_count = ALeRCE.objects.filter(classearly=19).count() vs_count = ALeRCE.objects.filter(classearly=20).count() asteroid_count = ALeRCE.objects.filter(classearly=21).count() bogus_count = ALeRCE.objects.filter(classearly=22).count() return render(request,'astrobasis/index.html', {'ztf_alerts':ztf_alerts, 'ztf_ntotal':ztf_ntotal, 'agn_count':agn_count, 'sn_count':sn_count, 'vs_count':vs_count, 'asteroid_count':asteroid_count, 'bogus_count':bogus_count,}) def ztf_alerce_asteroid(request): ztf_alerts = ALeRCE.objects.filter(classearly=21).order_by('-created') ztf_ntotal=ztf_alerts.count() agn_count = ALeRCE.objects.filter(classearly=18).count() sn_count = ALeRCE.objects.filter(classearly=19).count() vs_count = ALeRCE.objects.filter(classearly=20).count() asteroid_count = ALeRCE.objects.filter(classearly=21).count() bogus_count = ALeRCE.objects.filter(classearly=22).count() return render(request,'astrobasis/index.html', {'ztf_alerts':ztf_alerts, 'ztf_ntotal':ztf_ntotal, 'agn_count':agn_count, 'sn_count':sn_count, 'vs_count':vs_count, 'asteroid_count':asteroid_count, 'bogus_count':bogus_count,}) def ztf_alerce_bogus(request): ztf_alerts = ALeRCE.objects.filter(classearly=22).order_by('-created') ztf_ntotal=ztf_alerts.count() agn_count = ALeRCE.objects.filter(classearly=18).count() sn_count = ALeRCE.objects.filter(classearly=19).count() vs_count = ALeRCE.objects.filter(classearly=20).count() asteroid_count = ALeRCE.objects.filter(classearly=21).count() bogus_count = ALeRCE.objects.filter(classearly=22).count() return render(request,'astrobasis/index.html', {'ztf_alerts':ztf_alerts,'ztf_ntotal':ztf_ntotal,'agn_count':agn_count, 'sn_count':sn_count, 'vs_count':vs_count, 'asteroid_count':asteroid_count, 'bogus_count':bogus_count,}) def show_ztf_alerce(request, alerce_pk): try: alerce=ALeRCE.objects.get(pk=alerce_pk) except: return HttpResponse("This ALeRCE ID was not found") erotrans_set = alerce.erotranssource_set.all() #erosurvey_set = alerce.erosurveysource_set.all() #artcat_set = alerce.artsource_set.all() return render(request,'astrobasis/show_ztf_alerce.html', {'alerce':alerce, #'artcat_set':artcat_set, #'erosurvey_set':erosurvey_set, 'erotrans_set':erotrans_set,}) def ztf_filter(request): """ status=srg_group_auth(request.user, "srg-erosita-transients") if status != 0: return HttpResponse(status_code[status]) """ ztf_alerts = ZTFAlert.objects.filter(Q(rb__gt=0.65) & Q(nbad=0) & Q(fwhm__lt=5) & Q(elong__lt=1.2) & Q(magdiff__gt=-0.1) & Q(magdiff__lt=0.1)).order_by('-created') ntotal=ztf_alerts.count() return render(request,'astrobasis/index.html', {'ztf_alerts':ztf_alerts,'ntotal':ntotal,}) def delete_astrobasis_source(request, source_id, heasarcbase_id): status=srg_group_auth_stats(request, "srg-artxc-catalog") if status != 0: return HttpResponse(status_code[status]) src = get_object_or_404(AstroBasisUserCat, pk=source_id) base = get_object_or_404(HeasarcBase, pk=heasarcbase_id) magns = src.magnitudes.all() magns.delete() src.delete() return HttpResponseRedirect(base.get_base_url()) def new_astrobasis_source(request, source_id): status=srg_group_auth_stats(request, "srg-artxc-catalog") if status != 0: return HttpResponse(status_code[status]) src = get_object_or_404(HeasarcBase, pk=source_id) c = SkyCoord(src.ra, src.dec, frame="fk5", unit="deg") if request.method == 'POST': form = AstroBasisUserCatForm(request.POST) if form.is_valid(): new_form=form.save(commit=False) #bibcode=form.cleaned_data['bibcode'] #notes=form.cleaned_data['notes'] ra=float(form.cleaned_data['ra']) dec=float(form.cleaned_data['dec']) name=form.cleaned_data['name'] autoname=form.cleaned_data['autoname'] if(autoname): new_form.name=make_source_name(name,ra,dec) new_form.autoname=False new_form.save() #healpix_usercat(new_form) #match_usercat_all(new_form) src.usercat.add(new_form) return HttpResponseRedirect(src.get_base_url()) else: pass form = AstroBasisUserCatForm() return render(request, 'astrobasis/usercat.html', {'form': form,'src':src,}) def delmagn(request, magnitude_id,heasarcbase_id): status=srg_group_auth_stats(request, "srg-artxc-catalog") if status != 0: return HttpResponse(status_code[status]) magn = get_object_or_404(Magnitude, pk=magnitude_id) base = get_object_or_404(HeasarcBase, pk=heasarcbase_id) magn.delete() return HttpResponseRedirect(base.get_base_url()) def addmagn_astrobasis_source(request, source_id,heasarcbase_id): status=srg_group_auth_stats(request, "srg-artxc-catalog") if status != 0: return HttpResponse(status_code[status]) src = get_object_or_404(AstroBasisUserCat, pk=source_id) base = get_object_or_404(HeasarcBase, pk=heasarcbase_id) if request.method == 'POST': form = MagnitudeForm(request.POST) if form.is_valid(): new_form=form.save(commit=False) magn=form.cleaned_data['magn'] band=form.cleaned_data['band'] new_form.save() src.magnitudes.add(new_form) return HttpResponseRedirect(base.get_base_url()) else: pass form = MagnitudeForm() return render(request, 'astrobasis/magnitude.html', {'form': form,'src':src,'base':base,}) def update_astrobasis_source(request, source_id, heasarcbase_id): status=srg_group_auth_stats(request, "srg-artxc-catalog") if status != 0: return HttpResponse(status_code[status]) src = get_object_or_404(AstroBasisUserCat, pk=source_id) base = get_object_or_404(HeasarcBase, pk=heasarcbase_id) if request.method == 'POST': form = AstroBasisUserCatForm(request.POST, instance=src) if form.is_valid(): new_form=form.save(commit=False) #bibcode=form.cleaned_data['bibcode'] #notes=form.cleaned_data['notes'] ra = float(form.cleaned_data['ra']) dec = float(form.cleaned_data['dec']) name = form.cleaned_data['name'] autoname = form.cleaned_data['autoname'] if(autoname): new_form.name=make_source_name(name,ra,dec) new_form.autoname=False new_form.save() #healpix_usercat(new_form) #match_usercat_all(new_form) #src.ra=ra #src.dec=dec #src.name=name #src.save() return HttpResponseRedirect(base.get_base_url()) else: pass form = AstroBasisUserCatForm(instance=src) return render(request, 'astrobasis/update_usercat.html', {'form': form,'src':src,'base':base,})