# """ # Tenant middleware for multi-tenancy support. # """ # # from django.http import Http404 # from django.shortcuts import get_object_or_404 # from .models import Tenant # # # class TenantMiddleware: # """ # Middleware to handle tenant resolution and context. # """ # # def __init__(self, get_response): # self.get_response = get_response # # def __call__(self, request): # # Skip tenant resolution for admin and API endpoints # if request.path.startswith('/admin/') or request.path.startswith('/api/'): # response = self.get_response(request) # return response # # # Get tenant from subdomain or header # tenant = self.get_tenant(request) # # if tenant: # request.tenant = tenant # else: # # For development, use the first available tenant # try: # request.tenant = Tenant.objects.filter(is_active=True).first() # except Tenant.DoesNotExist: # request.tenant = None # # response = self.get_response(request) # return response # # def get_tenant(self, request): # """ # Resolve tenant from request. # """ # # Try to get tenant from subdomain # host = request.get_host() # if '.' in host: # subdomain = host.split('.')[0] # try: # return Tenant.objects.get( # name__iexact=subdomain, # is_active=True # ) # except Tenant.DoesNotExist: # pass # # # Try to get tenant from header (for API calls) # tenant_id = request.headers.get('X-Tenant-ID') # if tenant_id: # try: # return Tenant.objects.get( # tenant_id=tenant_id, # is_active=True # ) # except Tenant.DoesNotExist: # pass # # return None #