Процесс переделки
This commit is contained in:
@@ -201,6 +201,32 @@ class Standard(models.Model):
|
||||
verbose_name_plural = "Стандарты"
|
||||
ordering = ["name"]
|
||||
|
||||
class Band(models.Model):
|
||||
name = models.CharField(
|
||||
max_length=50,
|
||||
unique=True,
|
||||
verbose_name="Название",
|
||||
help_text="Название диапазона",
|
||||
)
|
||||
border_start = models.FloatField(
|
||||
blank=True,
|
||||
null=True,
|
||||
verbose_name="Нижняя граница диапазона, МГц"
|
||||
)
|
||||
border_end = models.FloatField(
|
||||
blank=True,
|
||||
null=True,
|
||||
verbose_name="Верхняя граница диапазона, МГц"
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Диапазон"
|
||||
verbose_name_plural = "Диапазоны"
|
||||
ordering = ["name"]
|
||||
|
||||
|
||||
class Satellite(models.Model):
|
||||
"""
|
||||
@@ -223,6 +249,66 @@ class Satellite(models.Model):
|
||||
verbose_name="NORAD ID",
|
||||
help_text="Идентификатор NORAD для отслеживания спутника",
|
||||
)
|
||||
band = models.ManyToManyField(
|
||||
Band,
|
||||
related_name="bands",
|
||||
verbose_name="Диапазоны",
|
||||
blank=True,
|
||||
help_text="Диапазоны работы спутника",
|
||||
)
|
||||
undersat_point = models.FloatField(
|
||||
blank=True,
|
||||
null=True,
|
||||
verbose_name="Подспутниковая точка, градусы",
|
||||
help_text="Подспутниковая точка в градусах. Восточное полушарие с +, западное с -",
|
||||
)
|
||||
url = models.URLField(
|
||||
blank=True,
|
||||
null=True,
|
||||
verbose_name="Ссылка на источник",
|
||||
help_text="Ссылка на сайт, где можно проверить информацию",
|
||||
)
|
||||
comment = models.TextField(
|
||||
blank=True,
|
||||
null=True,
|
||||
verbose_name="Комментарий",
|
||||
help_text="Любой возможный комменатрий",
|
||||
)
|
||||
launch_date = models.DateField(
|
||||
blank=True,
|
||||
null=True,
|
||||
verbose_name="Дата запуска",
|
||||
help_text="Дата запуска спутника",
|
||||
)
|
||||
|
||||
created_at = models.DateTimeField(
|
||||
auto_now_add=True,
|
||||
verbose_name="Дата создания",
|
||||
help_text="Дата и время создания записи",
|
||||
)
|
||||
created_by = models.ForeignKey(
|
||||
CustomUser,
|
||||
on_delete=models.SET_NULL,
|
||||
related_name="satellite_created",
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Создан пользователем",
|
||||
help_text="Пользователь, создавший запись",
|
||||
)
|
||||
updated_at = models.DateTimeField(
|
||||
auto_now=True,
|
||||
verbose_name="Дата последнего изменения",
|
||||
help_text="Дата и время последнего изменения",
|
||||
)
|
||||
updated_by = models.ForeignKey(
|
||||
CustomUser,
|
||||
on_delete=models.SET_NULL,
|
||||
related_name="satellite_updated",
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Изменен пользователем",
|
||||
help_text="Пользователь, последним изменивший запись",
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
@@ -283,11 +369,73 @@ class ObjItemManager(models.Manager):
|
||||
return self.get_queryset().by_user(user)
|
||||
|
||||
|
||||
class Source(models.Model):
|
||||
"""
|
||||
Модель источника сигнала.
|
||||
"""
|
||||
|
||||
coords_kupsat = gis.PointField(
|
||||
srid=4326,
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Координаты Кубсата",
|
||||
help_text="Координаты, полученные от кубсата (WGS84)",
|
||||
)
|
||||
coords_valid = gis.PointField(
|
||||
srid=4326,
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Координаты оперативников",
|
||||
help_text="Координаты, предоставленные оперативным отделом (WGS84)",
|
||||
)
|
||||
coords_reference = gis.PointField(
|
||||
srid=4326,
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Координаты справочные",
|
||||
help_text="Координаты, ещё кем-то проверенные (WGS84)",
|
||||
)
|
||||
|
||||
created_at = models.DateTimeField(
|
||||
auto_now_add=True,
|
||||
verbose_name="Дата создания",
|
||||
help_text="Дата и время создания записи",
|
||||
)
|
||||
created_by = models.ForeignKey(
|
||||
CustomUser,
|
||||
on_delete=models.SET_NULL,
|
||||
related_name="source_created",
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Создан пользователем",
|
||||
help_text="Пользователь, создавший запись",
|
||||
)
|
||||
updated_at = models.DateTimeField(
|
||||
auto_now=True,
|
||||
verbose_name="Дата последнего изменения",
|
||||
help_text="Дата и время последнего изменения",
|
||||
)
|
||||
updated_by = models.ForeignKey(
|
||||
CustomUser,
|
||||
on_delete=models.SET_NULL,
|
||||
related_name="source_updated",
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Изменен пользователем",
|
||||
help_text="Пользователь, последним изменивший запись",
|
||||
)
|
||||
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Источник"
|
||||
verbose_name_plural = "Источники"
|
||||
|
||||
|
||||
class ObjItem(models.Model):
|
||||
"""
|
||||
Модель объекта (источника сигнала).
|
||||
Модель точки ГЛ.
|
||||
|
||||
Центральная модель, объединяющая информацию о ВЧ параметрах, геолокации и типе источника.
|
||||
Центральная модель, объединяющая информацию о ВЧ параметрах, геолокации.
|
||||
"""
|
||||
|
||||
# Основные поля
|
||||
@@ -299,6 +447,22 @@ class ObjItem(models.Model):
|
||||
db_index=True,
|
||||
help_text="Название объекта/источника сигнала",
|
||||
)
|
||||
source = models.ForeignKey(
|
||||
Source,
|
||||
on_delete=models.CASCADE,
|
||||
null=True,
|
||||
verbose_name="ИРИ",
|
||||
related_name="source",
|
||||
)
|
||||
transponder = models.ForeignKey(
|
||||
"mapsapp.Transponders",
|
||||
on_delete=models.SET_NULL,
|
||||
related_name="transponder",
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Транспондер",
|
||||
help_text="Транспондер, с помощью которого была получена точка",
|
||||
)
|
||||
|
||||
# Метаданные
|
||||
created_at = models.DateTimeField(
|
||||
@@ -679,46 +843,32 @@ class Geo(models.Model):
|
||||
verbose_name="Координата геолокации",
|
||||
help_text="Основные координаты геолокации (WGS84)",
|
||||
)
|
||||
coords_kupsat = gis.PointField(
|
||||
srid=4326,
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Координаты Кубсата",
|
||||
help_text="Координаты, полученные от кубсата (WGS84)",
|
||||
)
|
||||
coords_valid = gis.PointField(
|
||||
srid=4326,
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Координаты оперативников",
|
||||
help_text="Координаты, предоставленные оперативным отделом (WGS84)",
|
||||
)
|
||||
|
||||
# Вычисляемые поля - расстояния
|
||||
distance_coords_kup = models.GeneratedField(
|
||||
expression=functions.Distance("coords", "coords_kupsat") / 1000,
|
||||
output_field=models.FloatField(),
|
||||
db_persist=True,
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Расстояние между кубсатом и гео, км",
|
||||
)
|
||||
distance_coords_valid = models.GeneratedField(
|
||||
expression=functions.Distance("coords", "coords_valid") / 1000,
|
||||
output_field=models.FloatField(),
|
||||
db_persist=True,
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Расстояние между гео и оперативным отделом, км",
|
||||
)
|
||||
distance_kup_valid = models.GeneratedField(
|
||||
expression=functions.Distance("coords_valid", "coords_kupsat") / 1000,
|
||||
output_field=models.FloatField(),
|
||||
db_persist=True,
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Расстояние между кубсатом и оперативным отделом, км",
|
||||
)
|
||||
# distance_coords_kup = models.GeneratedField(
|
||||
# expression=functions.Distance("coords", "coords_kupsat") / 1000,
|
||||
# output_field=models.FloatField(),
|
||||
# db_persist=True,
|
||||
# null=True,
|
||||
# blank=True,
|
||||
# verbose_name="Расстояние между кубсатом и гео, км",
|
||||
# )
|
||||
# distance_coords_valid = models.GeneratedField(
|
||||
# expression=functions.Distance("coords", "coords_valid") / 1000,
|
||||
# output_field=models.FloatField(),
|
||||
# db_persist=True,
|
||||
# null=True,
|
||||
# blank=True,
|
||||
# verbose_name="Расстояние между гео и оперативным отделом, км",
|
||||
# )
|
||||
# distance_kup_valid = models.GeneratedField(
|
||||
# expression=functions.Distance("coords_valid", "coords_kupsat") / 1000,
|
||||
# output_field=models.FloatField(),
|
||||
# db_persist=True,
|
||||
# null=True,
|
||||
# blank=True,
|
||||
# verbose_name="Расстояние между кубсатом и оперативным отделом, км",
|
||||
# )
|
||||
|
||||
# Связи
|
||||
mirrors = models.ManyToManyField(
|
||||
|
||||
Reference in New Issue
Block a user