Merge pull request #87 from eprikazc/master

Add support for Django2.0, drop 1.8
This commit is contained in:
Waldecir Santos 2018-10-01 18:52:35 +01:00 committed by GitHub
commit 92e0e1ca0c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 42 additions and 28 deletions

View file

@ -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:

View file

@ -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))

View file

@ -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

View file

@ -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)),

View file

@ -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
View file

@ -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