mirror of
https://github.com/jazzband/django-dbtemplates.git
synced 2026-03-16 22:20:28 +00:00
Update Loader class to up-to-date template loader API
load_template_sources is deprecated in Django 1.9 ad removed in Django2.0 see https://docs.djangoproject.com/en/1.9/releases/1.9/#template-loader-apis-have-changed
This commit is contained in:
parent
3ee69a58ce
commit
e3318658a5
2 changed files with 17 additions and 6 deletions
|
|
@ -1,6 +1,6 @@
|
|||
from django.contrib.sites.models import Site
|
||||
from django.db import router
|
||||
from django.template import TemplateDoesNotExist
|
||||
from django.template import Origin, TemplateDoesNotExist
|
||||
from django.template.loaders.base import Loader as BaseLoader
|
||||
|
||||
from dbtemplates.models import Template
|
||||
|
|
@ -19,13 +19,24 @@ class Loader(BaseLoader):
|
|||
"""
|
||||
is_usable = True
|
||||
|
||||
def load_and_store_template(self, template_name, cache_key, site, **params):
|
||||
def get_template_sources(self, template_name, template_dirs=None):
|
||||
yield Origin(
|
||||
name=template_name,
|
||||
template_name=template_name,
|
||||
loader=self,
|
||||
)
|
||||
|
||||
def get_contents(self, origin):
|
||||
content, _ = self._load_template_source(origin.template_name)
|
||||
return content
|
||||
|
||||
def _load_and_store_template(self, template_name, cache_key, site, **params):
|
||||
template = Template.objects.get(name__exact=template_name, **params)
|
||||
db = router.db_for_read(Template, instance=template)
|
||||
display_name = 'dbtemplates:%s:%s:%s' % (db, template_name, site.domain)
|
||||
return set_and_return(cache_key, template.content, display_name)
|
||||
|
||||
def load_template_source(self, template_name, template_dirs=None):
|
||||
def _load_template_source(self, template_name, template_dirs=None):
|
||||
# The logic should work like this:
|
||||
# * Try to find the template in the cache. If found, return it.
|
||||
# * Now check the cache if a lookup for the given template
|
||||
|
|
@ -61,11 +72,11 @@ class Loader(BaseLoader):
|
|||
# Not marked as not-found, move on...
|
||||
|
||||
try:
|
||||
return self.load_and_store_template(template_name, cache_key,
|
||||
return self._load_and_store_template(template_name, cache_key,
|
||||
site, sites__in=[site.id])
|
||||
except (Template.MultipleObjectsReturned, Template.DoesNotExist):
|
||||
try:
|
||||
return self.load_and_store_template(template_name, cache_key,
|
||||
return self._load_and_store_template(template_name, cache_key,
|
||||
site, sites__isnull=True)
|
||||
except (Template.MultipleObjectsReturned, Template.DoesNotExist):
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ class DbTemplatesTestCase(TestCase):
|
|||
loader.template_source_loaders = None
|
||||
settings.TEMPLATE_LOADERS = self.old_template_loaders
|
||||
|
||||
def test_basiscs(self):
|
||||
def test_basics(self):
|
||||
self.assertEqual(list(self.t1.sites.all()), [self.site1])
|
||||
self.assertTrue("base" in self.t1.content)
|
||||
self.assertEqual(list(Template.objects.filter(sites=self.site1)),
|
||||
|
|
|
|||
Loading…
Reference in a new issue