12345678910111213141516171819202122232425262728293031323334 |
- 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 tickets.operations.csv_importer import CSVImporter
- from tickets.utils import staff_check
- @login_required
- @user_passes_test(staff_check)
- def import_csv(request) -> HttpResponse:
- """Import a specifically formatted CSV into stored tasks.
- """
- 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("tickets: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("tickets:import_csv"))
- return render(request, "tickets/import_csv.html", context=ctx)
|