Update web/core/views.py

This commit is contained in:
2025-08-22 03:17:59 +00:00
parent af2de1e779
commit a32d58eec2
+6 -8
View File
@@ -329,7 +329,7 @@ def entry_delete(request, entry_id):
@login_required
@user_passes_test(is_admin)
def import_wizard(request):
# Safety: expected header list
# Safety: expected header list (matches DB/order the importer expects)
_EXPECTED_HEADERS = [
"Subject", "Illustration", "Application", "Scripture", "Source",
"Talk Title", "Talk Number", "Code", "Date", "Date Edited",
@@ -341,9 +341,10 @@ if request.method == "POST":
try:
raw = form.cleaned_data["file"].read()
import io, csv as _csv
import io
import csv as _csv
# Decode once (BOM-safe)
# Decode once (BOMsafe)
text = raw.decode("utf-8-sig", errors="replace")
# Try to sniff a dialect; fall back to Excel-style CSV
@@ -358,11 +359,7 @@ if request.method == "POST":
if not rows:
raise ValueError("The CSV file appears to be empty.")
# Expected header (DB field order)
expected = [
"Subject", "Illustration", "Application", "Scripture", "Source",
"Talk Title", "Talk Number", "Code", "Date", "Date Edited",
]
expected = _EXPECTED_HEADERS
expected_norm = [h.lower() for h in expected]
# 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}")
else:
form = ImportForm()
return render(request, "import_wizard.html", {"form": form})
@login_required