Переосмыслил отметки по ВЧ загрузке. Улучшил статистику
This commit is contained in:
@@ -106,17 +106,18 @@ class ObjectOwnership(models.Model):
|
||||
|
||||
class ObjectMark(models.Model):
|
||||
"""
|
||||
Модель отметки о наличии объекта.
|
||||
Модель отметки о наличии сигнала.
|
||||
|
||||
Используется для фиксации моментов времени когда объект был обнаружен или отсутствовал.
|
||||
Используется для фиксации моментов времени когда сигнал был обнаружен или отсутствовал.
|
||||
Привязывается к записям технического анализа (TechAnalyze).
|
||||
"""
|
||||
|
||||
# Основные поля
|
||||
mark = models.BooleanField(
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="Наличие объекта",
|
||||
help_text="True - объект обнаружен, False - объект отсутствует",
|
||||
verbose_name="Наличие сигнала",
|
||||
help_text="True - сигнал обнаружен, False - сигнал отсутствует",
|
||||
)
|
||||
timestamp = models.DateTimeField(
|
||||
auto_now_add=True,
|
||||
@@ -124,12 +125,12 @@ class ObjectMark(models.Model):
|
||||
db_index=True,
|
||||
help_text="Время фиксации отметки",
|
||||
)
|
||||
source = models.ForeignKey(
|
||||
'Source',
|
||||
tech_analyze = models.ForeignKey(
|
||||
'TechAnalyze',
|
||||
on_delete=models.CASCADE,
|
||||
related_name="marks",
|
||||
verbose_name="Источник",
|
||||
help_text="Связанный источник",
|
||||
verbose_name="Тех. анализ",
|
||||
help_text="Связанный технический анализ",
|
||||
)
|
||||
created_by = models.ForeignKey(
|
||||
CustomUser,
|
||||
@@ -160,13 +161,18 @@ class ObjectMark(models.Model):
|
||||
def __str__(self):
|
||||
if self.timestamp:
|
||||
timestamp = self.timestamp.strftime("%d.%m.%Y %H:%M")
|
||||
return f"+ {timestamp}" if self.mark else f"- {timestamp}"
|
||||
tech_name = self.tech_analyze.name if self.tech_analyze else "?"
|
||||
mark_str = "+" if self.mark else "-"
|
||||
return f"{tech_name}: {mark_str} {timestamp}"
|
||||
return "Отметка без времени"
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Отметка источника"
|
||||
verbose_name_plural = "Отметки источников"
|
||||
verbose_name = "Отметка сигнала"
|
||||
verbose_name_plural = "Отметки сигналов"
|
||||
ordering = ["-timestamp"]
|
||||
indexes = [
|
||||
models.Index(fields=["tech_analyze", "-timestamp"]),
|
||||
]
|
||||
|
||||
|
||||
# Для обратной совместимости с SigmaParameter
|
||||
@@ -737,16 +743,6 @@ class Source(models.Model):
|
||||
if last_objitem:
|
||||
self.confirm_at = last_objitem.created_at
|
||||
|
||||
def update_last_signal_at(self):
|
||||
"""
|
||||
Обновляет дату last_signal_at на дату последней отметки о наличии сигнала (mark=True).
|
||||
"""
|
||||
last_signal_mark = self.marks.filter(mark=True).order_by('-timestamp').first()
|
||||
if last_signal_mark:
|
||||
self.last_signal_at = last_signal_mark.timestamp
|
||||
else:
|
||||
self.last_signal_at = None
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
"""
|
||||
Переопределенный метод save для автоматического обновления coords_average
|
||||
|
||||
Reference in New Issue
Block a user