"""
URLs principales du projet Bilal Oil avec gestion d'erreur personnalisée
"""
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.static import serve
from django.urls import re_path

urlpatterns = [
    # Interface d'administration
    path('admin/', admin.site.urls),

    # Application Bilal Oil
    path('', include('bilal.urls')),
]

# Servir les fichiers média et statiques
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
else:
    # En production, servir les fichiers statiques via Django si nécessaire
    urlpatterns += [
        re_path(r'^media/(?P<path>.*)$', serve, {
            'document_root': settings.MEDIA_ROOT,
        }),
        re_path(r'^static/(?P<path>.*)$', serve, {
            'document_root': settings.STATIC_ROOT,
        }),
    ]

# Configuration de l'admin
admin.site.site_header = "Administration Bilal Oil"
admin.site.site_title = "Bilal Oil Admin"
admin.site.index_title = "Gestion du site Bilal Oil"

# Handlers d'erreur personnalisés
# Ces handlers seront utilisés automatiquement par Django
handler400 = 'bilal.error_views.error_400'
handler403 = 'bilal.error_views.error_403'
handler404 = 'bilal.error_views.error_404'
handler500 = 'bilal.error_views.error_500'

# Handlers supplémentaires (gérable via middleware)
# handler405 sera géré par le middleware personnalisé
# handler503 sera géré par le middleware personnalisé

# URL de test pour les erreurs (à supprimer en production)
if settings.DEBUG:
    from bilal import error_views

    test_error_patterns = [
        path('test-error/400/', lambda request: error_views.error_400(request), name='test_error_400'),
        path('test-error/403/', lambda request: error_views.error_403(request), name='test_error_403'),
        path('test-error/404/', lambda request: error_views.error_404(request), name='test_error_404'),
        path('test-error/405/', lambda request: error_views.error_405(request), name='test_error_405'),
        path('test-error/500/', lambda request: error_views.error_500(request), name='test_error_500'),
        path('test-error/503/', lambda request: error_views.error_503(request), name='test_error_503'),
    ]

    urlpatterns += test_error_patterns