from wagtail.models import Site

class SimpleTenantMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        # 1. Ambil hostname murni tanpa port (misal: tenant-a.localhost)
        host = request.get_host().split(':')[0]
        
        # 2. Caching: Pastikan kita tidak melakukan query berulang dalam satu request
        if not hasattr(request, '_wagtail_site'):
            # 3. Lookup site berdasarkan hostname di database
            site = Site.objects.filter(hostname=host).first()
            
            # 4. Fallback: Gunakan Default Site jika domain tidak ditemukan
            # Ini mencegah error saat akses via IP atau domain baru
            if not site:
                site = Site.objects.filter(is_default_site=True).first()
            
            # 5. Pasangkan ke atribut kustom (untuk Hooks Anda)
            request._wagtail_site = site
            
            # 6. Pasangkan ke atribut standar (untuk kompatibilitas Wagtail/Django)
            # Ini krusial agar TenantSettings muncul otomatis sesuai domain
            request.site = site 
        
        return self.get_response(request)