Update web/core/views.py
This commit is contained in:
+6
-8
@@ -329,7 +329,7 @@ def entry_delete(request, entry_id):
|
|||||||
@login_required
|
@login_required
|
||||||
@user_passes_test(is_admin)
|
@user_passes_test(is_admin)
|
||||||
def import_wizard(request):
|
def import_wizard(request):
|
||||||
# Safety: expected header list
|
# Safety: expected header list (matches DB/order the importer expects)
|
||||||
_EXPECTED_HEADERS = [
|
_EXPECTED_HEADERS = [
|
||||||
"Subject", "Illustration", "Application", "Scripture", "Source",
|
"Subject", "Illustration", "Application", "Scripture", "Source",
|
||||||
"Talk Title", "Talk Number", "Code", "Date", "Date Edited",
|
"Talk Title", "Talk Number", "Code", "Date", "Date Edited",
|
||||||
@@ -341,9 +341,10 @@ if request.method == "POST":
|
|||||||
try:
|
try:
|
||||||
raw = form.cleaned_data["file"].read()
|
raw = form.cleaned_data["file"].read()
|
||||||
|
|
||||||
import io, csv as _csv
|
import io
|
||||||
|
import csv as _csv
|
||||||
|
|
||||||
# Decode once (BOM-safe)
|
# Decode once (BOM‑safe)
|
||||||
text = raw.decode("utf-8-sig", errors="replace")
|
text = raw.decode("utf-8-sig", errors="replace")
|
||||||
|
|
||||||
# Try to sniff a dialect; fall back to Excel-style CSV
|
# Try to sniff a dialect; fall back to Excel-style CSV
|
||||||
@@ -358,11 +359,7 @@ if request.method == "POST":
|
|||||||
if not rows:
|
if not rows:
|
||||||
raise ValueError("The CSV file appears to be empty.")
|
raise ValueError("The CSV file appears to be empty.")
|
||||||
|
|
||||||
# Expected header (DB field order)
|
expected = _EXPECTED_HEADERS
|
||||||
expected = [
|
|
||||||
"Subject", "Illustration", "Application", "Scripture", "Source",
|
|
||||||
"Talk Title", "Talk Number", "Code", "Date", "Date Edited",
|
|
||||||
]
|
|
||||||
expected_norm = [h.lower() for h in expected]
|
expected_norm = [h.lower() for h in expected]
|
||||||
|
|
||||||
# Header cleaner: fixes r:"Talk Title", stray quotes, spaces, case
|
# Header cleaner: fixes r:"Talk Title", stray quotes, spaces, case
|
||||||
@@ -425,6 +422,7 @@ if request.method == "POST":
|
|||||||
messages.error(request, f"Import failed: {e}")
|
messages.error(request, f"Import failed: {e}")
|
||||||
else:
|
else:
|
||||||
form = ImportForm()
|
form = ImportForm()
|
||||||
|
|
||||||
return render(request, "import_wizard.html", {"form": form})
|
return render(request, "import_wizard.html", {"form": form})
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
|
|||||||
Reference in New Issue
Block a user