coins-demo/todo/views/import_csv.py

35 lines
1 KiB
Python
Raw Normal View History

from django.contrib import messages
from django.contrib.auth.decorators import login_required, user_passes_test
from django.http import HttpResponse
from django.shortcuts import redirect, render, reverse
from todo.operations.csv_importer import CSVImporter
from todo.utils import staff_check
@login_required
@user_passes_test(staff_check)
def import_csv(request) -> HttpResponse:
"""Import a specifically formatted CSV into stored tasks.
"""
2019-04-02 06:48:54 +00:00
ctx = {"results": None}
if request.method == "POST":
filepath = request.FILES.get("csvfile")
if not filepath:
messages.error(request, "You must supply a CSV file to import.")
return redirect(reverse("todo:import_csv"))
importer = CSVImporter()
results = importer.upsert(filepath)
if results:
ctx["results"] = results
else:
messages.error(request, "Could not parse provided CSV file.")
return redirect(reverse("todo:import_csv"))
return render(request, "todo/import_csv.html", context=ctx)