Merge branch 'master' into dj111-fix

fix_request_path_info
Diederik van der Boor 2017-04-26 15:53:59 +02:00 committed by GitHub
commit 89632483a7
5 changed files with 109 additions and 92 deletions

1
.gitignore vendored
View File

@ -5,6 +5,7 @@
*.egg-info/
*.egg/
.coverage
coverage.xml
.project
.idea/
.pydevproject

View File

@ -10,98 +10,98 @@ python:
- "3.5"
- "3.6"
env:
- DJANGO="Django>=1.4,<1.5"
- DJANGO="Django>=1.5,<1.6"
- DJANGO="Django>=1.6,<1.7"
- DJANGO="Django>=1.7,<1.8"
- DJANGO="Django>=1.8,<1.9"
- DJANGO="Django>=1.9,<1.10"
- DJANGO="Django>=1.10,<1.11"
- DJANGO="Django>=1.11,<1.12"
- DJANGO="https://github.com/django/django/tarball/master"
- TOXENV="django14"
- TOXENV="django15"
- TOXENV="django16"
- TOXENV="django17"
- TOXENV="django18"
- TOXENV="django19"
- TOXENV="django110"
- TOXENV="django111"
- TOXENV="djangodev"
matrix:
fast_finish: true
exclude:
- python: "3.6"
env: DJANGO="Django>=1.4,<1.5"
env: TOXENV="django14"
- python: "3.6"
env: DJANGO="Django>=1.5,<1.6"
env: TOXENV="django15"
- python: "3.6"
env: DJANGO="Django>=1.6,<1.7"
env: TOXENV="django16"
- python: "3.6"
env: DJANGO="Django>=1.7,<1.8"
env: TOXENV="django17"
- python: "3.6"
env: DJANGO="Django>=1.8,<1.9"
env: TOXENV="django18"
- python: "3.6"
env: DJANGO="Django>=1.9,<1.10"
env: TOXENV="django19"
- python: "3.6"
env: DJANGO="Django>=1.10,<1.11"
env: TOXENV="django110"
- python: "3.5"
env: DJANGO="Django>=1.4,<1.5"
env: TOXENV="django14"
- python: "3.5"
env: DJANGO="Django>=1.5,<1.6"
env: TOXENV="django15"
- python: "3.5"
env: DJANGO="Django>=1.6,<1.7"
env: TOXENV="django16"
- python: "3.5"
env: DJANGO="Django>=1.7,<1.8"
env: TOXENV="django17"
- python: "3.4"
env: DJANGO="Django>=1.4,<1.5"
env: TOXENV="django14"
- python: "3.4"
env: DJANGO="Django>=1.9,<1.10"
env: TOXENV="django19"
- python: "3.4"
env: DJANGO="Django>=1.10,<1.11"
env: TOXENV="django110"
- python: "3.4"
env: DJANGO="Django>=1.11,<1.12"
env: TOXENV="django111"
- python: "3.3"
env: DJANGO="Django>=1.4,<1.5"
env: TOXENV="django14"
- python: "3.3"
env: DJANGO="Django>=1.9,<1.10"
env: TOXENV="django19"
- python: "3.3"
env: DJANGO="Django>=1.10,<1.11"
env: TOXENV="django110"
- python: "3.3"
env: DJANGO="Django>=1.11,<1.12"
env: TOXENV="django111"
- python: "3.3"
env: DJANGO="https://github.com/django/django/tarball/master"
env: TOXENV="djangodev"
- python: "3.2"
env: DJANGO="Django>=1.4,<1.5"
env: TOXENV="django14"
- python: "3.2"
env: DJANGO="Django>=1.9,<1.10"
env: TOXENV="django19"
- python: "3.2"
env: DJANGO="Django>=1.10,<1.11"
env: TOXENV="django110"
- python: "3.2"
env: DJANGO="Django>=1.11,<1.12"
env: TOXENV="django111"
- python: "3.2"
env: DJANGO="https://github.com/django/django/tarball/master"
env: TOXENV="djangodev"
- python: "2.6"
env: DJANGO="Django>=1.7,<1.8"
env: TOXENV="django17"
- python: "2.6"
env: DJANGO="Django>=1.8,<1.9"
env: TOXENV="django18"
- python: "2.6"
env: DJANGO="Django>=1.9,<1.10"
env: TOXENV="django19"
- python: "2.6"
env: DJANGO="Django>=1.10,<1.11"
env: TOXENV="django110"
- python: "2.6"
env: DJANGO="Django>=1.11,<1.12"
env: TOXENV="django111"
- python: "2.6"
env: DJANGO="https://github.com/django/django/tarball/master"
env: TOXENV="djangodev"
allow_failures:
- env: DJANGO="https://github.com/django/django/tarball/master"
- env: TOXENV="djangodev"
before_install:
- pip install codecov
install:
- pip install -q $DJANGO coverage==3.6
- pip install codecov coverage==3.6 tox
script:
- coverage run --source=polymorphic runtests.py
- tox
after_success:
- coverage xml -i
- codecov
branches:

View File

@ -1,4 +1,4 @@
.. image:: https://travis-ci.org/django-polymorphic/django-polymorphic.png?branch=master
.. image:: https://travis-ci.org/django-polymorphic/django-polymorphic.svg?branch=master
:target: http://travis-ci.org/django-polymorphic/django-polymorphic
.. image:: https://img.shields.io/pypi/v/django-polymorphic.svg
:target: https://pypi.python.org/pypi/django-polymorphic/

View File

@ -39,6 +39,8 @@ def _polymorhic_iterator(queryset, base_iter):
base_result_objects = []
reached_end = False
# Make sure the base iterator is read in chunks instead of
# reading it completely, in case our caller read only a few objects.
for i in range(Polymorphic_QuerySet_objects_per_request):
try:
o = next(base_iter)
@ -57,7 +59,7 @@ def _polymorhic_iterator(queryset, base_iter):
if django.VERSION >= (1, 9):
# We ignore this on django < 1.9, as ModelIterable didn't yet exist.
from django.db.models.query import ModelIterable
class PolymorphicModelIterable(ModelIterable):
@ -115,8 +117,9 @@ class PolymorphicQuerySet(QuerySet):
def __init__(self, *args, **kwargs):
super(PolymorphicQuerySet, self).__init__(*args, **kwargs)
if django.VERSION >= (1, 9):
# On django < 1.9 we override the iterator() method instead
self._iterable_class = PolymorphicModelIterable
# init our queryset object member variables
self.polymorphic_disabled = False
# A parallel structure to django.db.models.query.Query.deferred_loading,
# which we maintain with the untranslated field names passed to
@ -460,8 +463,22 @@ class PolymorphicQuerySet(QuerySet):
return resultlist
if django.VERSION < (1, 9):
# Before Django 1.9 ModelIterable functionality was implemented in `iterator` method
# On django 1.9+, we can define self._iterator_class instead of iterator()
def iterator(self):
"""
This function is used by Django 1.8 and earlier for all object retrieval.
By overriding it, we modify the objects that this queryset returns
when it is evaluated (or its get method or other object-returning methods are called).
Here we do the same as::
base_result_objects = list(super(PolymorphicQuerySet, self).iterator())
real_results = self._get_real_instances(base_result_objects)
for o in real_results: yield o
but it requests the objects in chunks from the database,
with Polymorphic_QuerySet_objects_per_request per chunk
"""
base_iter = super(PolymorphicQuerySet, self).iterator()
# disabled => work just like a normal queryset

11
tox.ini
View File

@ -5,14 +5,13 @@ envlist=
py32-django{15,16,17,18},
py33-django{15,16,17,18},
py34-django{15,16,17,18,19,110,111},
py35-django{18,19,110,111}
py35-django{18,19,110,111},
py36-django{111},
# py33-django-dev,
py35-django{18,19,110,111,dev},
py36-django{111,dev},
docs,
[testenv]
deps =
coverage == 3.6
django14: Django >= 1.4, < 1.5
django15: Django >= 1.5, < 1.6
django16: Django >= 1.6, < 1.7
@ -21,9 +20,9 @@ deps =
django19: Django >= 1.9, < 1.10
django110: Django >= 1.10, < 1.11
django111: Django >= 1.11, < 1.12
django-dev: https://github.com/django/django/tarball/master
djangodev: https://github.com/django/django/tarball/master
commands=
python runtests.py
coverage run --source polymorphic runtests.py
[testenv:docs]
deps=Sphinx