diff --git a/scopedsites/middleware.py b/scopedsites/middleware.py index 95284a0..8b2ef25 100644 --- a/scopedsites/middleware.py +++ b/scopedsites/middleware.py @@ -1,48 +1,25 @@ -import asyncio - from django.http import Http404 +from django.utils.deprecation import MiddlewareMixin from django_scopes import scope from scopedsites.models import Domain -class DomainScopeMiddleware: - async_capable = True - - def __init__(self, get_response): - self.get_response = get_response - - self.is_async = asyncio.iscoroutinefunction(get_response) - - self.__call__ = self._ahandler if self.is_async else self._handler - - async def _ahandler(self, request): +class DomainScopeMiddleware(MiddlewareMixin): + def __call__(self, request): d = Domain.get_from_request(request) with scope(domain=d): - return await self.get_response(request) - - def _handler(self, request): - d = Domain.get_from_request(request) # technically does hit the db layer, but should get caught in memcache - # TODO: performance testing - - with scope(domain=d): - return self.get_response(request) + return super()(request) -class DomainAutoCreateMiddleware: - async_capable = True - +class DomainAutoCreateMiddleware(MiddlewareMixin): def __init__(self, get_response): - self.get_response = get_response - - self.is_async = asyncio.iscoroutinefunction(get_response) - - self.__call__ = self._ahandler if self.is_async else self._handler + super().__init__(get_response) self.cache = set() - def ensure_exists(self, r): + def process_request(self, r): if (host := r.META.get("HTTP_HOST")) in self.cache: return @@ -51,11 +28,3 @@ class DomainAutoCreateMiddleware: self.cache.add(host) except Http404: Domain.objects.create(fqdn=r.META.get('HTTP_HOST')) - - def _handler(self, req): - self.ensure_exists(req) - return self.get_response(req) - - async def _ahandler(self, req): - self.ensure_exists(req) - return await self.get_response(req) diff --git a/setup.py b/setup.py index 2fb9951..a048186 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ from setuptools import setup setup( name="django_scopedsites", packages=["scopedsites", "scopedsites.migrations"], - version="0.1.6", + version="0.1.7", description="django_scopes x django.contrib.sites", python_requires=">=3.6", install_requires=[