more apps

This commit is contained in:
2024-04-26 12:43:00 +03:00
parent 52b209b176
commit 69a2160eb7
536 changed files with 33118 additions and 0 deletions

0
genericsource/__init__.py Executable file
View File

3
genericsource/admin.py Executable file
View File

@@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

5
genericsource/apps.py Executable file
View File

@@ -0,0 +1,5 @@
from django.apps import AppConfig
class GenericsourceConfig(AppConfig):
name = 'genericsource'

View File

@@ -0,0 +1,105 @@
# Generated by Django 2.2.6 on 2020-05-01 14:59
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('contenttypes', '0002_remove_content_type_name'),
]
operations = [
migrations.CreateModel(
name='GenericCatalog',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(blank=True, max_length=21)),
('nsource', models.IntegerField(default=0)),
('created', models.DateTimeField(auto_now_add=True)),
('modified', models.DateTimeField(auto_now=True)),
('start', models.DateTimeField(blank=True)),
('stop', models.DateTimeField(blank=True)),
('mjd_start', models.FloatField(default=0.0)),
('mjd_stop', models.FloatField(default=0.0)),
('tfield', models.FloatField(default=0.0)),
('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_genericsource.genericcatalog_set+', to='contenttypes.ContentType')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
),
migrations.CreateModel(
name='GenericConnection',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('separation', models.FloatField(default=0.0)),
('probability', models.FloatField(default=1.0)),
],
),
migrations.CreateModel(
name='GenericSource',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('healpix', models.BigIntegerField(db_index=True, default=0)),
('healpix_plate', models.IntegerField(db_index=True, default=0)),
('ra', models.FloatField(default=0.0)),
('dec', models.FloatField(default=0.0)),
('lii', models.FloatField(default=0.0)),
('bii', models.FloatField(default=0.0)),
('error_radius', models.FloatField(default=0.0)),
('sxflux', models.FloatField(default=0.0)),
('mjdobs', models.FloatField(default=0.0)),
('name', models.CharField(blank=True, default='', max_length=50)),
('catalog', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='genericsource.GenericCatalog')),
('connections', models.ManyToManyField(through='genericsource.GenericConnection', to='genericsource.GenericSource')),
('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_genericsource.genericsource_set+', to='contenttypes.ContentType')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
),
migrations.CreateModel(
name='SourceComment',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('text', models.TextField(max_length=1000)),
('src', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='genericsource.GenericSource')),
],
),
migrations.AddField(
model_name='genericconnection',
name='connected',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='connected', to='genericsource.GenericSource'),
),
migrations.AddField(
model_name='genericconnection',
name='connectto',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='connectto', to='genericsource.GenericSource'),
),
migrations.CreateModel(
name='ConnectionComment',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('text', models.TextField(max_length=1000)),
('connection', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='genericsource.GenericConnection')),
],
),
migrations.CreateModel(
name='CatalogComment',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('text', models.TextField(max_length=10000)),
('catalog', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='genericsource.GenericCatalog')),
],
),
migrations.AlterUniqueTogether(
name='genericconnection',
unique_together={('connectto', 'connected')},
),
]

View File

@@ -0,0 +1,22 @@
# Generated by Django 2.2.6 on 2020-06-01 19:48
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('genericsource', '0001_initial'),
]
operations = [
migrations.RemoveField(
model_name='genericsource',
name='catalog',
),
migrations.AddField(
model_name='genericsource',
name='catalog',
field=models.ManyToManyField(to='genericsource.GenericCatalog'),
),
]

View File

@@ -0,0 +1,29 @@
# Generated by Django 2.2.6 on 2020-06-26 07:00
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('genericsource', '0002_auto_20200601_2248'),
]
operations = [
migrations.AddField(
model_name='sourcecomment',
name='author',
field=models.ForeignKey(default=3, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
preserve_default=False,
),
migrations.AddField(
model_name='sourcecomment',
name='created',
field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now),
preserve_default=False,
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 2.2.6 on 2020-06-26 12:23
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('genericsource', '0003_auto_20200626_1000'),
]
operations = [
migrations.AlterField(
model_name='genericcatalog',
name='name',
field=models.CharField(blank=True, max_length=51),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 3.0.8 on 2020-08-27 13:27
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('genericsource', '0004_auto_20200626_1523'),
]
operations = [
migrations.AddField(
model_name='genericsource',
name='src_class',
field=models.CharField(default='', max_length=21),
),
]

View File

@@ -0,0 +1,28 @@
# Generated by Django 3.0.8 on 2020-09-11 09:41
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('genericsource', '0005_genericsource_src_class'),
]
operations = [
migrations.CreateModel(
name='SrcAuxDATA',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('spec', models.CharField(default='', max_length=101)),
('arf', models.CharField(default='', max_length=101)),
('rmf', models.CharField(default='', max_length=101)),
('bkg', models.CharField(default='', max_length=101)),
('img', models.CharField(default='', max_length=101)),
('reg', models.CharField(default='', max_length=101)),
('log', models.CharField(default='', max_length=101)),
('src', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='genericsource.GenericSource')),
],
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 3.0.8 on 2020-09-11 17:00
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('genericsource', '0006_srcauxdata'),
]
operations = [
migrations.AddField(
model_name='srcauxdata',
name='specimg',
field=models.CharField(default='', max_length=101),
),
]

View File

@@ -0,0 +1,21 @@
# Generated by Django 3.0.8 on 2020-09-16 07:33
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('genericsource', '0007_srcauxdata_specimg'),
]
operations = [
migrations.CreateModel(
name='GenericCatalogsGroup',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(blank=True, max_length=51)),
('catalog', models.ManyToManyField(to='genericsource.GenericCatalog')),
],
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 3.0.8 on 2020-09-17 09:21
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('genericsource', '0008_genericcatalogsgroup'),
]
operations = [
migrations.AddField(
model_name='srcauxdata',
name='xcm',
field=models.CharField(default='', max_length=101),
),
]

View File

@@ -0,0 +1,17 @@
# Generated by Django 3.0.8 on 2020-10-23 14:29
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('genericsource', '0009_srcauxdata_xcm'),
]
operations = [
migrations.AlterModelOptions(
name='sourcecomment',
options={'ordering': ['created']},
),
]

View File

@@ -0,0 +1,28 @@
# Generated by Django 3.0.8 on 2020-11-03 10:25
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('genericsource', '0010_auto_20201023_1729'),
]
operations = [
migrations.AddField(
model_name='srcauxdata',
name='gamma',
field=models.FloatField(default=0.0),
),
migrations.AddField(
model_name='srcauxdata',
name='gammael',
field=models.FloatField(default=0.0),
),
migrations.AddField(
model_name='srcauxdata',
name='gammaeu',
field=models.FloatField(default=0.0),
),
]

View File

@@ -0,0 +1,23 @@
# Generated by Django 3.0.8 on 2020-11-04 16:15
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('genericsource', '0011_auto_20201103_1325'),
]
operations = [
migrations.AddField(
model_name='srcauxdata',
name='nH',
field=models.FloatField(default=0.0),
),
migrations.AddField(
model_name='srcauxdata',
name='norm',
field=models.FloatField(default=0.0),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 3.0.8 on 2020-11-06 15:17
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('genericsource', '0012_auto_20201104_1915'),
]
operations = [
migrations.RenameField(
model_name='srcauxdata',
old_name='nH',
new_name='nh',
),
]

View File

@@ -0,0 +1,23 @@
# Generated by Django 3.0.8 on 2020-11-12 10:03
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('genericsource', '0013_auto_20201106_1817'),
]
operations = [
migrations.AddField(
model_name='srcauxdata',
name='lcfits',
field=models.CharField(default='', max_length=101),
),
migrations.AddField(
model_name='srcauxdata',
name='lcpdf',
field=models.CharField(default='', max_length=101),
),
]

View File

@@ -0,0 +1,27 @@
# Generated by Django 3.0.8 on 2020-11-12 10:17
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('genericsource', '0014_auto_20201112_1303'),
]
operations = [
migrations.CreateModel(
name='GSBibliogrpahy',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(default='', max_length=1000)),
('code', models.CharField(default='', max_length=100)),
('addedat', models.DateTimeField(auto_now_add=True)),
('addedby', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
('srcs', models.ManyToManyField(to='genericsource.GenericSource')),
],
),
]

View File

@@ -0,0 +1,58 @@
# Generated by Django 3.2.10 on 2021-12-29 09:59
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('genericsource', '0015_gsbibliogrpahy'),
]
operations = [
migrations.AlterField(
model_name='catalogcomment',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='connectioncomment',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='genericcatalog',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='genericcatalogsgroup',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='genericconnection',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='genericsource',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='gsbibliogrpahy',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='sourcecomment',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='srcauxdata',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
]

View File

127
genericsource/models.py Executable file
View File

@@ -0,0 +1,127 @@
from django.db import models
from django.contrib.auth.models import User
from astropy.coordinates import SkyCoord
from polymorphic.models import PolymorphicModel
import datetime
class GenericCatalog(PolymorphicModel):
""" Base class for eRosita daily source list """
name = models.CharField(max_length=51, blank=True)
""" Unique ObsID """
nsource = models.IntegerField(default=0)
""" Number of sources in catalog """
created = models.DateTimeField(auto_now_add=True)
""" Date and time of creation. Fully automatic. """
modified = models.DateTimeField(auto_now=True)
""" Date and time of the last modification. Fully automatic. """
start = models.DateTimeField(blank=True)
""" Start date and time """
stop = models.DateTimeField(blank=True)
""" Stop date and time """
mjd_start = models.FloatField(default=0.0)
""" MJD start """
mjd_stop = models.FloatField(default=0.0)
""" MJD stop """
ordering = ['-mjd_start',]
tfield = models.FloatField(default=0.0)
class GenericCatalogsGroup(models.Model):
name = models.CharField(max_length=51, blank=True)
catalog = models.ManyToManyField(GenericCatalog) #, on_delete=models.CASCADE)
class GenericSource(PolymorphicModel):
"""
General class for a source, described with two sets of spherical coordinates (assumed fk5 and Gal)
some overhead, appended here is softxflux - which is useless for sources, obtained not in X-ray flux
but very helpfull for X-ray transient search
"""
catalog = models.ManyToManyField(GenericCatalog) #, on_delete=models.CASCADE)
healpix = models.BigIntegerField(db_index=True, default=0)
healpix_plate = models.IntegerField(db_index=True, default=0)
src_class = models.CharField(max_length=21, default="")
ra = models.FloatField(default=0.0)
""" Right Ascension of the Source """
dec = models.FloatField(default=0.0)
""" Declination of the Source """
lii = models.FloatField(default=0.0)
""" Galactic Longitude """
bii = models.FloatField(default=0.0)
""" Galactic Latitude """
error_radius = models.FloatField(default=0.0)
""" Positional Uncertainty (arcsec) """
sxflux = models.FloatField(default=0.0)
""" x-ray flux in 0.5-2 keV (required for transients search)"""
mjdobs = models.FloatField(default=0.0)
""" observation date in mjd """
connections = models.ManyToManyField("self", through="GenericConnection",
symmetrical=False)
name = models.CharField(max_length=50,blank=True, default='')
""" Source name """
def description(self):
return self.__class__.__name__
def get_absolute_url(self):
return "/genericsource/%i/source" % (self.pk)
def add_neighbours(self, obj):
sc = SkyCoord(self.ra, self.dec, unit="deg", frame="fk5")
if issubclass(type(obj), GenericSource): obj = [obj,]
for src in obj:
scother = SkyCoord(src.ra, src.dec, unit="deg", frame="fk5")
GenericConnection(connectto=self, connected=src,
separation=sc.separation(scother).arcsec).save()
GenericConnection(connectto=src, connected=self,
separation=sc.separation(scother).arcsec).save()
class GenericConnection(models.Model):
connectto = models.ForeignKey(GenericSource, on_delete=models.CASCADE, related_name="connectto")
connected = models.ForeignKey(GenericSource, on_delete=models.CASCADE, related_name="connected")
separation = models.FloatField(default=0.)
probability = models.FloatField(default=1.)
class Meta:
unique_together = ('connectto', 'connected')
class SourceComment(models.Model):
src = models.ForeignKey(GenericSource, on_delete=models.CASCADE)
author = models.ForeignKey(User, on_delete=models.CASCADE)
created = models.DateTimeField(auto_now_add=True)
text = models.TextField(max_length=1000)
class Meta:
ordering = ["created", ]
class ConnectionComment(models.Model):
connection = models.ForeignKey(GenericConnection, on_delete=models.CASCADE)
text = models.TextField(max_length=1000)
class CatalogComment(models.Model):
catalog = models.ForeignKey(GenericCatalog, on_delete=models.CASCADE)
text = models.TextField(max_length=10000)
class SrcAuxDATA(models.Model):
src = models.OneToOneField(GenericSource, on_delete=models.CASCADE)
spec = models.CharField(max_length=101, default="")
specimg = models.CharField(max_length=101, default="")
arf = models.CharField(max_length=101, default="")
rmf = models.CharField(max_length=101, default="")
bkg = models.CharField(max_length=101, default="")
img = models.CharField(max_length=101, default="")
reg = models.CharField(max_length=101, default="")
log = models.CharField(max_length=101, default="")
xcm = models.CharField(max_length=101, default="")
lcfits = models.CharField(max_length=101, default="")
lcpdf = models.CharField(max_length=101, default="")
gamma = models.FloatField(default=0.)
gammaeu = models.FloatField(default=0.)
gammael = models.FloatField(default=0.)
nh = models.FloatField(default=0.)
norm = models.FloatField(default=0.)
class GSBibliogrpahy(models.Model):
title = models.CharField(max_length=1000, default="")
code = models.CharField(max_length=100, default="")
addedby = models.ForeignKey(User, on_delete=models.CASCADE)
addedat = models.DateTimeField(auto_now_add=True)
srcs = models.ManyToManyField(GenericSource)

3
genericsource/tests.py Executable file
View File

@@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

8
genericsource/urls.py Normal file
View File

@@ -0,0 +1,8 @@
from django.urls import path
from . import views
app_name = "genericsource"
urlpatterns = [path('<int:source_id>/source', views.show_source, name='show source'),
path('add_comment', views.add_comment, name='gs add comment')
]

34
genericsource/views.py Executable file
View File

@@ -0,0 +1,34 @@
from django.shortcuts import render
from srglib.utils import srg_group_auth, srg_group_auth_stats, status_code
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden
from genericsource.models import GenericSource, SourceComment
def add_comment(request):
if request.method == 'POST':
text = request.POST['text']
if "cid" in request.POST:
s = SourceComment.objects.get(id=request.POST["cid"])
if text == "":
s.delete()
else:
s.text = text
s.save()
else:
SourceComment.objects.create(author=request.user, text=text, src=GenericSource.objects.get(id=request.POST["srcid"]))
return HttpResponse("comment added")
def show_source(request, source_id):
status=srg_group_auth_stats(request, "srg-erosita-transients")
if status != 0:
return HttpResponse(status_code[status])
try:
src=GenericSource.objects.get(id=source_id)
except:
return HttpResponse("This genericsource was not found %s " % source_id)
cat = src.catalog.order_by("created").first()
res = {'src':src, "cat":cat}
return render(request,'erositadailycatalogues/viewsource.html', res)