mirror of
https://github.com/jazzband/django-dbtemplates.git
synced 2026-03-16 22:20:28 +00:00
Merge pull request #87 from eprikazc/master
Add support for Django2.0, drop 1.8
This commit is contained in:
commit
92e0e1ca0c
6 changed files with 42 additions and 28 deletions
|
|
@ -4,6 +4,13 @@ python:
|
|||
- '3.4'
|
||||
- '3.5'
|
||||
- '3.6'
|
||||
# Enable 3.7 without globally enabling sudo and dist: xenial for other build jobs
|
||||
# See https://github.com/travis-ci/travis-ci/issues/9815
|
||||
matrix:
|
||||
include:
|
||||
- python: 3.7
|
||||
dist: xenial
|
||||
sudo: true
|
||||
sudo: false
|
||||
cache: pip
|
||||
install:
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ class CodeMirrorTextArea(forms.Textarea):
|
|||
settings.DBTEMPLATES_MEDIA_PREFIX, 'css/editor.css')])
|
||||
js = [posixpath.join(settings.DBTEMPLATES_MEDIA_PREFIX, 'js/codemirror.js')]
|
||||
|
||||
def render(self, name, value, attrs=None):
|
||||
def render(self, name, value, attrs=None, renderer=None):
|
||||
result = []
|
||||
result.append(
|
||||
super(CodeMirrorTextArea, self).render(name, value, attrs))
|
||||
|
|
|
|||
|
|
@ -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)),
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
from django.template import (Template, TemplateDoesNotExist,
|
||||
TemplateSyntaxError)
|
||||
from importlib import import_module
|
||||
|
||||
|
||||
def get_loaders():
|
||||
|
|
@ -17,20 +16,13 @@ def get_template_source(name):
|
|||
if loader.__module__.startswith('dbtemplates.'):
|
||||
# Don't give a damn about dbtemplates' own loader.
|
||||
continue
|
||||
module = import_module(loader.__module__)
|
||||
load_template_source = getattr(
|
||||
module, 'load_template_source', None)
|
||||
if load_template_source is None:
|
||||
load_template_source = loader.load_template_source
|
||||
try:
|
||||
source, origin = load_template_source(name)
|
||||
for origin in loader.get_template_sources(name):
|
||||
try:
|
||||
source = loader.get_contents(origin)
|
||||
except (NotImplementedError, TemplateDoesNotExist):
|
||||
continue
|
||||
if source:
|
||||
return source
|
||||
except NotImplementedError:
|
||||
pass
|
||||
except TemplateDoesNotExist:
|
||||
pass
|
||||
return None
|
||||
|
||||
|
||||
def check_template_syntax(template):
|
||||
|
|
|
|||
20
tox.ini
20
tox.ini
|
|
@ -4,11 +4,12 @@ usedevelop = True
|
|||
minversion = 1.8
|
||||
envlist =
|
||||
flake8-py27,
|
||||
flake8-py35,
|
||||
flake8-py37,
|
||||
readme-py27,
|
||||
py{27,34,35}-dj{18,19,110}
|
||||
readme-py37,
|
||||
py{27,34,35,36}-dj111
|
||||
py{34,35,36}-dj20
|
||||
py{34,35,36,37}-dj20
|
||||
py{34,35,36,37}-dj21
|
||||
|
||||
[testenv]
|
||||
basepython =
|
||||
|
|
@ -16,16 +17,15 @@ basepython =
|
|||
py34: python3.4
|
||||
py35: python3.5
|
||||
py36: python3.6
|
||||
py37: python3.7
|
||||
usedevelop = true
|
||||
setenv =
|
||||
DJANGO_SETTINGS_MODULE = dbtemplates.test_settings
|
||||
deps =
|
||||
-rrequirements/tests.txt
|
||||
dj18: Django<1.9
|
||||
dj19: Django<1.10
|
||||
dj110: Django<1.11
|
||||
-r requirements/tests.txt
|
||||
dj111: Django<2.0
|
||||
dj20: Django<2.1
|
||||
dj21: Django<2.2
|
||||
djmaster: https://github.com/django/django/archive/master.tar.gz#egg=django
|
||||
|
||||
commands =
|
||||
|
|
@ -37,11 +37,15 @@ commands =
|
|||
commands = python setup.py check -r -s
|
||||
deps = readme_renderer
|
||||
|
||||
[testenv:readme-py37]
|
||||
commands = python setup.py check -r -s
|
||||
deps = readme_renderer
|
||||
|
||||
[testenv:flake8-py27]
|
||||
commands = flake8 dbtemplates
|
||||
deps = flake8
|
||||
|
||||
[testenv:flake8-py35]
|
||||
[testenv:flake8-py37]
|
||||
commands = flake8 dbtemplates
|
||||
deps = flake8
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue