Пофиксил баг с координатами

This commit is contained in:
2025-12-03 14:18:09 +03:00
parent 51eb5f3732
commit 4164ea2109
3 changed files with 31 additions and 15 deletions

View File

@@ -534,13 +534,8 @@ class SourceForm(forms.ModelForm):
instance = super().save(commit=False) instance = super().save(commit=False)
# Обработка coords_average # coords_average НЕ обрабатываем здесь - это поле управляется только программно
avg_lat = self.cleaned_data.get("average_latitude") # (через _recalculate_average_coords в модели Source)
avg_lng = self.cleaned_data.get("average_longitude")
if avg_lat is not None and avg_lng is not None:
instance.coords_average = Point(avg_lng, avg_lat, srid=4326)
else:
instance.coords_average = None
# Обработка coords_kupsat # Обработка coords_kupsat
kup_lat = self.cleaned_data.get("kupsat_latitude") kup_lat = self.cleaned_data.get("kupsat_latitude")

View File

@@ -2,29 +2,32 @@
Переиспользуемый компонент для отображения сообщений Django Переиспользуемый компонент для отображения сообщений Django
Использование: Использование:
{% include 'mainapp/components/_messages.html' %} {% include 'mainapp/components/_messages.html' %}
Для отключения автоскрытия добавьте extra_tags='persistent':
messages.success(request, "Сообщение", extra_tags='persistent')
{% endcomment %} {% endcomment %}
{% if messages %} {% if messages %}
<div class="messages-container"> <div class="messages-container">
{% for message in messages %} {% for message in messages %}
<div class="alert alert-{{ message.tags }} alert-dismissible fade show auto-dismiss" role="alert"> <div class="alert alert-{% if 'error' in message.tags %}danger{% elif 'success' in message.tags %}success{% elif 'warning' in message.tags %}warning{% else %}info{% endif %} alert-dismissible fade show {% if 'persistent' not in message.tags %}auto-dismiss{% endif %}" role="alert">
{% if message.tags == 'error' %} {% if 'error' in message.tags %}
<i class="bi bi-exclamation-triangle-fill me-2"></i> <i class="bi bi-exclamation-triangle-fill me-2"></i>
{% elif message.tags == 'success' %} {% elif 'success' in message.tags %}
<i class="bi bi-check-circle-fill me-2"></i> <i class="bi bi-check-circle-fill me-2"></i>
{% elif message.tags == 'warning' %} {% elif 'warning' in message.tags %}
<i class="bi bi-exclamation-circle-fill me-2"></i> <i class="bi bi-exclamation-circle-fill me-2"></i>
{% elif message.tags == 'info' %} {% elif 'info' in message.tags %}
<i class="bi bi-info-circle-fill me-2"></i> <i class="bi bi-info-circle-fill me-2"></i>
{% endif %} {% endif %}
{{ message }} {{ message|safe }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button> <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div> </div>
{% endfor %} {% endfor %}
</div> </div>
<script> <script>
// Автоматическое скрытие уведомлений через 5 секунд // Автоматическое скрытие уведомлений через 5 секунд (кроме persistent)
document.addEventListener('DOMContentLoaded', function() { document.addEventListener('DOMContentLoaded', function() {
const alerts = document.querySelectorAll('.alert.auto-dismiss'); const alerts = document.querySelectorAll('.alert.auto-dismiss');
alerts.forEach(function(alert) { alerts.forEach(function(alert) {

View File

@@ -54,7 +54,25 @@ class AddTranspondersView(LoginRequiredMixin, FormMessageMixin, FormView):
try: try:
content = uploaded_file.read() content = uploaded_file.read()
# Передаем текущего пользователя в функцию парсинга # Передаем текущего пользователя в функцию парсинга
parse_transponders_from_xml(BytesIO(content), self.request.user.customuser) stats = parse_transponders_from_xml(BytesIO(content), self.request.user.customuser)
# Формируем сообщение со статистикой
stats_message = (
f"<strong>Импорт завершён</strong><br>"
f"Спутники: создано {stats['satellites_created']}, "
f"обновлено {stats['satellites_updated']}, "
f"пропущено {stats['satellites_skipped']}, "
f"игнорировано {stats['satellites_ignored']}<br>"
f"Транспондеры: создано {stats['transponders_created']}, "
f"существующих {stats['transponders_existing']}"
)
if stats['errors']:
stats_message += f"<br><strong>Ошибок: {len(stats['errors'])}</strong>"
messages.warning(self.request, stats_message, extra_tags='persistent')
else:
messages.success(self.request, stats_message, extra_tags='persistent')
except ValueError as e: except ValueError as e:
messages.error(self.request, f"Ошибка при чтении таблиц: {e}") messages.error(self.request, f"Ошибка при чтении таблиц: {e}")
return redirect("mainapp:add_trans") return redirect("mainapp:add_trans")