Skip to content

Commit 62a773b

Browse files
authored
Merge pull request #104 from ambitioninc/develop
2.0.0
2 parents 0c47cd1 + 263b2aa commit 62a773b

File tree

10 files changed

+61
-44
lines changed

10 files changed

+61
-44
lines changed

Diff for: .travis.yml

+3-5
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,19 @@ sudo: false
55
python:
66
- "3.6"
77
- "3.7"
8+
- "3.8"
89

910
env:
1011
matrix:
11-
- DJANGO=2.0
12-
- DJANGO=2.1
1312
- DJANGO=2.2
13+
- DJANGO=3.0
14+
- DJANGO=3.1
1415
- DJANGO=master
1516

1617
addons:
1718
postgresql: '9.6'
1819

1920
matrix:
20-
exclude:
21-
- { python: "3.7", env: DJANGO=2.0 }
22-
2321
include:
2422
- { python: "3.6", env: TOXENV=flake8 }
2523

Diff for: MANIFEST.in

+1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
include README.rst
22
include LICENSE
3+
recursive-include requirements *

Diff for: docs/release_notes.rst

+6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
Release Notes
22
=============
33

4+
v2.0.0
5+
------
6+
* Add support Django 3.0, 3.1
7+
* Add support for python 3.8
8+
* Drop support for Django 2.1
9+
410
v1.2.0
511
------
612
* Add Django 2.1

Diff for: querybuilder/query.py

+3-7
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,11 @@
44
from django.db.models import Q, AutoField
55
from django.db.models.query import QuerySet
66
from django.db.models.constants import LOOKUP_SEP
7-
try:
8-
# Django 1.9
9-
from django.apps import apps
10-
get_model = apps.get_model
11-
except ImportError: # pragma: no cover
12-
# Django < 1.9
13-
from django.db.models import get_model
7+
from django.apps import apps
8+
get_model = apps.get_model
149
import six
1510

11+
1612
from querybuilder.fields import FieldFactory, CountField, MaxField, MinField, SumField, AvgField
1713
from querybuilder.helpers import set_value_for_keypath
1814
from querybuilder.tables import TableFactory, ModelTable, QueryTable

Diff for: querybuilder/tests/json_tests.py

+17-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import unittest
2+
from django import VERSION
23
from django.test.testcases import TestCase
34
from django.test.utils import override_settings
45
from querybuilder.fields import JsonField
@@ -45,7 +46,12 @@ def test_one(self):
4546
'querybuilder_tests_metricrecord WHERE (querybuilder_tests_metricrecord.data->>\'two\' = %(A0)s)'
4647
)
4748
)
48-
self.assertEqual(query.select(), [{'my_two_alias': 'two'}])
49+
50+
# Django 3.1 changes the raw queryset behavior so querybuilder isn't going to change that behavior
51+
if VERSION[0] == 3 and VERSION[1] == 1:
52+
self.assertEqual(query.select(), [{'my_two_alias': '"two"'}])
53+
else:
54+
self.assertEqual(query.select(), [{'my_two_alias': 'two'}])
4955

5056
query = Query().from_table(MetricRecord, fields=[one_field]).where(**{
5157
one_field.get_where_key(): '1'
@@ -57,7 +63,12 @@ def test_one(self):
5763
'querybuilder_tests_metricrecord WHERE (querybuilder_tests_metricrecord.data->>\'one\' = %(A0)s)'
5864
)
5965
)
60-
self.assertEqual(query.select(), [{'my_one_alias': 1}])
66+
67+
# Django 3.1 changes the raw queryset behavior so querybuilder isn't going to change that behavior
68+
if VERSION[0] == 3 and VERSION[1] == 1:
69+
self.assertEqual(query.select(), [{'my_one_alias': '1'}])
70+
else:
71+
self.assertEqual(query.select(), [{'my_one_alias': 1}])
6172

6273
query = Query().from_table(MetricRecord, fields=[one_field]).where(**{
6374
one_field.get_where_key(): '2'
@@ -93,11 +104,11 @@ def test_one(self):
93104
record = JsonQueryset(model=MetricRecord).filter(**{'data->two': 'one'}).first()
94105
self.assertIsNone(record)
95106

96-
record = JsonQueryset(model=MetricRecord).filter(**{'data->two': 'two'}).first()
97-
self.assertEqual(record.data['two'], 'two')
107+
records = list(JsonQueryset(model=MetricRecord).filter(**{'data->two': 'two'}))
108+
self.assertEqual(records[0].data['two'], 'two')
98109

99-
record = JsonQueryset(model=MetricRecord).filter(**{'data->one': '1'}).first()
100-
self.assertEqual(record.data['one'], 1)
110+
records = list(JsonQueryset(model=MetricRecord).filter(**{'data->one': '1'}))
111+
self.assertEqual(records[0].data['one'], 1)
101112

102113
record = JsonQueryset(model=MetricRecord).filter(**{'data->one': '2'}).first()
103114
self.assertIsNone(record)

Diff for: querybuilder/tests/models.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
try:
2-
from django.contrib.postgres.fields import JSONField
2+
from django.db.models import JSONField
33
except ImportError:
4-
from jsonfield import JSONField
4+
try:
5+
from django.contrib.postgres.fields import JSONField
6+
except ImportError:
7+
from jsonfield import JSONField
58
from django.db import models
69

710

Diff for: querybuilder/version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '1.2.0'
1+
__version__ = '2.0.0'

Diff for: requirements/requirements.txt

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Django>=2.2
2+
pytz>=2015.6
3+
fleming>=0.6.0
4+
six

Diff for: setup.py

+13-15
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@ def get_version():
1717
raise RuntimeError('Unable to find version string in {0}.'.format(VERSION_FILE))
1818

1919

20+
def get_lines(file_path):
21+
return open(file_path, 'r').read().split('\n')
22+
23+
24+
install_requires = get_lines('requirements/requirements.txt')
25+
tests_require = get_lines('requirements/requirements-testing.txt')
26+
27+
2028
setup(
2129
name='django-query-builder',
2230
version=get_version(),
@@ -31,29 +39,19 @@ def get_version():
3139
'Programming Language :: Python',
3240
'Programming Language :: Python :: 3.6',
3341
'Programming Language :: Python :: 3.7',
42+
'Programming Language :: Python :: 3.8',
3443
'Intended Audience :: Developers',
3544
'License :: OSI Approved :: MIT License',
3645
'Operating System :: OS Independent',
3746
'Framework :: Django',
38-
'Framework :: Django :: 2.0',
39-
'Framework :: Django :: 2.1',
4047
'Framework :: Django :: 2.2',
48+
'Framework :: Django :: 3.0',
49+
'Framework :: Django :: 3.1',
4150
'Development Status :: 5 - Production/Stable',
4251
],
4352
license='MIT',
44-
install_requires=[
45-
'Django>=1.11',
46-
'pytz>=2015.6',
47-
'fleming>=0.4.4',
48-
'six',
49-
],
50-
tests_require=[
51-
'psycopg2',
52-
'django-nose>=1.4',
53-
'django-dynamic-fixture',
54-
'jsonfield==0.9.20',
55-
'mock'
56-
],
53+
install_requires=install_requires,
54+
tests_require=tests_require,
5755
test_suite='run_tests.run_tests',
5856
include_package_data=True,
5957
)

Diff for: tox.ini

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
[tox]
22
envlist =
33
flake8
4-
py{36}-django20
5-
py{36,37}-django21
64
py{36,37}-django22
7-
py{36,37}-djangomaster
5+
py{36,37,38}-django30
6+
py{36,37,38}-django31
7+
py{36,37,38}-djangomaster
88

99
[testenv]
1010
setenv =
1111
DB = postgres
1212
deps =
13-
django20: Django>=2.0,<2.1
14-
django21: Django>=2.1,<2.2
15-
django22: Django>=2.2,<2.3
13+
django22: Django>=2.2,<3.0
14+
django30: Django>=3.0,<3.1
15+
django31: Django>=3.1,<3.2
1616
djangomaster: https://github.com/django/django/archive/master.tar.gz
1717
-rrequirements/requirements-testing.txt
1818
commands =
@@ -25,7 +25,7 @@ commands = flake8 querybuilder
2525

2626
[travis:env]
2727
DJANGO =
28-
2.0: django20
29-
2.1: django21
3028
2.2: django22
29+
3.0: django30
30+
3.1: django31
3131
master: djangomaster

0 commit comments

Comments
 (0)