eduardogsilva.routerfleet/import_tool/views.py

62 lines
2.4 KiB
Python
Raw Normal View History

2024-07-10 12:06:00 -03:00
from django.shortcuts import render, redirect, get_object_or_404
2024-07-10 10:18:29 -03:00
from django.contrib.auth.decorators import login_required
from .models import CsvData, ImportTask
from .forms import CsvDataForm
2024-07-10 12:06:00 -03:00
from django.contrib import messages
2024-07-10 10:18:29 -03:00
@login_required()
def view_import_tool_list(request):
2024-07-10 12:06:00 -03:00
import_list = []
for csv_data in CsvData.objects.all().order_by('-created'):
import_summary = {
'csv_data': csv_data,
'task_count': csv_data.importtask_set.filter(csv_data=csv_data).count(),
'success_count': csv_data.importtask_set.filter(csv_data=csv_data, import_success=True).count(),
'error_count': csv_data.importtask_set.filter(csv_data=csv_data, import_error=True).count(),
}
if import_summary['task_count'] != import_summary['success_count'] + import_summary['error_count']:
import_summary['status'] = 'In Progress'
elif import_summary['error_count'] > 0:
import_summary['status'] = 'Completed with Errors'
else:
import_summary['status'] = 'Completed'
import_list.append(import_summary)
2024-07-10 10:18:29 -03:00
data = {
'import_list': import_list,
'page_title': 'CSV import List',
}
return render(request, 'import_tool/import_tool_list.html', context=data)
2024-07-10 12:06:00 -03:00
@login_required()
def view_import_details(request):
csv_data = get_object_or_404(CsvData, uuid=request.GET.get('uuid'))
import_task_list = ImportTask.objects.filter(csv_data=csv_data).order_by('-created')
if request.GET.get('view') == 'raw':
import_view = 'raw'
elif request.GET.get('view') == 'processed':
import_view = 'processed'
else:
import_view = 'tasks'
data = {
'csv_data': csv_data,
'import_task_list': import_task_list,
'import_view': import_view,
}
return render(request, 'import_tool/import_details.html', context=data)
2024-07-10 10:18:29 -03:00
@login_required()
def view_import_csv_file(request):
form = CsvDataForm(request.POST or None)
data = {'form': form, 'page_title': 'Import CSV File'}
2024-07-10 12:06:00 -03:00
if form.is_valid():
csv_data_instance = form.save(commit=False)
csv_data_instance.import_data = form.cleaned_data['import_data']
csv_data_instance.save()
messages.success(request, 'CSV data successfully processed and saved.')
return redirect('success_url')
2024-07-10 10:18:29 -03:00
return render(request, 'generic_form.html', context=data)