Skip to content

Commit

Permalink
Merge a2d8b61 into 38792a7
Browse files Browse the repository at this point in the history
  • Loading branch information
macro1 committed Mar 28, 2015
2 parents 38792a7 + a2d8b61 commit c02eb26
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 15 deletions.
14 changes: 10 additions & 4 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,12 @@ python:
env:
- DJANGO="Django>=1.4,<1.5"
- DJANGO="Django>=1.6,<1.7"
- DJANGO="Django>=1.7,<1.8"
- DJANGO="Django>=1.7,<1.8a"
- DJANGO="Django>=1.8a,<1.9"

install:
- pip install -U coverage coveralls $DJANGO
- pip install -U coverage coveralls
- pip install --pre -U $DJANGO
- python -c 'from __future__ import print_function; import django; print("Django " + django.get_version())'

script: coverage run -a setup.py test
Expand All @@ -22,14 +24,18 @@ matrix:
- python: 2.6
env: DJANGO="Django>=1.6,<1.7"
- python: 2.6
env: DJANGO="Django>=1.7,<1.8"
env: DJANGO="Django>=1.7,<1.8a"
- python: 2.6
env: DJANGO="Django>=1.8a,<1.9"
- python: 3.2
env: DJANGO="Django>=1.4,<1.5"
- python: 3.3
env: DJANGO="Django>=1.4,<1.5"

include:
- python: 3.4
env: DJANGO="Django>=1.7,<1.8"
env: DJANGO="Django>=1.7,<1.8a"
- python: 3.4
env: DJANGO="Django>=1.8a,<1.9"

after_success: coveralls
1 change: 1 addition & 0 deletions AUTHORS.rst
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ Authors
- Trey Hunner
- Ulysses Vilela
- vnagendra
- Rod Xavier Bondoc

Background
==========
Expand Down
3 changes: 3 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
Changes
=======

1.5.x(not yet released)
- Add support for Django 1.8+

1.5.4 (2015-01-03)
------------------
- Fix a bug when models have a ``ForeignKey`` with ``primary_key=True``
Expand Down
30 changes: 22 additions & 8 deletions simple_history/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@
from django.db.models import loading
from django.db.models.fields.proxy import OrderWrt
from django.db.models.fields.related import RelatedField
from django.db.models.related import RelatedObject
try:
from django.db.models.fields.related import RelatedObject
except ImportError:
pass
from django.conf import settings
from django.contrib import admin
from django.utils import importlib, six
Expand Down Expand Up @@ -122,13 +125,24 @@ def copy_fields(self, model):
field = copy.copy(field)
field.rel = copy.copy(field.rel)
if isinstance(field, models.ForeignKey):
# Don't allow reverse relations.
# ForeignKey knows best what datatype to use for the column
# we'll used that as soon as it's finalized by copying rel.to
field.__class__ = CustomForeignKeyField
field.rel.related_name = '+'
field.null = True
field.blank = True
if not 'RelatedObject' in globals():
old_field = field
field = type(field)(field.rel.to, related_name='+', null=True, blank=True)
field.rel = old_field.rel
field.rel.related_name = '+'
field.name = old_field.name
field.db_constraint = False
field._unique = False
setattr(field, 'attname', field.name)
else:
# Don't allow reverse relations.
# ForeignKey knows best what datatype to use for the column
# we'll used that as soon as it's finalized by copying rel.to
# Django < 1.8
field.__class__ = CustomForeignKeyField
field.rel.related_name = '+'
field.null = True
field.blank = True
if isinstance(field, OrderWrt):
# OrderWrt is a proxy field, switch to a plain IntegerField
field.__class__ = models.IntegerField
Expand Down
12 changes: 10 additions & 2 deletions simple_history/tests/tests/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -488,11 +488,19 @@ def test_invalid_bases(self):

def test_import_related(self):
field_object = HistoricalChoice._meta.get_field_by_name('poll_id')[0]
self.assertEqual(field_object.related.model, Choice)
try:
related_model = field_object.rel.related_model
except AttributeError: # Django<1.8
related_model = field_object.related.model
self.assertEqual(related_model, Choice)

def test_string_related(self):
field_object = HistoricalState._meta.get_field_by_name('library_id')[0]
self.assertEqual(field_object.related.model, State)
try:
related_model = field_object.rel.related_model
except AttributeError: # Django<1.8
related_model = field_object.related.model
self.assertEqual(related_model, State)

@skipUnless(django.get_version() >= "1.7", "Requires 1.7 migrations")
def test_state_serialization_of_customfk(self):
Expand Down
4 changes: 3 additions & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ envlist =
py{26,27}-django14,
py{26,27,32,33}-django16,
py{27,32,33,34}-django17,
py{27,32,33,34}-django18,
py{27,32,33,34}-djangotrunk,
docs, flake8

Expand Down Expand Up @@ -31,6 +32,7 @@ deps =
py26: unittest2
django14: Django>=1.4,<1.5
django16: Django>=1.6,<1.7
django17: Django>=1.7,<1.8
django17: Django>=1.7,<1.8a
django18: Django>=1.8a,<1.9a
djangotrunk: https://github.com/django/django/tarball/master
commands = coverage run -a --branch setup.py test

0 comments on commit c02eb26

Please sign in to comment.