Пофиксил баг с координатами
This commit is contained in:
@@ -534,13 +534,8 @@ class SourceForm(forms.ModelForm):
|
||||
|
||||
instance = super().save(commit=False)
|
||||
|
||||
# Обработка coords_average
|
||||
avg_lat = self.cleaned_data.get("average_latitude")
|
||||
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_average НЕ обрабатываем здесь - это поле управляется только программно
|
||||
# (через _recalculate_average_coords в модели Source)
|
||||
|
||||
# Обработка coords_kupsat
|
||||
kup_lat = self.cleaned_data.get("kupsat_latitude")
|
||||
|
||||
@@ -2,29 +2,32 @@
|
||||
Переиспользуемый компонент для отображения сообщений Django
|
||||
Использование:
|
||||
{% include 'mainapp/components/_messages.html' %}
|
||||
|
||||
Для отключения автоскрытия добавьте extra_tags='persistent':
|
||||
messages.success(request, "Сообщение", extra_tags='persistent')
|
||||
{% endcomment %}
|
||||
|
||||
{% if messages %}
|
||||
<div class="messages-container">
|
||||
{% for message in messages %}
|
||||
<div class="alert alert-{{ message.tags }} alert-dismissible fade show auto-dismiss" role="alert">
|
||||
{% if message.tags == 'error' %}
|
||||
<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 'error' in message.tags %}
|
||||
<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>
|
||||
{% elif message.tags == 'warning' %}
|
||||
{% elif 'warning' in message.tags %}
|
||||
<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>
|
||||
{% endif %}
|
||||
{{ message }}
|
||||
{{ message|safe }}
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// Автоматическое скрытие уведомлений через 5 секунд
|
||||
// Автоматическое скрытие уведомлений через 5 секунд (кроме persistent)
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const alerts = document.querySelectorAll('.alert.auto-dismiss');
|
||||
alerts.forEach(function(alert) {
|
||||
|
||||
@@ -54,7 +54,25 @@ class AddTranspondersView(LoginRequiredMixin, FormMessageMixin, FormView):
|
||||
try:
|
||||
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:
|
||||
messages.error(self.request, f"Ошибка при чтении таблиц: {e}")
|
||||
return redirect("mainapp:add_trans")
|
||||
|
||||
Reference in New Issue
Block a user