rework main models
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
from django.shortcuts import render, redirect
|
||||
from django.contrib import messages
|
||||
from django.http import JsonResponse
|
||||
from django.http import JsonResponse, HttpResponse
|
||||
from django.views.decorators.http import require_GET
|
||||
from django.contrib.admin.views.decorators import staff_member_required
|
||||
from django.utils.decorators import method_decorator
|
||||
@@ -13,13 +13,15 @@ from .utils import (
|
||||
add_satellite_list,
|
||||
get_points_from_csv,
|
||||
get_vch_load_from_html,
|
||||
compare_and_link_vch_load
|
||||
compare_and_link_vch_load,
|
||||
kub_report
|
||||
)
|
||||
from mapsapp.utils import parse_transponders_from_json
|
||||
from .forms import LoadExcelData, LoadCsvData, UploadFileForm, VchLinkForm
|
||||
from mapsapp.utils import parse_transponders_from_json, parse_transponders_from_xml
|
||||
from .forms import LoadExcelData, LoadCsvData, UploadFileForm, VchLinkForm, UploadVchLoad, NewEventForm
|
||||
from .models import ObjItem
|
||||
from .clusters import get_clusters
|
||||
from dbapp.settings import BASE_DIR
|
||||
from io import BytesIO
|
||||
|
||||
|
||||
|
||||
class AddSatellitesView(View):
|
||||
@@ -27,13 +29,33 @@ class AddSatellitesView(View):
|
||||
add_satellite_list()
|
||||
return redirect('home')
|
||||
|
||||
class AddTranspondersView(View):
|
||||
def get(self, request):
|
||||
# class AddTranspondersView(View):
|
||||
# def get(self, request):
|
||||
# try:
|
||||
# parse_transponders_from_json(BASE_DIR / "transponders.json")
|
||||
# except FileNotFoundError:
|
||||
# print("Файл не найден")
|
||||
# return redirect('home')
|
||||
|
||||
class AddTranspondersView(FormView):
|
||||
template_name = 'mainapp/transponders_upload.html'
|
||||
form_class = UploadFileForm
|
||||
|
||||
def form_valid(self, form):
|
||||
uploaded_file = self.request.FILES['file']
|
||||
try:
|
||||
parse_transponders_from_json(BASE_DIR / "transponders.json")
|
||||
except FileNotFoundError:
|
||||
print("Файл не найден")
|
||||
return redirect('home')
|
||||
content = uploaded_file.read()
|
||||
parse_transponders_from_xml(BytesIO(content))
|
||||
messages.success(self.request, "Файл успешно обработан")
|
||||
except ValueError as e:
|
||||
messages.error(self.request, f"Ошибка при чтении таблиц: {e}")
|
||||
except Exception as e:
|
||||
messages.error(self.request, f"Неизвестная ошибка: {e}")
|
||||
return redirect('add_trans')
|
||||
|
||||
def form_invalid(self, form):
|
||||
messages.error(self.request, "Форма заполнена некорректно.")
|
||||
return super().form_invalid(form)
|
||||
|
||||
class HomePageView(TemplateView):
|
||||
template_name = 'mainapp/home.html'
|
||||
@@ -118,22 +140,7 @@ class LoadCsvDataView(FormView):
|
||||
messages.error(self.request, "Форма заполнена некорректно.")
|
||||
return super().form_invalid(form)
|
||||
|
||||
# def upload_file(request):
|
||||
# if request.method == 'POST' and request.FILES:
|
||||
# form = UploadFileForm(request.POST, request.FILES)
|
||||
# if form.is_valid():
|
||||
# uploaded_file = request.FILES['file']
|
||||
# # Обработка текстового файла, например:
|
||||
# df = pd.read_csv(uploaded_file)
|
||||
# df = pd.read_csv(filepath, sep=";",
|
||||
# names=['id', 'obj', 'lat', 'lon', 'h', 'time', 'sat', 'norad_id', 'freq', 'f_range', 'et', 'qaul', 'mir_1', 'mir_2', 'mir_3'])
|
||||
# df[['lat', 'lon', 'freq', 'f_range']] = df[['lat', 'lon', 'freq', 'f_range']].replace(',', '.', regex=True).astype(float)
|
||||
# df['time'] = pd.to_datetime(df['time'], format='%d.%m.%Y %H:%M:%S')
|
||||
# get_points_from_csv(df)
|
||||
# return JsonResponse({'status': 'success'})
|
||||
# else:
|
||||
# return JsonResponse({'status': 'error', 'errors': form.errors}, status=400)
|
||||
# return render(request, 'mainapp/add_data_from_csv.html')
|
||||
|
||||
from collections import defaultdict
|
||||
|
||||
@method_decorator(staff_member_required, name='dispatch')
|
||||
@@ -162,7 +169,6 @@ class ShowMapView(UserPassesTestMixin, View):
|
||||
'frequency': p["freq"]
|
||||
})
|
||||
|
||||
# Преобразуем в список словарей для удобства в шаблоне
|
||||
groups = [
|
||||
{
|
||||
"name": name,
|
||||
@@ -190,7 +196,7 @@ class ClusterTestView(View):
|
||||
|
||||
class UploadVchLoadView(FormView):
|
||||
template_name = 'mainapp/upload_html.html'
|
||||
form_class = UploadFileForm
|
||||
form_class = UploadVchLoad
|
||||
|
||||
def form_valid(self, form):
|
||||
selected_sat = form.cleaned_data['sat_choice']
|
||||
@@ -224,4 +230,38 @@ class LinkVchSigmaView(FormView):
|
||||
return redirect('link_vch_sigma')
|
||||
|
||||
def form_invalid(self, form):
|
||||
return self.render_to_response(self.get_context_data(form=form))
|
||||
return self.render_to_response(self.get_context_data(form=form))
|
||||
|
||||
|
||||
class ProcessKubsatView(FormView):
|
||||
template_name = 'mainapp/process_kubsat.html'
|
||||
form_class = NewEventForm
|
||||
|
||||
def form_valid(self, form):
|
||||
# selected_sat = form.cleaned_data['sat_choice']
|
||||
# selected_pol = form.cleaned_data['pol_choice']
|
||||
uploaded_file = self.request.FILES['file']
|
||||
try:
|
||||
content = uploaded_file.read()
|
||||
df = kub_report(BytesIO(content))
|
||||
output = BytesIO()
|
||||
with pd.ExcelWriter(output, engine='openpyxl') as writer:
|
||||
df.to_excel(writer, index=False, sheet_name='Результат')
|
||||
output.seek(0)
|
||||
|
||||
response = HttpResponse(
|
||||
output.getvalue(),
|
||||
content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
||||
)
|
||||
response['Content-Disposition'] = f'attachment; filename="kubsat_report.xlsx"'
|
||||
|
||||
messages.success(self.request, "Событие успешно обработано!")
|
||||
return response
|
||||
except Exception as e:
|
||||
messages.error(self.request, f"Ошибка при обработке файла: {str(e)}")
|
||||
return redirect('kubsat_excel')
|
||||
# return redirect('kubsat_excel')
|
||||
|
||||
def form_invalid(self, form):
|
||||
messages.error(self.request, "Форма заполнена некорректно.")
|
||||
return super().form_invalid(form)
|
||||
Reference in New Issue
Block a user