From 98ef3f5b90d84e749dd8f77ad506b462c4762314 Mon Sep 17 00:00:00 2001 From: Konrad du Plessis Date: Sun, 22 Feb 2026 18:55:59 +0200 Subject: [PATCH] Add temporary /setup/ URL to bootstrap admin + test data from browser Visit your-site.com/setup/ to create admin user and test data without needing terminal access. Links to admin panel and dashboard after setup. REMOVE THIS after initial testing is complete. Co-Authored-By: Claude Opus 4.6 --- core/urls.py | 5 +++++ core/views.py | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/core/urls.py b/core/urls.py index 8676818..d6ff4df 100644 --- a/core/urls.py +++ b/core/urls.py @@ -42,4 +42,9 @@ urlpatterns = [ # Preview a worker's payslip (AJAX — returns JSON) path('payroll/preview//', views.preview_payslip, name='preview_payslip'), + + # === TEMPORARY SETUP === + # Visit /setup/ to create admin user + test data from the browser. + # REMOVE THIS after initial setup is done! + path('setup/', views.run_setup, name='run_setup'), ] diff --git a/core/views.py b/core/views.py index f447a1d..e7c5164 100644 --- a/core/views.py +++ b/core/views.py @@ -16,6 +16,7 @@ from django.contrib import messages from django.contrib.auth.decorators import login_required from django.http import JsonResponse, HttpResponseForbidden, HttpResponse +from django.contrib.auth.models import User from .models import Worker, Project, WorkLog, Team, PayrollRecord, Loan, PayrollAdjustment from .forms import AttendanceLogForm, PayrollAdjustmentForm @@ -1099,3 +1100,36 @@ def preview_payslip(request, worker_id): 'net_pay': log_amount + adj_total, 'logs': unpaid_logs, }) + + +# ============================================================================= +# === ONE-TIME SETUP (TEMPORARY) === +# Runs the setup_test_data management command from the browser. +# Visit /setup/ to create admin user + test data. +# REMOVE THIS VIEW after initial setup is done! +# ============================================================================= + +def run_setup(request): + """ + Temporary view that creates the admin user and test data. + Accessible without login so you can bootstrap the system. + Visit your-site.com/setup/ to run it. + """ + from django.core.management import call_command + from io import StringIO + + output = StringIO() + call_command('setup_test_data', stdout=output) + result = output.getvalue() + + # Return the output as a simple HTML page + lines = result.replace('\n', '
') + return HttpResponse( + f'' + f'

Setup Complete!

' + f'
{lines}
' + f'

' + f'Go to Admin Panel | ' + f'Go to Dashboard' + f'' + )