Skip to content

Commit

Permalink
Added tests and fixes for Django 2.2 and 3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
David Krauth authored and dakrauth committed Jul 16, 2020
1 parent a51bfb7 commit e21f829
Show file tree
Hide file tree
Showing 12 changed files with 57 additions and 54 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@ pip-log.txt
/docs/_build
/out
.tox/
.python-version
12 changes: 5 additions & 7 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,12 @@ language: python

matrix:
include:
- { python: 2.7, env: TOXENV=py27-dj18 }
- { python: 3.4, env: TOXENV=py34-dj18 }
- { python: 2.7, env: TOXENV=py27-dj111 }
- { python: 3.6, env: TOXENV=py36-dj111 }
- { python: 3.6, env: TOXENV=py36-dj20 }
- { python: 3.6, env: TOXENV=py36-dj21 }
allow_failures:
- env: TOXENV=py36-dj21
- { python: 3.7, env: TOXENV=py37-dj111 }
- { python: 3.7, env: TOXENV=py37-dj20 }
- { python: 3.7, env: TOXENV=py37-dj21 }
- { python: 3.7, env: TOXENV=py37-dj22 }
- { python: 3.7, env: TOXENV=py37-dj30 }

sudo: false

Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
This software is published under the BSD 2-Clause License as listed below.
http://www.opensource.org/licenses/bsd-license.php

Copyright (c) 2015, Atlantic Media
Copyright (c) 2015-2020, Atlantic Media
All rights reserved.

Redistribution and use in source and binary forms, with or without
Expand Down
2 changes: 1 addition & 1 deletion generic_plus/curation/fields.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import six
import django
from django.apps import apps
from django.contrib.contenttypes.fields import GenericForeignKey
from django.db import models
from django.utils.deconstruct import deconstructible
from django.utils.functional import cached_property
from django.utils import six

from .forms import ContentObjectChoiceField

Expand Down
19 changes: 16 additions & 3 deletions generic_plus/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@
import itertools
import operator

import six
from six.moves import reduce

import django
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ObjectDoesNotExist
from django.core.files.base import File
from django.core.files.uploadedfile import UploadedFile
from django.db import connection, router, models
from django.db.models.fields.files import FieldFile, FileDescriptor
from django.utils.functional import curry
from django.utils import six
from django.utils.six.moves import reduce

from django.contrib.contenttypes.admin import GenericInlineModelAdmin
from django.contrib.contenttypes.fields import GenericRelation, GenericRel
Expand All @@ -23,6 +23,19 @@
from generic_plus.forms import (
generic_fk_file_formfield_factory, generic_fk_file_widget_factory)

try:
from django.utils.functional import curry
except ImportError:
# You can't trivially replace this with `functools.partial` because this binds
# to classes and returns bound instances, whereas functools.partial (on
# CPython) is a type and its instances don't bind.
def curry(_curried_func, *args, **kwargs):
def _curried(*moreargs, **morekwargs):
merged = dict(**kwargs)
merged.update(morekwargs)
return _curried_func(*(args + moreargs), **merged)
return _curried


class GenericForeignFileField(GenericRelation):
"""
Expand Down
5 changes: 3 additions & 2 deletions generic_plus/forms/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import six
from six.moves import range

import django
from django import forms
from django.contrib.admin.widgets import AdminFileWidget
Expand All @@ -11,8 +14,6 @@
from django.forms.formsets import TOTAL_FORM_COUNT, DEFAULT_MAX_NUM
from django.forms.models import modelform_factory, ModelFormMetaclass
from django.utils.encoding import force_text
from django.utils import six
from django.utils.six.moves import range
from django.utils.translation import ungettext

from .widgets import generic_fk_file_widget_factory, GenericForeignFileWidget
Expand Down
2 changes: 1 addition & 1 deletion generic_plus/forms/widgets.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import re

import six
import django
from django.core.exceptions import ObjectDoesNotExist
from django.forms.widgets import Input
Expand All @@ -8,7 +9,6 @@
from django.contrib.admin.sites import site
from django.db.models.fields.files import FieldFile
from django.template.loader import render_to_string
from django.utils import six

from generic_plus.compat import compat_rel_to

Expand Down
2 changes: 1 addition & 1 deletion generic_plus/models.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import types

from django.utils.six.moves import filter
from six.moves import filter
import monkeybiz


Expand Down
26 changes: 9 additions & 17 deletions generic_plus/tests/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,23 +64,15 @@
'generic_plus',
)

if django.VERSION >= (1, 10):
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
else:
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
)
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

LOGGING = {
'version': 1,
Expand Down
6 changes: 3 additions & 3 deletions generic_plus/tests/test_curation/models.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import six
from django.contrib.contenttypes.models import ContentType
from django.db import models
from django.utils.encoding import python_2_unicode_compatible

from generic_plus.curation.fields import ContentTypeChoice, GenericChoiceForeignKey


@python_2_unicode_compatible
@six.python_2_unicode_compatible
class RelatedAbstract(models.Model):
name = models.CharField(max_length=255)

Expand Down Expand Up @@ -36,7 +36,7 @@ class Meta:
app_label = "generic_plus"


@python_2_unicode_compatible
@six.python_2_unicode_compatible
class BazProxy(Baz):

class Meta:
Expand Down
18 changes: 8 additions & 10 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,10 @@
#!/usr/bin/env python

try:
from setuptools import setup, find_packages
except ImportError:
from ez_setup import use_setuptools
use_setuptools()
from setuptools import setup, find_packages
from setuptools import setup, find_packages


setup(
name='django-generic-plus',
version="2.2.2",
version="2.3.0",
install_requires=[
'python-monkey-business>=1.0.0',
],
Expand All @@ -30,12 +24,16 @@
'Natural Language :: English',
'Operating System :: OS Independent',
'Framework :: Django',
'Framework :: Django :: 1.11',
'Framework :: Django :: 2.0',
'Framework :: Django :: 2.1',
'Framework :: Django :: 2.2',
'Framework :: Django :: 3.0',
'Programming Language :: Python',
"Programming Language :: Python :: 2",
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.7',
],
include_package_data=True,
zip_safe=False)
16 changes: 8 additions & 8 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
[tox]
envlist =
py{27,34}-dj18
py{27,36}-dj111
py36-dj20
py36-dj21
py{27,37}-dj111
py37-dj{20,21,22,30}

[testenv]
commands =
python runtests.py {posargs} --noinput
passenv =
DATABASE_URL
deps =
six>=1.15
lxml
dj-database-url
dj18: Django>=1.8,<1.8.99
dj111: Django>=1.11a1,<1.11.99
dj20: Django>=2.0.0,<2.0.99
dj21: https://github.com/django/django/archive/master.tar.gz
dj111: Django>=1.11.25,<2.0
dj20: Django>=2.0,<2.1
dj21: Django>=2.0,<2.1
dj22: Django>=2.2,<3.0
dj30: Django>=3.0,<3.1

0 comments on commit e21f829

Please sign in to comment.