257 lines
18 KiB
Python
257 lines
18 KiB
Python
from django.urls import path
|
|
from . import views
|
|
from . import views_integration
|
|
from . import views_source
|
|
|
|
urlpatterns = [
|
|
# ========================================================================
|
|
# CORE DASHBOARD & NAVIGATION
|
|
# ========================================================================
|
|
path("", views.dashboard_view, name="dashboard"),
|
|
path("login/", views.portal_login, name="portal_login"),
|
|
path("careers/", views.kaauh_career, name="kaauh_career"),
|
|
|
|
# ========================================================================
|
|
# JOB MANAGEMENT
|
|
# ========================================================================
|
|
# Job CRUD Operations
|
|
path("jobs/", views.JobListView.as_view(), name="job_list"),
|
|
path("jobs/create/", views.create_job, name="job_create"),
|
|
path("jobs/<slug:slug>/", views.job_detail, name="job_detail"),
|
|
path("jobs/<slug:slug>/update/", views.edit_job, name="job_update"),
|
|
path("jobs/<slug:slug>/upload-image/", views.job_image_upload, name="job_image_upload"),
|
|
|
|
# Job-specific Views
|
|
path("jobs/<slug:slug>/applicants/", views.job_applicants_view, name="job_applicants"),
|
|
path("jobs/<slug:slug>/applications/", views.JobApplicationListView.as_view(), name="job_applications_list"),
|
|
path("jobs/<slug:slug>/calendar/", views.interview_calendar_view, name="interview_calendar"),
|
|
path("jobs/bank/", views.job_bank_view, name="job_bank"),
|
|
|
|
# Job Actions & Integrations
|
|
path("jobs/<slug:slug>/post-to-linkedin/", views.post_to_linkedin, name="post_to_linkedin"),
|
|
path("jobs/<slug:slug>/edit_linkedin_post_content/", views.edit_linkedin_post_content, name="edit_linkedin_post_content"),
|
|
path("jobs/<slug:slug>/staff-assignment/", views.staff_assignment_view, name="staff_assignment_view"),
|
|
path("jobs/<slug:slug>/sync-hired-applications/", views.sync_hired_applications, name="sync_hired_applications"),
|
|
path("jobs/<slug:slug>/export/<str:stage>/csv/", views.export_applications_csv, name="export_applications_csv"),
|
|
path("jobs/<slug:slug>/request-download/", views.request_cvs_download, name="request_cvs_download"),
|
|
path("jobs/<slug:slug>/download-ready/", views.download_ready_cvs, name="download_ready_cvs"),
|
|
|
|
# Job Application Stage Views
|
|
path("jobs/<slug:slug>/applications_screening_view/", views.applications_screening_view, name="applications_screening_view"),
|
|
path("jobs/<slug:slug>/applications_exam_view/", views.applications_exam_view, name="applications_exam_view"),
|
|
path("jobs/<slug:slug>/applications_interview_view/", views.applications_interview_view, name="applications_interview_view"),
|
|
path("jobs/<slug:slug>/applications_document_review_view/", views.applications_document_review_view, name="applications_document_review_view"),
|
|
path("jobs/<slug:slug>/applications_offer_view/", views.applications_offer_view, name="applications_offer_view"),
|
|
path("jobs/<slug:slug>/applications_hired_view/", views.applications_hired_view, name="applications_hired_view"),
|
|
|
|
# Job Application Status Management
|
|
path("jobs/<slug:job_slug>/application/<slug:application_slug>/update_status/<str:stage_type>/<str:status>/", views.update_application_status, name="update_application_status"),
|
|
path("jobs/<slug:slug>/update_application_exam_status/", views.update_application_exam_status, name="update_application_exam_status"),
|
|
path("jobs/<slug:slug>/reschedule_meeting_for_application/", views.reschedule_meeting_for_application, name="reschedule_meeting_for_application"),
|
|
|
|
# Job Interview Scheduling
|
|
path("jobs/<slug:slug>/schedule-interviews/", views.schedule_interviews_view, name="schedule_interviews"),
|
|
path("jobs/<slug:slug>/confirm-schedule-interviews/", views.confirm_schedule_interviews_view, name="confirm_schedule_interviews_view"),
|
|
path("jobs/<slug:slug>/applications/compose-email/", views.compose_application_email, name="compose_application_email"),
|
|
|
|
# ========================================================================
|
|
# APPLICATION/CANDIDATE MANAGEMENT
|
|
# ========================================================================
|
|
# Application CRUD Operations
|
|
path("applications/", views.ApplicationListView.as_view(), name="application_list"),
|
|
path("applications/create/", views.ApplicationCreateView.as_view(), name="application_create"),
|
|
path("applications/create/<slug:slug>/", views.ApplicationCreateView.as_view(), name="application_create_for_job"),
|
|
path("applications/<slug:slug>/", views.application_detail, name="application_detail"),
|
|
path("applications/<slug:slug>/update/", views.ApplicationUpdateView.as_view(), name="application_update"),
|
|
path("applications/<slug:slug>/delete/", views.ApplicationDeleteView.as_view(), name="application_delete"),
|
|
|
|
# Application Actions
|
|
path("applications/<slug:slug>/resume-template/", views.application_resume_template_view, name="application_resume_template"),
|
|
path("applications/<slug:slug>/update-stage/", views.application_update_stage, name="application_update_stage"),
|
|
path("applications/<slug:slug>/retry-scoring/", views.retry_scoring_view, name="application_retry_scoring"),
|
|
path("applications/<slug:slug>/applicant-view/", views.applicant_application_detail, name="applicant_application_detail"),
|
|
|
|
# Application Document Management
|
|
path("applications/<slug:slug>/documents/upload/", views.document_upload, name="application_document_upload"),
|
|
path("applications/<slug:slug>/documents/<int:document_id>/delete/", views.document_delete, name="application_document_delete"),
|
|
path("applications/<slug:slug>/documents/<int:document_id>/download/", views.document_download, name="application_document_download"),
|
|
|
|
# ========================================================================
|
|
# INTERVIEW MANAGEMENT
|
|
# ========================================================================
|
|
# Interview CRUD Operations
|
|
path("interviews/", views.interview_list, name="interview_list"),
|
|
path("interviews/<slug:slug>/", views.interview_detail, name="interview_detail"),
|
|
path("interviews/<slug:slug>/update_interview_status", views.update_interview_status, name="update_interview_status"),
|
|
path("interviews/<slug:slug>/cancel_interview_for_application", views.cancel_interview_for_application, name="cancel_interview_for_application"),
|
|
|
|
# Interview Creation
|
|
path("interviews/create/<slug:application_slug>/", views.interview_create_type_selection, name="interview_create_type_selection"),
|
|
path("interviews/create/<slug:application_slug>/remote/", views.interview_create_remote, name="interview_create_remote"),
|
|
path("interviews/create/<slug:application_slug>/onsite/", views.interview_create_onsite, name="interview_create_onsite"),
|
|
path("interviews/<slug:job_slug>/get_interview_list", views.get_interview_list, name="get_interview_list"),
|
|
|
|
# ========================================================================
|
|
# PERSON/CONTACT MANAGEMENT
|
|
# ========================================================================
|
|
path("persons/", views.PersonListView.as_view(), name="person_list"),
|
|
path("persons/create/", views.PersonCreateView.as_view(), name="person_create"),
|
|
path("persons/<slug:slug>/", views.PersonDetailView.as_view(), name="person_detail"),
|
|
path("persons/<slug:slug>/update/", views.PersonUpdateView.as_view(), name="person_update"),
|
|
path("persons/<slug:slug>/delete/", views.PersonDeleteView.as_view(), name="person_delete"),
|
|
|
|
# ========================================================================
|
|
# FORM & TEMPLATE MANAGEMENT
|
|
# ========================================================================
|
|
# Form Builder & Templates
|
|
path("forms/", views.form_templates_list, name="form_templates_list"),
|
|
path("forms/builder/", views.form_builder, name="form_builder"),
|
|
path("forms/builder/<slug:template_slug>/", views.form_builder, name="form_builder"),
|
|
path("forms/create-template/", views.create_form_template, name="create_form_template"),
|
|
|
|
# Form Submissions
|
|
path("forms/<int:template_id>/submissions/<slug:slug>/", views.form_submission_details, name="form_submission_details"),
|
|
path("forms/template/<slug:slug>/submissions/", views.form_template_submissions_list, name="form_template_submissions_list"),
|
|
path("forms/template/<int:template_id>/all-submissions/", views.form_template_all_submissions, name="form_template_all_submissions"),
|
|
|
|
# Application Forms (Public)
|
|
path("application/signup/<slug:template_slug>/", views.application_signup, name="application_signup"),
|
|
path("application/<slug:template_slug>/", views.application_submit_form, name="application_submit_form"),
|
|
path("application/<slug:template_slug>/submit/", views.application_submit, name="application_submit"),
|
|
path("application/<slug:template_slug>/apply/", views.job_application_detail, name="job_application_detail"),
|
|
path("application/<slug:template_slug>/success/", views.application_success, name="application_success"),
|
|
|
|
# ========================================================================
|
|
# INTEGRATION & EXTERNAL SERVICES
|
|
# ========================================================================
|
|
# ERP Integration
|
|
path("integration/erp/", views_integration.ERPIntegrationView.as_view(), name="erp_integration"),
|
|
path("integration/erp/create-job/", views_integration.erp_create_job_view, name="erp_create_job"),
|
|
path("integration/erp/update-job/", views_integration.erp_update_job_view, name="erp_update_job"),
|
|
path("integration/erp/health/", views_integration.erp_integration_health, name="erp_integration_health"),
|
|
|
|
# LinkedIn Integration
|
|
path("jobs/linkedin/login/", views.linkedin_login, name="linkedin_login"),
|
|
path("jobs/linkedin/callback/", views.linkedin_callback, name="linkedin_callback"),
|
|
|
|
# Source Management
|
|
path("sources/", views_source.SourceListView.as_view(), name="source_list"),
|
|
path("sources/create/", views_source.SourceCreateView.as_view(), name="source_create"),
|
|
path("sources/<int:pk>/", views_source.SourceDetailView.as_view(), name="source_detail"),
|
|
path("sources/<int:pk>/update/", views_source.SourceUpdateView.as_view(), name="source_update"),
|
|
path("sources/<int:pk>/delete/", views_source.SourceDeleteView.as_view(), name="source_delete"),
|
|
path("sources/<int:pk>/generate-keys/", views_source.generate_api_keys_view, name="generate_api_keys"),
|
|
path("sources/<int:pk>/toggle-status/", views_source.toggle_source_status_view, name="toggle_source_status"),
|
|
path("sources/<int:pk>/test-connection/", views.test_source_connection, name="test_source_connection"),
|
|
path("sources/api/copy-to-clipboard/", views_source.copy_to_clipboard_view, name="copy_to_clipboard"),
|
|
|
|
# ========================================================================
|
|
# AGENCY & PORTAL MANAGEMENT
|
|
# ========================================================================
|
|
# Agency Management
|
|
path("agencies/", views.agency_list, name="agency_list"),
|
|
path("regenerate_agency_password/<slug:slug>/", views.regenerate_agency_password, name="regenerate_agency_password"),
|
|
path("deactivate_agency/<slug:slug>/", views.deactivate_agency, name="deactivate_agency"),
|
|
path("agencies/create/", views.agency_create, name="agency_create"),
|
|
path("agencies/<slug:slug>/", views.agency_detail, name="agency_detail"),
|
|
path("agencies/<slug:slug>/update/", views.agency_update, name="agency_update"),
|
|
path("agencies/<slug:slug>/delete/", views.agency_delete, name="agency_delete"),
|
|
path("agencies/<slug:slug>/applications/", views.agency_applications, name="agency_applications"),
|
|
|
|
# Agency Assignment Management
|
|
path("agency-assignments/", views.agency_assignment_list, name="agency_assignment_list"),
|
|
path("agency-assignments/create/", views.agency_assignment_create, name="agency_assignment_create"),
|
|
path("agency-assignments/<slug:slug>/create/", views.agency_assignment_create, name="agency_assignment_create"),
|
|
path("agency-assignments/<slug:slug>/", views.agency_assignment_detail, name="agency_assignment_detail"),
|
|
path("agency-assignments/<slug:slug>/update/", views.agency_assignment_update, name="agency_assignment_update"),
|
|
path("agency-assignments/<slug:slug>/extend-deadline/", views.agency_assignment_extend_deadline, name="agency_assignment_extend_deadline"),
|
|
|
|
# Agency Access Links
|
|
path("agency-access-links/create/", views.agency_access_link_create, name="agency_access_link_create"),
|
|
path("agency-access-links/<slug:slug>/", views.agency_access_link_detail, name="agency_access_link_detail"),
|
|
path("agency-access-links/<slug:slug>/deactivate/", views.agency_access_link_deactivate, name="agency_access_link_deactivate"),
|
|
path("agency-access-links/<slug:slug>/reactivate/", views.agency_access_link_reactivate, name="agency_access_link_reactivate"),
|
|
|
|
# Portal Management
|
|
path("portal/dashboard/", views.agency_portal_dashboard, name="agency_portal_dashboard"),
|
|
path("portal/logout/", views.portal_logout, name="portal_logout"),
|
|
path("portal/<int:pk>/reset/", views.portal_password_reset, name="portal_password_reset"),
|
|
path("portal/persons/", views.agency_portal_persons_list, name="agency_portal_persons_list"),
|
|
path("portal/assignment/<slug:slug>/", views.agency_portal_assignment_detail, name="agency_portal_assignment_detail"),
|
|
path("portal/assignment/<slug:slug>/submit-application/", views.agency_portal_submit_application_page, name="agency_portal_submit_application_page"),
|
|
path("portal/submit-application/", views.agency_portal_submit_application, name="agency_portal_submit_application"),
|
|
|
|
# Applicant Portal
|
|
path("applicant/dashboard/", views.applicant_portal_dashboard, name="applicant_portal_dashboard"),
|
|
|
|
# Portal Application Management
|
|
path("portal/applications/<int:application_id>/edit/", views.agency_portal_edit_application, name="agency_portal_edit_application"),
|
|
path("portal/applications/<int:application_id>/delete/", views.agency_portal_delete_application, name="agency_portal_delete_application"),
|
|
|
|
# ========================================================================
|
|
# USER & ACCOUNT MANAGEMENT
|
|
# ========================================================================
|
|
# User Profile & Management
|
|
path("user/<int:pk>", views.user_detail, name="user_detail"),
|
|
path("user/user_profile_image_update/<int:pk>", views.user_profile_image_update, name="user_profile_image_update"),
|
|
path("user/<int:pk>/password-reset/", views.portal_password_reset, name="portal_password_reset"),
|
|
|
|
# Staff Management
|
|
path("staff/create", views.create_staff_user, name="create_staff_user"),
|
|
path("set_staff_password/<int:pk>/", views.set_staff_password, name="set_staff_password"),
|
|
path("account_toggle_status/<int:pk>", views.account_toggle_status, name="account_toggle_status"),
|
|
|
|
# ========================================================================
|
|
# COMMUNICATION & MESSAGING
|
|
# ========================================================================
|
|
# Message Management
|
|
path("messages/", views.message_list, name="message_list"),
|
|
path("messages/create/", views.message_create, name="message_create"),
|
|
path("messages/<int:message_id>/", views.message_detail, name="message_detail"),
|
|
path("messages/<int:message_id>/reply/", views.message_reply, name="message_reply"),
|
|
path("messages/<int:message_id>/mark-read/", views.message_mark_read, name="message_mark_read"),
|
|
path("messages/<int:message_id>/mark-unread/", views.message_mark_unread, name="message_mark_unread"),
|
|
path("messages/<int:message_id>/delete/", views.message_delete, name="message_delete"),
|
|
|
|
# ========================================================================
|
|
# SYSTEM & ADMINISTRATIVE
|
|
# ========================================================================
|
|
# Settings & Configuration
|
|
path("settings/", views.admin_settings, name="admin_settings"),
|
|
path("settings/list/", views.settings_list, name="settings_list"),
|
|
path("settings/create/", views.settings_create, name="settings_create"),
|
|
path("settings/<int:pk>/", views.settings_detail, name="settings_detail"),
|
|
path("settings/<int:pk>/update/", views.settings_update, name="settings_update"),
|
|
path("settings/<int:pk>/delete/", views.settings_delete, name="settings_delete"),
|
|
path("settings/<int:pk>/toggle/", views.settings_toggle_status, name="settings_toggle_status"),
|
|
|
|
# System Utilities
|
|
path("easy_logs/", views.easy_logs, name="easy_logs"),
|
|
|
|
# Notes Management
|
|
path("note/<slug:slug>/application_add_note/", views.application_add_note, name="application_add_note"),
|
|
path("note/<slug:slug>/interview_add_note/", views.interview_add_note, name="interview_add_note"),
|
|
path("note/<slug:slug>/delete/", views.delete_note, name="delete_note"),
|
|
|
|
# ========================================================================
|
|
# DOCUMENT MANAGEMENT
|
|
# ========================================================================
|
|
path("documents/upload/<slug:slug>/", views.document_upload, name="document_upload"),
|
|
path("documents/<int:document_id>/delete/", views.document_delete, name="document_delete"),
|
|
path("documents/<int:document_id>/download/", views.document_download, name="document_download"),
|
|
|
|
# ========================================================================
|
|
# API ENDPOINTS
|
|
# ========================================================================
|
|
# Legacy API URLs (keeping for compatibility)
|
|
path("api/create/", views.create_job, name="create_job_api"),
|
|
path("api/<slug:slug>/edit/", views.edit_job, name="edit_job_api"),
|
|
path("api/application/<int:application_id>/", views.api_application_detail, name="api_application_detail"),
|
|
path("api/unread-count/", views.api_unread_count, name="api_unread_count"),
|
|
|
|
# HTMX Endpoints
|
|
path("htmx/<int:pk>/application_criteria_view/", views.application_criteria_view_htmx, name="application_criteria_view_htmx"),
|
|
path("htmx/<slug:slug>/application_set_exam_date/", views.application_set_exam_date, name="application_set_exam_date"),
|
|
path("htmx/<slug:slug>/application_update_status/", views.application_update_status, name="application_update_status"),
|
|
]
|