from argparse import Namespace
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from django.views.defaults import page_not_found, server_error
from django.contrib.sitemaps.views import sitemap
from .sitemaps import StaticViewSitemap, NewsSitemap, EventSitemap, PublicationSitemap

sitemaps = {
    'static': StaticViewSitemap,
    'news': NewsSitemap,
    'events': EventSitemap,
    'publications': PublicationSitemap,
}

# Define URL patterns for the main project
urlpatterns = [
    # Admin URL
    path('admin/', admin.site.urls),
    
    # App URLs
    path('', include('home.urls')),
    path('accounts/', include('accounts.urls')),  
    path('about/', include('about.urls')),
    path('programs/', include('programs.urls')),
    path('volunteer/', include('volunteer.urls')),
    path('membership/', include('membership.urls')),
    path('events/', include('events.urls')),
    path('news/', include('news.urls')),
    path('contact/', include('contact.urls')),
    path('faq/', include('faq.urls')),
    path('donate/', include('donate.urls')),
    path('publications/', include('publications.urls')),
    path('django-ckeditor-5/', include('django_ckeditor_5.urls')),
    
    # SEO URLs
    path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
]

# Serve media files in debug mode
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

# Error handlers - using our custom templates
def custom_404(request, exception):
    return page_not_found(request, exception, template_name='404.html')

def custom_500(request):
    return server_error(request, template_name='500.html')

handler404 = 'main.urls.custom_404'
handler500 = 'main.urls.custom_500'