From ab093651c23e35fd7e9e67202710142dc84b7297 Mon Sep 17 00:00:00 2001 From: baseplate-admin <61817579+baseplate-admin@users.noreply.github.com> Date: Sat, 31 Dec 2022 21:31:02 +0600 Subject: [PATCH 1/5] Modernize --- README.rst | 1 - advanced_filters/q_serializer.py | 2 +- setup.py | 7 ++----- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/README.rst b/README.rst index 49c32fe..f622f7c 100644 --- a/README.rst +++ b/README.rst @@ -27,7 +27,6 @@ Requirements ============ - Django 2.2, >= 3.2 on Python 3.6+/PyPy3 -- simplejson >= 3.6.5, < 4 Installation & Set up diff --git a/advanced_filters/q_serializer.py b/advanced_filters/q_serializer.py index 322cfcc..014e8d0 100644 --- a/advanced_filters/q_serializer.py +++ b/advanced_filters/q_serializer.py @@ -6,7 +6,7 @@ from django.db.models import Q from django.core.serializers.base import SerializationError -import simplejson as json +import json try: diff --git a/setup.py b/setup.py index 761d3a5..ba06045 100644 --- a/setup.py +++ b/setup.py @@ -55,19 +55,16 @@ def get_full_description(): setup( name='django-advanced-filters', version=__version__, - url='https://github.com/modlinltd/django-advanced-filters', + url='https://github.com/baseplate-admin/django-advanced-filters', license='MIT', description='A Django application for advanced admin filters', keywords='django-admin admin advanced filters custom query', long_description=get_full_description(), packages=find_packages(exclude=['tests*', 'tests.*', '*.tests']), include_package_data=True, - install_requires=[ - 'simplejson>=3.6.5,<4', - ], extras_require=dict(test=TEST_REQS), zip_safe=False, - author='Pavel Savchenko', + author='Baseplate Admin', author_email='pavel@modlinltd.com', python_requires='>=3.6', classifiers=[ From 6ad255e5faf40c0fd39985ffe150c82c9b88d949 Mon Sep 17 00:00:00 2001 From: baseplate-admin <61817579+baseplate-admin@users.noreply.github.com> Date: Tue, 24 Jan 2023 21:30:25 +0600 Subject: [PATCH 2/5] Update setup.py Made SimpleJson optional --- setup.py | 75 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/setup.py b/setup.py index ba06045..5211070 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ class Tox(TestCommand): - user_options = [('tox-args=', 'a', "Arguments to pass to tox")] + user_options = [("tox-args=", "a", "Arguments to pass to tox")] def initialize_options(self): TestCommand.initialize_options(self) @@ -22,6 +22,7 @@ def run_tests(self): # import here, cause outside the eggs aren't loaded import tox import shlex + args = self.tox_args if args: args = shlex.split(self.tox_args) @@ -31,20 +32,20 @@ def run_tests(self): def get_full_description(): # get long description from README - readme = 'README.rst' - changelog = 'CHANGELOG.rst' + readme = "README.rst" + changelog = "CHANGELOG.rst" base = os.path.dirname(__file__) - with open(os.path.join(base, readme), encoding='utf-8') as readme: + with open(os.path.join(base, readme), encoding="utf-8") as readme: README = readme.read() - with open(os.path.join(base, changelog), encoding='utf-8') as changelog: + with open(os.path.join(base, changelog), encoding="utf-8") as changelog: CHANGELOG = changelog.read() - return f'{README}\n{CHANGELOG}' + return f"{README}\n{CHANGELOG}" # allow setup.py to be run from any path CUR_DIR = os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)) os.chdir(CUR_DIR) -TEST_REQ_FILE = os.path.join(CUR_DIR, 'test-reqs.txt') +TEST_REQ_FILE = os.path.join(CUR_DIR, "test-reqs.txt") if os.path.exists(TEST_REQ_FILE): with open(TEST_REQ_FILE) as f: TEST_REQS = list(f.readlines()) @@ -53,40 +54,40 @@ def get_full_description(): setup( - name='django-advanced-filters', + name="django-advanced-filters", version=__version__, - url='https://github.com/baseplate-admin/django-advanced-filters', - license='MIT', - description='A Django application for advanced admin filters', - keywords='django-admin admin advanced filters custom query', + url="https://github.com/baseplate-admin/django-advanced-filters", + license="MIT", + description="A Django application for advanced admin filters", + keywords="django-admin admin advanced filters custom query", long_description=get_full_description(), - packages=find_packages(exclude=['tests*', 'tests.*', '*.tests']), + packages=find_packages(exclude=["tests*", "tests.*", "*.tests"]), include_package_data=True, - extras_require=dict(test=TEST_REQS), + extras_require=dict(test=TEST_REQS, simplejson="simplejson"), zip_safe=False, - author='Baseplate Admin', - author_email='pavel@modlinltd.com', - python_requires='>=3.6', + author="Pavel Savchenko", + author_email="pavel@modlinltd.com", + python_requires=">=3.6", classifiers=[ - 'Environment :: Web Environment', - 'Framework :: Django', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: MIT License', - 'Operating System :: OS Independent', - 'Programming Language :: Python', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', - 'Programming Language :: Python :: 3.9', - 'Programming Language :: Python :: 3.10', - 'Programming Language :: Python :: 3 :: Only', - 'Framework :: Django', - 'Framework :: Django :: 2.2', - 'Framework :: Django :: 3.2', - 'Framework :: Django :: 4.0', - 'Topic :: Internet :: WWW/HTTP', - 'Topic :: Internet :: WWW/HTTP :: Dynamic Content', + "Environment :: Web Environment", + "Framework :: Django", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3 :: Only", + "Framework :: Django", + "Framework :: Django :: 2.2", + "Framework :: Django :: 3.2", + "Framework :: Django :: 4.0", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Internet :: WWW/HTTP :: Dynamic Content", ], - tests_require=['tox'], - cmdclass={'test': Tox}, + tests_require=["tox"], + cmdclass={"test": Tox}, ) From 42f03cae285f1d1c74676e3ac95a7e97ccc66b76 Mon Sep 17 00:00:00 2001 From: baseplate-admin <61817579+baseplate-admin@users.noreply.github.com> Date: Tue, 24 Jan 2023 21:34:46 +0600 Subject: [PATCH 3/5] Update README.rst --- README.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/README.rst b/README.rst index f622f7c..d4a3911 100644 --- a/README.rst +++ b/README.rst @@ -27,6 +27,7 @@ Requirements ============ - Django 2.2, >= 3.2 on Python 3.6+/PyPy3 +- simplejson >= 3.6.5, < 4 ( Optional ) Installation & Set up From 4208157c927c84b3d837298eddeb8a53df586203 Mon Sep 17 00:00:00 2001 From: baseplate-admin <61817579+baseplate-admin@users.noreply.github.com> Date: Tue, 11 Jun 2024 13:05:43 +0600 Subject: [PATCH 4/5] Update test_q_serializer.py Fix : https://github.com/modlinltd/django-advanced-filters/pull/182#pullrequestreview-1425894485 --- advanced_filters/tests/test_q_serializer.py | 56 ++++++++++++++++----- 1 file changed, 44 insertions(+), 12 deletions(-) diff --git a/advanced_filters/tests/test_q_serializer.py b/advanced_filters/tests/test_q_serializer.py index 9912a31..f500c01 100644 --- a/advanced_filters/tests/test_q_serializer.py +++ b/advanced_filters/tests/test_q_serializer.py @@ -1,39 +1,71 @@ from django.db.models import Q from django.test import TestCase import json +import datetime + from ..q_serializer import QSerializer class QSerializerTest(TestCase): correct_query = { - 'children': [('test', 1234)], - 'connector': 'AND', - 'negated': False, + "children": [("test", 1234)], + "connector": "AND", + "negated": False, + } + datetime_query = { + "children": [("date", datetime.datetime.now().isoformat())], + "connector": "AND", + "negated": False, } def setUp(self): self.s = QSerializer() self.query_a = Q(test=1234) - self.query_b = Q(another="test") + self.date_query = Q(date=datetime.datetime.now().isoformat()) def test_serialize_q(self): res = self.s.serialize(self.query_a) self.assertEqual(res, self.correct_query) + date = self.s.serialize(self.date_query) + self.assertEqual(date, self.datetime_query) + def test_jsondump_q(self): jres = self.s.dumps(self.query_a) self.assertJSONEqual(jres, json.dumps(self.correct_query)) + jdate = self.s.serialize(self.date_query) + self.assertEqual(jdate, json.dumps(self.datetime_query)) + def test_deserialize_q(self): - qres = self.s.deserialize({ - 'children': [('test', 1234)], - 'connector': 'AND', - 'negated': False, - 'subtree_parents': [] - }) + qres = self.s.deserialize( + { + "children": [("test", 1234)], + "connector": "AND", + "negated": False, + "subtree_parents": [], + } + ) self.assertIsInstance(qres, Q) - qres = self.s.loads('{"connector": "AND", "negated": false, "children"' - ' :[["test", 1234]], "subtree_parents": []}') + qres = self.s.loads( + '{"connector": "AND", "negated": false, "children"' + ' :[["test", 1234]], "subtree_parents": []}' + ) + self.assertIsInstance(qres, Q) + + dres = self.s.deserialize( + { + "children": [("date", datetime.datetime.now().isoformat())], + "connector": "AND", + "negated": False, + } + ) + self.assertIsInstance(dres, Q) + + qres = self.s.loads( + '{"connector": "AND", "negated": false, "children"' + ' :[["date", 2024-06-11T13:02:16.568909]], "subtree_parents": []}' + ) self.assertIsInstance(qres, Q) From 19d830dda60eaa198878702f213cfa68b72bdb6f Mon Sep 17 00:00:00 2001 From: baseplate-admin <61817579+baseplate-admin@users.noreply.github.com> Date: Tue, 11 Jun 2024 13:06:43 +0600 Subject: [PATCH 5/5] Update setup.py Update setup.py --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 5211070..ce9fdc6 100644 --- a/setup.py +++ b/setup.py @@ -56,7 +56,7 @@ def get_full_description(): setup( name="django-advanced-filters", version=__version__, - url="https://github.com/baseplate-admin/django-advanced-filters", + url="https://github.com/modlinltd/django-advanced-filters", license="MIT", description="A Django application for advanced admin filters", keywords="django-admin admin advanced filters custom query",