mirror of
https://github.com/jazzband/django-dbtemplates.git
synced 2026-04-17 21:51:00 +00:00
add a middleware to handle http request for switch currently site
This commit is contained in:
parent
49fc6c47ff
commit
eaf15b3a8a
4 changed files with 23 additions and 5 deletions
|
|
@ -6,6 +6,7 @@ from django.template.loaders.base import Loader as BaseLoader
|
|||
from dbtemplates.models import Template
|
||||
from dbtemplates.utils.cache import (cache, get_cache_key,
|
||||
set_and_return, get_cache_notfound_key)
|
||||
from .middleware import get_request
|
||||
|
||||
|
||||
class Loader(BaseLoader):
|
||||
|
|
@ -38,7 +39,7 @@ class Loader(BaseLoader):
|
|||
# * If all of the above steps have failed we generate a new key
|
||||
# in the cache indicating that queries failed, with the current
|
||||
# timestamp.
|
||||
site = Site.objects.get_current()
|
||||
site = Site.objects.get_current(get_request())
|
||||
cache_key = get_cache_key(template_name)
|
||||
if cache:
|
||||
try:
|
||||
|
|
|
|||
17
dbtemplates/middleware.py
Normal file
17
dbtemplates/middleware.py
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
from django.utils.deprecation import MiddlewareMixin
|
||||
|
||||
_request = []
|
||||
|
||||
|
||||
class RecordRequestMiddleware(MiddlewareMixin):
|
||||
def process_request(self, request):
|
||||
_request.append(request)
|
||||
|
||||
|
||||
def process_response(self, request, response):
|
||||
_request.pop()
|
||||
return response
|
||||
|
||||
|
||||
def get_request():
|
||||
return _request[0]
|
||||
|
|
@ -10,7 +10,7 @@ from django.db.models import signals
|
|||
from django.template import TemplateDoesNotExist
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.timezone import now
|
||||
|
||||
from .middleware import get_request
|
||||
|
||||
class Template(models.Model):
|
||||
"""
|
||||
|
|
@ -70,7 +70,7 @@ def add_default_site(instance, **kwargs):
|
|||
"""
|
||||
if not settings.DBTEMPLATES_ADD_DEFAULT_SITE:
|
||||
return
|
||||
current_site = Site.objects.get_current()
|
||||
current_site = Site.objects.get_current(get_request())
|
||||
if current_site not in instance.sites.all():
|
||||
instance.sites.add(current_site)
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ from django.contrib.sites.models import Site
|
|||
from django.template.defaultfilters import slugify
|
||||
|
||||
from dbtemplates.conf import settings
|
||||
|
||||
from ..middleware import get_request
|
||||
|
||||
def get_cache_backend():
|
||||
"""
|
||||
|
|
@ -21,7 +21,7 @@ cache = get_cache_backend()
|
|||
|
||||
|
||||
def get_cache_key(name):
|
||||
current_site = Site.objects.get_current()
|
||||
current_site = Site.objects.get_current(get_request())
|
||||
return 'dbtemplates::%s::%s' % (slugify(name), current_site.pk)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue