Новый визуальный функционал
This commit is contained in:
@@ -724,6 +724,9 @@ class ObjItemListView(LoginRequiredMixin, View):
|
||||
bod_velocity = "-"
|
||||
modulation_name = "-"
|
||||
snr = "-"
|
||||
standard_name = "-"
|
||||
comment = "-"
|
||||
is_average = "-"
|
||||
|
||||
if param:
|
||||
if hasattr(param, "id_satellite") and param.id_satellite:
|
||||
@@ -760,6 +763,17 @@ class ObjItemListView(LoginRequiredMixin, View):
|
||||
else "-"
|
||||
)
|
||||
|
||||
if hasattr(param, "standard") and param.standard:
|
||||
standard_name = (
|
||||
param.standard.name
|
||||
if hasattr(param.standard, "name")
|
||||
else "-"
|
||||
)
|
||||
|
||||
if hasattr(obj, "geo_obj") and obj.geo_obj:
|
||||
comment = obj.geo_obj.comment or "-"
|
||||
is_average = "Да" if obj.geo_obj.is_average else "Нет" if obj.geo_obj.is_average is not None else "-"
|
||||
|
||||
processed_objects.append(
|
||||
{
|
||||
"id": obj.id,
|
||||
@@ -780,6 +794,9 @@ class ObjItemListView(LoginRequiredMixin, View):
|
||||
"distance_geo_valid": distance_geo_valid,
|
||||
"distance_kup_valid": distance_kup_valid,
|
||||
"updated_by": obj.updated_by if obj.updated_by else "-",
|
||||
"comment": comment,
|
||||
"is_average": is_average,
|
||||
"standard": standard_name,
|
||||
"obj": obj,
|
||||
}
|
||||
)
|
||||
@@ -840,10 +857,11 @@ class ObjItemFormView(
|
||||
|
||||
def get_success_url(self):
|
||||
"""Возвращает URL с сохраненными параметрами фильтров."""
|
||||
# Получаем сохраненные параметры из GET запроса
|
||||
return_params = self.request.GET.get('return_params', '')
|
||||
if return_params:
|
||||
return reverse_lazy("mainapp:objitem_list") + '?' + return_params
|
||||
# Получаем все параметры из GET запроса и сохраняем их в URL
|
||||
if self.request.GET:
|
||||
from urllib.parse import urlencode
|
||||
query_string = urlencode(self.request.GET)
|
||||
return reverse_lazy("mainapp:objitem_list") + '?' + query_string
|
||||
return reverse_lazy("mainapp:objitem_list")
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
@@ -890,7 +908,11 @@ class ObjItemFormView(
|
||||
def form_valid(self, form):
|
||||
context = self.get_context_data()
|
||||
parameter_forms = context["parameter_forms"]
|
||||
geo_form = context["geo_form"]
|
||||
|
||||
if self.object and hasattr(self.object, "geo_obj") and self.object.geo_obj:
|
||||
geo_form = GeoForm(self.request.POST, instance=self.object.geo_obj, prefix="geo")
|
||||
else:
|
||||
geo_form = GeoForm(self.request.POST, prefix="geo")
|
||||
|
||||
# Сохраняем основной объект
|
||||
self.object = form.save(commit=False)
|
||||
@@ -902,7 +924,15 @@ class ObjItemFormView(
|
||||
self.save_parameters(parameter_forms)
|
||||
|
||||
# Сохраняем геоданные
|
||||
self.save_geo_data(geo_form)
|
||||
if geo_form.is_valid():
|
||||
self.save_geo_data(geo_form)
|
||||
else:
|
||||
context.update({
|
||||
'form': form,
|
||||
'parameter_forms': parameter_forms,
|
||||
'geo_form': geo_form,
|
||||
})
|
||||
return self.render_to_response(context)
|
||||
|
||||
return super().form_valid(form)
|
||||
|
||||
@@ -1011,6 +1041,48 @@ class ObjItemCreateView(ObjItemFormView, CreateView):
|
||||
class ObjItemDeleteView(RoleRequiredMixin, FormMessageMixin, DeleteView):
|
||||
model = ObjItem
|
||||
template_name = "mainapp/objitem_confirm_delete.html"
|
||||
success_url = reverse_lazy("mainapp:home")
|
||||
success_url = reverse_lazy("mainapp:objitem_list")
|
||||
success_message = "Объект успешно удалён!"
|
||||
required_roles = ["admin", "moderator"]
|
||||
|
||||
def get_success_url(self):
|
||||
"""Возвращает URL с сохраненными параметрами фильтров."""
|
||||
# Получаем все параметры из GET запроса и сохраняем их в URL
|
||||
if self.request.GET:
|
||||
from urllib.parse import urlencode
|
||||
query_string = urlencode(self.request.GET)
|
||||
return reverse_lazy("mainapp:objitem_list") + '?' + query_string
|
||||
return reverse_lazy("mainapp:objitem_list")
|
||||
|
||||
|
||||
class ObjItemDetailView(LoginRequiredMixin, View):
|
||||
"""
|
||||
Представление для просмотра деталей ObjItem в режиме чтения.
|
||||
|
||||
Доступно для всех авторизованных пользователей, показывает данные в режиме чтения.
|
||||
"""
|
||||
def get(self, request, pk):
|
||||
obj = ObjItem.objects.filter(pk=pk).select_related(
|
||||
'geo_obj',
|
||||
'updated_by__user',
|
||||
'created_by__user',
|
||||
).prefetch_related(
|
||||
'parameters_obj__id_satellite',
|
||||
'parameters_obj__polarization',
|
||||
'parameters_obj__modulation',
|
||||
'parameters_obj__standard',
|
||||
).first()
|
||||
|
||||
if not obj:
|
||||
from django.http import Http404
|
||||
raise Http404("Объект не найден")
|
||||
|
||||
# Сохраняем параметры возврата для кнопки "Назад"
|
||||
return_params = request.GET.get('return_params', '')
|
||||
|
||||
context = {
|
||||
'object': obj,
|
||||
'return_params': return_params
|
||||
}
|
||||
|
||||
return render(request, "mainapp/objitem_detail.html", context)
|
||||
|
||||
Reference in New Issue
Block a user