# === URL ROUTING === # Maps URLs to view functions. Each path() connects a web address to # the Python function that handles it. from django.urls import path from . import views urlpatterns = [ # Dashboard — the home page after login path('', views.index, name='home'), # Attendance logging — where supervisors log daily work path('attendance/log/', views.attendance_log, name='attendance_log'), # Work history — table of all work logs with filters path('history/', views.work_history, name='work_history'), # CSV export — downloads filtered work logs as a spreadsheet path('history/export/', views.export_work_log_csv, name='export_work_log_csv'), # CSV export — downloads all worker data (admin only) path('workers/export/', views.export_workers_csv, name='export_workers_csv'), # AJAX toggle — activates/deactivates workers, projects, teams from dashboard path('toggle///', views.toggle_active, name='toggle_active'), # === PAYROLL === # Main payroll dashboard — shows pending payments, history, loans, and charts path('payroll/', views.payroll_dashboard, name='payroll_dashboard'), # Process payment — pays a worker and links their unpaid logs + adjustments path('payroll/pay//', views.process_payment, name='process_payment'), # Batch pay — preview which workers would be paid, then process all at once path('payroll/batch-pay/preview/', views.batch_pay_preview, name='batch_pay_preview'), path('payroll/batch-pay/', views.batch_pay, name='batch_pay'), # Price overtime — creates Overtime adjustments from unpriced OT entries path('payroll/price-overtime/', views.price_overtime, name='price_overtime'), # Add a new payroll adjustment (bonus, deduction, loan, etc.) path('payroll/adjustment/add/', views.add_adjustment, name='add_adjustment'), # Edit an existing unpaid adjustment path('payroll/adjustment//edit/', views.edit_adjustment, name='edit_adjustment'), # Delete an unpaid adjustment path('payroll/adjustment//delete/', views.delete_adjustment, name='delete_adjustment'), # Preview a worker's payslip (AJAX — returns JSON) path('payroll/preview//', views.preview_payslip, name='preview_payslip'), # Add a repayment from the payslip preview modal (AJAX — returns JSON) path('payroll/repayment//', views.add_repayment_ajax, name='add_repayment_ajax'), # View a completed payslip (print-friendly page) path('payroll/payslip//', views.payslip_detail, name='payslip_detail'), # === EXPENSE RECEIPTS === # Create a new expense receipt — emails HTML + PDF to Spark Receipt path('receipts/create/', views.create_receipt, name='create_receipt'), # === TEMPORARY: Import production data from browser === # Visit /import-data/ once to populate the database. Remove after use. path('import-data/', views.import_data, name='import_data'), # === TEMPORARY: Run migrations from browser === # Visit /run-migrate/ to apply pending database migrations on production. path('run-migrate/', views.run_migrate, name='run_migrate'), ]