1
0
Fork 0

Move app's signals and methods to seperate file

Signed-off-by: Alfredos-Panagiotis Damkalis <fredy@fredy.gr>
spacecruft
Alfredos-Panagiotis Damkalis 2020-09-22 09:22:18 +03:00
parent 74fd41b2a8
commit ae48ac7008
4 changed files with 59 additions and 40 deletions

View File

@ -0,0 +1,2 @@
"""SatNOGS DB Base app initialization"""
default_app_config = 'db.base.apps.BaseConfig' # pylint: disable=C0103

11
db/base/apps.py 100644
View File

@ -0,0 +1,11 @@
"""SatNOGS DB Base app config"""
from django.apps import AppConfig
class BaseConfig(AppConfig):
"""Set configuration of the SatNOGS DB Base app"""
name = 'db.base'
verbose_name = "Base"
def ready(self):
from db.base import signals # noqa: F401; pylint: disable=C0415,W0611

View File

@ -3,7 +3,6 @@ import logging
from os import path
from uuid import uuid4
import h5py
import satnogsdecoders
from django.conf import settings
from django.contrib.auth import get_user_model
@ -13,14 +12,11 @@ from django.core.validators import MaxLengthValidator, MaxValueValidator, \
MinLengthValidator, MinValueValidator, URLValidator
from django.db import models
from django.db.models import OuterRef, Subquery
from django.db.models.signals import post_save, pre_save
from django.utils.timezone import now
from django_countries.fields import CountryField
from markdown import markdown
from shortuuidfield import ShortUUIDField
from db.base.helpers import gridsquare
LOGGER = logging.getLogger('db')
DATA_SOURCES = ['manual', 'network', 'sids']
@ -62,35 +58,6 @@ def _name_payload_frame(instance, filename): # pylint: disable=W0613
return path.join(folder, filename)
def _gen_observer(sender, instance, created, **kwargs): # pylint: disable=W0613
post_save.disconnect(_gen_observer, sender=DemodData)
try:
qth = gridsquare(instance.lat, instance.lng)
except Exception: # pylint: disable=W0703
instance.observer = 'Unknown'
else:
instance.observer = '{0}-{1}'.format(instance.station, qth)
instance.save()
post_save.connect(_gen_observer, sender=DemodData)
def _set_is_decoded(sender, instance, **kwargs): # pylint: disable=W0613
"""Returns true if payload_decoded has data"""
instance.is_decoded = instance.payload_decoded != ''
def _extract_network_obs_id(sender, instance, created, **kwargs): # pylint: disable=W0613
post_save.disconnect(_extract_network_obs_id, sender=Artifact)
try:
with h5py.File(instance.artifact_file, 'r') as h5_file:
instance.network_obs_id = h5_file.attrs["observation_id"]
except OSError as error:
LOGGER.warning(error)
instance.save()
post_save.connect(_extract_network_obs_id, sender=Artifact)
class Mode(models.Model):
"""A satellite transmitter RF mode. For example: FM"""
name = models.CharField(max_length=25, unique=True)
@ -666,10 +633,6 @@ class DemodData(models.Model):
return None
post_save.connect(_gen_observer, sender=DemodData)
pre_save.connect(_set_is_decoded, sender=DemodData)
class ExportedFrameset(models.Model):
"""Model for exported frames."""
created = models.DateTimeField(auto_now_add=True)
@ -689,6 +652,3 @@ class Artifact(models.Model):
def __str__(self):
return 'artifact-{0}'.format(self.id)
post_save.connect(_extract_network_obs_id, sender=Artifact)

46
db/base/signals.py 100644
View File

@ -0,0 +1,46 @@
"""Django signals for SatNOGS DB"""
import logging
import h5py
from django.db.models.signals import post_save, pre_save
from db.base.helpers import gridsquare
from db.base.models import Artifact, DemodData
LOGGER = logging.getLogger('db')
def _gen_observer(sender, instance, created, **kwargs): # pylint: disable=W0613
post_save.disconnect(_gen_observer, sender=DemodData)
try:
qth = gridsquare(instance.lat, instance.lng)
except Exception: # pylint: disable=W0703
instance.observer = 'Unknown'
else:
instance.observer = '{0}-{1}'.format(instance.station, qth)
instance.save()
post_save.connect(_gen_observer, sender=DemodData)
def _set_is_decoded(sender, instance, **kwargs): # pylint: disable=W0613
"""Returns true if payload_decoded has data"""
instance.is_decoded = instance.payload_decoded != ''
def _extract_network_obs_id(sender, instance, created, **kwargs): # pylint: disable=W0613
post_save.disconnect(_extract_network_obs_id, sender=Artifact)
try:
with h5py.File(instance.artifact_file, 'r') as h5_file:
instance.network_obs_id = h5_file.attrs["observation_id"]
except OSError as error:
LOGGER.warning(error)
instance.save()
post_save.connect(_extract_network_obs_id, sender=Artifact)
pre_save.connect(_set_is_decoded, sender=DemodData)
post_save.connect(_gen_observer, sender=DemodData)
post_save.connect(_extract_network_obs_id, sender=Artifact)