268 lines
12 KiB
Python
268 lines
12 KiB
Python
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,})
|