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)
|