from django.urls import path, reverse_lazy
from django.contrib.auth import views as auth_views
from .views.auth import CustomPasswordResetView
from . import main_views as views  # Import from the renamed file
from .forms.auth import CustomAuthenticationForm
from .forms.password_reset import CustomPasswordResetForm

app_name = 'events'  # This helps with URL namespacing

urlpatterns = [
    # Home URL
    path('', views.index, name='index'),
    
    # Event URLs
    path('events/', views.event_list, name='event_list'),
    path('events/<int:event_id>/', views.event_detail, name='event_detail'),
    
    # Speaker URLs
    path('speaker/<int:speaker_id>/', views.speaker_detail, name='speaker_detail'),
    
    # Call for Proposals URLs
    path('cfp/', views.cfp_list, name='cfp_list'),
    path('cfp/<int:cfp_id>/', views.cfp_detail, name='cfp_detail'),
    path('cfp/<int:cfp_id>/submit/', views.submit_proposal, name='submit_proposal'),
    
    # Gallery URLs
    path('gallery/', views.gallery_view, name='gallery'),
    path('events/<int:event_id>/gallery/', views.event_gallery_view, name='event_gallery'),
    
    # Registration URLs
    path('events/<int:event_id>/register/', views.register_for_event, name='register_for_event'),
    path('events/<int:event_id>/cancel/', views.cancel_registration, name='cancel_registration'),
    path('events/<int:event_id>/export/', views.export_event_registrations_csv, name='export_event_registrations'),
    
    # Archive URLs
    path('archive/', views.archive_view, name='archive'),
    
    # Publications URLs
    path('publications/', views.publications_view, name='publications'),
    
    # User Management URLs
    path('users/', views.user_list, name='user_list'),
    path('users/export/', views.export_users_csv, name='export_users_csv'),
    path('users/<str:username>/make-admin/', views.make_admin, name='make_admin'),
    path('users/<str:username>/remove-admin/', views.remove_admin, name='remove_admin'),
    path('users/<str:username>/make-staff/', views.make_staff, name='make_staff'),
    path('users/<str:username>/remove-staff/', views.remove_staff, name='remove_staff'),
    
    # User Profile URLs
    path('profile/', views.user_profile, name='my_profile'),
    path('profile/<str:username>/', views.user_profile, name='view_profile'),
    
    # Authentication URLs
    path('register/', views.register, name='register'),
    path('login/', auth_views.LoginView.as_view(
        template_name='registration/login.html',
        authentication_form=CustomAuthenticationForm
    ), name='login'),
    path('logout/', auth_views.LogoutView.as_view(next_page='events:event_list'), name='logout'),
    
    # Password Change URLs
    path('password_change/', auth_views.PasswordChangeView.as_view(
        template_name='registration/password_change_form.html',
        success_url=reverse_lazy('events:password_change_done')
    ), name='password_change'),
    path('password_change/done/', auth_views.PasswordChangeDoneView.as_view(
        template_name='registration/password_change_done.html'
    ), name='password_change_done'),
]