From bd39717e86047a9ad99c08a191069bf3468e5340 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=BE=D1=88=D0=BA=D0=B8=D0=BD=20=D0=A1=D0=B5=D1=80?= =?UTF-8?q?=D0=B3=D0=B5=D0=B9?= Date: Wed, 26 Nov 2025 23:57:21 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D1=87=D0=B0=D0=BB=20=D1=80=D0=B5?= =?UTF-8?q?=D0=B4=D0=B0=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BF=D0=B0=D1=80=D1=81=D0=B8=D0=BD=D0=B3=D0=B0?= =?UTF-8?q?=20=D1=81=D0=BF=D1=83=D1=82=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dbapp/mainapp/admin.py | 3 +- dbapp/mainapp/forms.py | 7 +++ ...015_add_international_code_to_satellite.py | 18 ++++++++ dbapp/mainapp/models.py | 7 +++ .../templates/mainapp/satellite_form.html | 33 +++++++++++--- .../templates/mainapp/satellite_list.html | 13 +++++- dbapp/mainapp/views/satellite.py | 3 ++ dbapp/manage.py | 44 +++++++++---------- 8 files changed, 97 insertions(+), 31 deletions(-) create mode 100644 dbapp/mainapp/migrations/0015_add_international_code_to_satellite.py diff --git a/dbapp/mainapp/admin.py b/dbapp/mainapp/admin.py index da66777..663ea33 100644 --- a/dbapp/mainapp/admin.py +++ b/dbapp/mainapp/admin.py @@ -573,12 +573,13 @@ class SatelliteAdmin(BaseAdmin): list_display = ( "name", "norad", + "international_code", "undersat_point", "launch_date", "created_at", "updated_at", ) - search_fields = ("name", "norad") + search_fields = ("name", "norad", "international_code") ordering = ("name",) filter_horizontal = ("band",) autocomplete_fields = ("band",) diff --git a/dbapp/mainapp/forms.py b/dbapp/mainapp/forms.py index 1359b76..c66c6ca 100644 --- a/dbapp/mainapp/forms.py +++ b/dbapp/mainapp/forms.py @@ -816,6 +816,7 @@ class SatelliteForm(forms.ModelForm): fields = [ 'name', 'norad', + 'international_code', 'band', 'undersat_point', 'url', @@ -832,6 +833,10 @@ class SatelliteForm(forms.ModelForm): 'class': 'form-control', 'placeholder': 'Введите NORAD ID' }), + 'international_code': forms.TextInput(attrs={ + 'class': 'form-control', + 'placeholder': 'Например, 2011-074A' + }), 'band': forms.SelectMultiple(attrs={ 'class': 'form-select', 'size': '5' @@ -858,6 +863,7 @@ class SatelliteForm(forms.ModelForm): labels = { 'name': 'Название спутника', 'norad': 'NORAD ID', + 'international_code': 'Международный код', 'band': 'Диапазоны работы', 'undersat_point': 'Подспутниковая точка (градусы)', 'url': 'Ссылка на источник', @@ -867,6 +873,7 @@ class SatelliteForm(forms.ModelForm): help_texts = { 'name': 'Уникальное название спутника', 'norad': 'Идентификатор NORAD для отслеживания спутника', + 'international_code': 'Международный идентификатор спутника (например, 2011-074A)', 'band': 'Выберите диапазоны работы спутника (удерживайте Ctrl для множественного выбора)', 'undersat_point': 'Восточное полушарие с +, западное с -', 'url': 'Ссылка на сайт, где можно проверить информацию', diff --git a/dbapp/mainapp/migrations/0015_add_international_code_to_satellite.py b/dbapp/mainapp/migrations/0015_add_international_code_to_satellite.py new file mode 100644 index 0000000..609a2ef --- /dev/null +++ b/dbapp/mainapp/migrations/0015_add_international_code_to_satellite.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2.7 on 2025-11-26 20:20 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('mainapp', '0014_source_note'), + ] + + operations = [ + migrations.AddField( + model_name='satellite', + name='international_code', + field=models.CharField(blank=True, help_text='Международный идентификатор спутника (например, 2011-074A)', max_length=20, null=True, verbose_name='Международный код'), + ), + ] diff --git a/dbapp/mainapp/models.py b/dbapp/mainapp/models.py index d68b03f..c4fa522 100644 --- a/dbapp/mainapp/models.py +++ b/dbapp/mainapp/models.py @@ -350,6 +350,13 @@ class Satellite(models.Model): verbose_name="NORAD ID", help_text="Идентификатор NORAD для отслеживания спутника", ) + international_code = models.CharField( + max_length=50, + blank=True, + null=True, + verbose_name="Международный код", + help_text="Международный идентификатор спутника (например, 2011-074A)", + ) band = models.ManyToManyField( Band, related_name="bands", diff --git a/dbapp/mainapp/templates/mainapp/satellite_form.html b/dbapp/mainapp/templates/mainapp/satellite_form.html index 7419c68..925d601 100644 --- a/dbapp/mainapp/templates/mainapp/satellite_form.html +++ b/dbapp/mainapp/templates/mainapp/satellite_form.html @@ -107,17 +107,17 @@
-
@@ -140,6 +140,25 @@
+
+
+
+ + {{ form.band }} + {% if form.band.errors %} +
+ {{ form.band.errors.0 }} +
+ {% endif %} + {% if form.band.help_text %} +
{{ form.band.help_text }}
+ {% endif %} +
+
+
+
diff --git a/dbapp/mainapp/templates/mainapp/satellite_list.html b/dbapp/mainapp/templates/mainapp/satellite_list.html index b1dae13..bc72afa 100644 --- a/dbapp/mainapp/templates/mainapp/satellite_list.html +++ b/dbapp/mainapp/templates/mainapp/satellite_list.html @@ -200,6 +200,16 @@ {% endif %} + + + Международный код + {% if sort == 'international_code' %} + + {% elif sort == '-international_code' %} + + {% endif %} + + Диапазоны @@ -265,6 +275,7 @@ {{ satellite.id }} {{ satellite.name }} {{ satellite.norad }} + {{ satellite.international_code|default:"-" }} {{ satellite.bands }} {{ satellite.undersat_point }} {{ satellite.launch_date }} @@ -296,7 +307,7 @@ {% empty %} - Нет данных для отображения + Нет данных для отображения {% endfor %} diff --git a/dbapp/mainapp/views/satellite.py b/dbapp/mainapp/views/satellite.py index 26a56ec..b70cfcb 100644 --- a/dbapp/mainapp/views/satellite.py +++ b/dbapp/mainapp/views/satellite.py @@ -139,6 +139,8 @@ class SatelliteListView(LoginRequiredMixin, View): "-name": "-name", "norad": "norad", "-norad": "-norad", + "international_code": "international_code", + "-international_code": "-international_code", "undersat_point": "undersat_point", "-undersat_point": "-undersat_point", "launch_date": "launch_date", @@ -168,6 +170,7 @@ class SatelliteListView(LoginRequiredMixin, View): 'id': satellite.id, 'name': satellite.name or "-", 'norad': satellite.norad if satellite.norad else "-", + 'international_code': satellite.international_code or "-", 'bands': ", ".join(band_names) if band_names else "-", 'undersat_point': f"{satellite.undersat_point:.2f}" if satellite.undersat_point is not None else "-", 'launch_date': satellite.launch_date.strftime("%d.%m.%Y") if satellite.launch_date else "-", diff --git a/dbapp/manage.py b/dbapp/manage.py index 21e03b5..1d33d3e 100644 --- a/dbapp/manage.py +++ b/dbapp/manage.py @@ -1,22 +1,22 @@ -#!/usr/bin/env python -"""Django's command-line utility for administrative tasks.""" -import os -import sys - - -def main(): - """Run administrative tasks.""" - os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dbapp.settings') - try: - from django.core.management import execute_from_command_line - except ImportError as exc: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) from exc - execute_from_command_line(sys.argv) - - -if __name__ == '__main__': - main() +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dbapp.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main()