{
"info": {
"author": "Pavel Savchenko",
"author_email": "pavel@modlinltd.com",
"bugtrack_url": null,
"classifiers": [
"Environment :: Web Environment",
"Framework :: Django",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.2",
"Programming Language :: Python :: 3.3",
"Topic :: Internet :: WWW/HTTP",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content"
],
"description": "Django Advanced Filters\n=======================\n\n+-----------+------------------+---------------------+----------+------------+\n| Branch | Build | Coverage | PyPI | Gitter |\n+===========+==================+=====================+==========+============+\n| Master | |Build-Master| | |Coverage-Master| | |PyPI| | |Gitter| |\n+-----------+------------------+---------------------+----------+------------+\n| Develop | |Build-Develop| | |Coverage-Develop| | | |\n+-----------+------------------+---------------------+----------+------------+\n\nA django ModelAdmin mixin which adds advanced filtering abilities to the\nadmin.\n\nMimics the advanced search feature in\n`VTiger `__, `see here for more\ninfo `__\n\n.. figure:: https://raw.githubusercontent.com/modlinltd/django-advanced-filters/develop/screenshot.png\n :alt: Creating via a modal\n :width: 768 px\n\n\nFor release notes, see `Changelog `__\n\nRequirements\n============\n\n- Django >= 1.7 (Django 1.7 - 2.1 on Python 2/3/PyPy2)\n- django-braces == 1.4.0\n- simplejson == 3.6.5\n\n\nInstallation & Set up\n=====================\n\n1. Install from pypi: ``pip install django-advanced-filters``\n2. Add both ``'advanced_filters'`` to ``INSTALLED_APPS``.\n3. Add ``url(r'^advanced_filters/', include('advanced_filters.urls'))``\n to your project's urlconf.\n4. Run ``python manage.py syncdb`` or ``python manage.py migrate`` (for django >= 1.7)\n\nIntegration Example\n===================\n\nExtending a ModelAdmin is pretty straightforward:\n\n.. code-block:: python\n\n from advanced_filters.admin import AdminAdvancedFiltersMixin\n\n class ProfileAdmin(AdminAdvancedFiltersMixin, models.ModelAdmin):\n list_filter = ('name', 'language', 'ts') # simple list filters\n\n # specify which fields can be selected in the advanced filter\n # creation form\n advanced_filter_fields = (\n 'name',\n 'language',\n 'ts',\n\n # even use related fields as lookup fields\n 'country__name',\n 'posts__title',\n 'comments__content',\n )\n\nAdding a new advanced filter (see below) will display a new list filter\nnamed \"Advanced filters\" which will list all the filter the currently\nlogged in user is allowed to use (by default only those he/she created).\n\nCustom naming of fields\n-----------------------\n\nInitially, each field in ``advanced_filter_fields`` is resolved into an\nactual model field. That field's verbose\\_name attribute is then used as\nthe text of the displayed option. While uncommon, it occasionally makes\nsense to use a custom name, especially when following a relationship, as\nthe context then changes.\n\nFor example, when a profile admin allows filtering by a user name as\nwell as a sales representative name, it'll get confusing:\n\n.. code-block:: python\n\n class ProfileAdmin(AdminAdvancedFiltersMixin, models.ModelAdmin):\n advanced_filter_fields = ('name', 'sales_rep__name')\n\nIn this case the field options will both be named \"name\" (by default).\n\nTo fix this, use custom naming:\n\n.. code-block:: python\n\n class ProfileAdmin(AdminAdvancedFiltersMixin, models.ModelAdmin):\n advanced_filter_fields = ('name', ('sales_rep__name', 'assigned rep'))\n\nNow, you will get two options, \"name\" and \"assigned rep\".\n\nAdding new advanced filters\n===========================\n\nBy default the mixin uses a template which extends django's built-in\n``change_list`` template. This template is based off of grapelli's fork\nof this template (hence the 'grp' classes and funny looking javascript).\n\nThe default template also uses the superb\n`magnificPopup `__ which is currently bundled\nwith the application.\n\nRegardless of the above, you can easily write your own template which\nuses context variables ``{{ advanced_filters }}`` and\n``{{ advanced_filters.formset }}``, to render the advanced filter\ncreation form.\n\nStructure\n=========\n\nEach advanced filter has only a couple of required fields when\nconstructed with the form; namely the title and a formset (consisting of\na form for each sub-query or rule of the filter query).\n\nEach form in the formset requires the following fields: ``field``,\n``operator``, ``value``\n\nAnd allows the optional ``negate`` and ``remove`` fields.\n\nLet us go over each of the fields in a rule fieldset.\n\nField\n-----\n\nThe list of all available fields for this specific instance of the\nModelAdmin as specific by the ```advanced_filter_fields``\nproperty. <#integration-example>`__\n\nThe OR field\n~~~~~~~~~~~~\n\n``OR`` is an additional field that is added to every rule's available\nfields.\n\nIt allows constructing queries with `OR\nstatements `__.\nYou can use it by creating an \"empty\" rule with this field \"between\" a\nset of 1 or more rules.\n\nOperator\n--------\n\nQuery field suffixes which specify how the ``WHERE`` query will be\nconstructed.\n\nThe currently supported are as follows: ``iexact``, ``icontains``,\n``iregex``, ``range``, ``isnull``, ``istrue`` and ``isfalse``\n\nFor more detail on what they mean and how they function, see django's\n`documentation on field\nlookups `__.\n\nValue\n-----\n\nThe value which the specific sub-query will be looking for, i.e the\nvalue of the field specified above, or in django query syntax:\n``.filter(field=value)``\n\nNegate\n------\n\nA boolean (check-box) field to specify whether this rule is to be\nnegated, effectively making it a \"exclude\" sub-query.\n\nRemove\n------\n\nSimilarly to other `django\nformsets `__,\nused to remove the selected line on submit.\n\nEditing previously created advanced filters\n===========================================\n\nThe ``AdvancedFilterAdmin`` class (a subclass of ``ModelAdmin``) is\nprovided and registered with ``AdvancedFilter`` in admin.py module.\n\nThe model's change\\_form template is overridden from grapelli's/django's\nstandard template, to mirror the add form modal as closely as possible.\n\n*Note:* currently, adding new filters from the ModelAdmin change page is\nnot supported.\n\nQuery Serialization\n===================\n\n**TODO:** write a few words on how serialization of queries is done.\n\nModel correlation\n=================\n\nSince version 1.0, ``AdvancedFilter`` are tightly coupled with a specific model\nusing the ``model`` field and the app\\_label.Name template.\nOn creation, ``model`` is populated based on the admin changelist it's created\nin.\n\nThis change has a few benefits:\n\n1. The mixin can be used with multiple ``ModelAdmin`` classes while\n performing specific query serialization and field validation that are\n at the base of the filter functionality.\n\n2. Users can edit previously created filters outside of the\n context of a changelist, as we do in the\n ```AdvancedFilterAdmin`` <#editing-previously-created-advanced-filters>`__.\n\n3. Limit the ``AdvancedListFilters`` to limit queryset (and thus, the\n underlying options) to a specified model.\n\nViews\n=====\n\nThe GetFieldChoices view is required to dynamically (using javascript)\nfetch a list of valid field choices when creating/changing an\n``AdvancedFilter``.\n\nTODO\n====\n\n- Add permission user/group selection functionality to the filter form\n- Allow toggling of predefined templates (grappelli / vanilla django\n admin), and front-end features.\n- Support more (newer) python/django versions\n\n.. |Build-Master| image:: https://travis-ci.org/modlinltd/django-advanced-filters.svg?branch=master\n :target: https://travis-ci.org/modlinltd/django-advanced-filters\n.. |Coverage-Master| image:: https://coveralls.io/repos/modlinltd/django-advanced-filters/badge.svg?branch=master\n :target: https://coveralls.io/github/modlinltd/django-advanced-filters?branch=master\n.. |PyPI| image:: https://img.shields.io/pypi/pyversions/django-advanced-filters.svg\n :target: https://pypi.python.org/pypi/django-advanced-filters\n.. |Gitter| image:: https://badges.gitter.im/Join%20Chat.svg\n :target: https://gitter.im/modlinltd/django-advanced-filters?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge\n.. |Build-Develop| image:: https://travis-ci.org/modlinltd/django-advanced-filters.svg?branch=develop\n :target: https://travis-ci.org/modlinltd/django-advanced-filters\n.. |Coverage-Develop| image:: https://coveralls.io/repos/modlinltd/django-advanced-filters/badge.svg?branch=develop\n :target: https://coveralls.io/github/modlinltd/django-advanced-filters?branch=develop\n\nChangelog\n=========\n\n1.1.1 - CHANGELOG rendering is hard\n-----------------------------------\n\nThis release is for fixing the bug when installing with specific environment (\nlocale that defaults to CP-1252).\n\nBug fixes\n~~~~~~~~~\n\n- Add encoding='utf-8' to open() in setup.py (Merge 2fe81aa)\n\nDocs / Other\n~~~~~~~~~~~~\n\n- add CONTRIBUTING.rst with common processes (Merge ee7907e)\n- Update issue templates (Merge ee7907e)\n\nContributors\n~~~~~~~~~~~~\n\n- Rebecca Turner\n- Pavel Savchenko\n\n\n1.1.0 - The future is bright\n----------------------------\n\nThis release highlights support for Django 2.0 and 2.1 as well as\ndeprecating support for versions Django < 1.7 and Python 2.6 and 3.3\n\nBug fixes\n~~~~~~~~~\n\n- bump django-braces==1.13 for Django 2 support (Merge 80e055e)\n- use request context processor in test_project (Merge 80e055e)\n\nMisc.\n~~~~~\n\n- ignore .DS_Store\n- fixes for Django 2.0 and 1.11, update tests (Merge 80e055e)\n- test in Django 2.1 (Merge d8d236d)\n- add updated migrations of model attributes (Merge 80e055e)\n- fix ValueError while creating empty form (Merge d8d236d)\n- python 2.6 and django < 1.7 are deprecated\n- lower and upper bounds in install_requires\n- avoid all-catch except clause (Merge 80e055e)\n\nTests\n~~~~~\n\n- correct tox env django spec for ver 1.11 (Merge 80e055e)\n- correct make_query assertion for Django>=2 (Merge 80e055e)\n- update pytest-django in diff. envs + tox (Merge d8d236d)\n\nContributors\n~~~~~~~~~~~~\n\n- Goncalo Gomes\n- predatell\n- Petr Dlouh\u00fd\n- benny daon\n- Pavel Savchenko\n\n\n1.0.7.1 - Fix PyPi fail\n-----------------------\n\n- Equivalent to the prev version, bumped since we can't reupload the files to PyPi.\n\n1.0.7 - The holiday edition\n---------------------------\n\nThis is mostly a minor release with the biggest being the `AdvancedFilterForm.Media` fix, 2 additional translations and bunch of docs cleanup (thanks everyone)!\n\nChanges since 1.0.6:\n\nBug Fixes\n~~~~~~~~~\n\n- Fix AdvancedFilterForm Media declaration\n- Fix pep8: E128 on forms.py (Merge d7acb36)\n\nFeatures\n~~~~~~~~\n\n- Add Japanese locale (Merge d7acb36)\n- Add Spanish locale (Merge 1a482cf)\n\nDocumentation:\n~~~~~~~~~~~~~~\n\n- a bit of polishing (Merge 4c88ea3)\n- removing confusing migrations paragraph (Merge 4c88ea3)\n\nContributors:\n~~~~~~~~~~~~~\n\n- KINOSHITA Shinji\n- Pavel Savchenko\n- Benny Daon\n- Mathieu Richardoz\n- Jos\u00e9 S\u00e1nchez Moreno\n\n\n1.0.6 - Bout Time\n-----------------\n\nThis release is long overdue, and includes some important fixes as well as general improvements to code and documentation.\n\nBug Fixes\n~~~~~~~~~\n\n- fixing TypeError: can only concatenate tuple (not \"list\") to tuple\n- ensure select2 is included last (Merge 9831ba5)\n- add script to load jQuery globally\n- remove invalid template variables\n- fix input focusing error in chrome\n- fix error when one missing range parameter caused error + test (Merge 365b646)\n\nFeatures\n~~~~~~~~\n\n- don't override original change_list_templates in AdminAdvancedFiltersMixin\n- make date range placeholder more pleasant (Merge 365b646)\n- add created_at field\n- Russian locale provided\n\nDocumentation\n~~~~~~~~~~~~~\n\n - make it clear easy-select2 is not required anymore (Merge 9831ba5)\n - Clarify how to import AdminAdvancedFiltersMixin in README\n\nTests\n~~~~~\n\n - add more fields/filter to test ModelAdmin\n\nContributors\n~~~~~~~~~~~~\n\n - Grigoriy Beziuk\n - \u041d\u0438\u043a\u0438\u0442\u0430 \u041a\u043e\u043d\u0438\u043d\n - Pavel Savchenko\n - Yuval Adam\n - Petr Dlouh\u00fd\n\n\n1.0.5 - Compatibility bump\n--------------------------\n\nBugs\n~~~~\n\n- updated AdvancedFilterQueryForm to include numeric comparison operators (Merge d3ee9f4)\n- Fixed a bug where editing an existing Advanced Filter defaulted all operators to 'Equals' (Merge d3ee9f4)\n- set AFQFormSet extra=0 instead of extra=1. I did this because having to check Delete is not clear to end users. (Merge d3ee9f4)\n- changed the Advanced Filter admin so you a User by default can only view/edit filters that they create (unless they are a superuser) (Merge d3ee9f4)\n- Fixed failing tests. Fixed bug where users weren't properly getting permissions to change or delete their filters (Merge d3ee9f4)\n- changed solution for extra form appearing on editing. Now initialize form checks for falsy value for extra rather than extra just being None (Merge d3ee9f4)\n- removed 'not instance from requirements for no extras (Merge d3ee9f4)\n- pep8 fix (Merge d3ee9f4)\n- Fixed labeling error with 'Greater Than or Equal To' (Merge d3ee9f4)\n- Changes URL declaration to avoid deprecated pattern\n- select2 only initializes if there are choices available. otherwise, the standard text input will be used (Merge 35d7063)\n- Revert \"select2 only initializes if there are choices available. otherwise, the standard text input will be used\" (Merge 35d7063)\n- updated query for choices for select2 field so that it will take only distinct choices. This allows max_choices to be the maximum unique choices. (Merge 35d7063)\n- Changes URL declaration to avoid deprecated pattern (Merge 35d7063)\n- refactored retrieval of choices so that the db is getting distinct values; added test (Merge 35d7063)\n- pep8 (Merge 35d7063)\n- Use order_by to avoid ambiguity\n- drop django-easy-select2 and include select2 directly\n\nTests\n~~~~~\n\n- test with both Python 3.5 and Django 1.10\n- removed print statement from test (Merge 35d7063)\n- fixed failing test to account for new distinct for max choices (Merge 35d7063)\n- added test to make sure all operators are properly restored from Queries (Merge d3ee9f4)\n\nContributors\n~~~~~~~~~~~~\n\n- Pavel Savchenko\n- PJ Passalacqua\n- Hermano Cabral\n\n\n1.0.4 - Unbreak Python 3\n------------------------\n\nThis release contains a fix to allow distribution installation on Python 3 which was broken since 1.0.2\n\n1.0.3 - The Package Fix\n-----------------------\n\nThis is a quick fix for packaging (setup.py) errors and documentation.\n\nBugs\n~~~~\n\n- add missing Django 1.7 migrations\n- README updated to mention ``manage.py migrate`` command\n- Use ReST for README and CHANGELOG: avoid conversion from markdown\n\n\n1.0.2 - A Better Future\n-----------------------\n\nThis release features better test coverage and support for Django 1.9.\n\nBugs\n~~~~\n\n- stretch formset table to the modal container width\n- toggle advanced ``vendor/jquery`` dir according to Django version\n- retain support older Django versions\n- clean up legacy tags in templates\n\nTests\n~~~~~\n\n- add admin views tests\n- add Django 1.9 to test matrix\n- other minor improvements\n\nDocs\n~~~~\n\n- Improve README with a newer screenshot and pretty tables for badges\n\nContributors:\n~~~~~~~~~~~~~\n\n- Pavel Savchenko\n- Leonardo J. Caballero G\n- Schuyler Duveen\n\n1.0.1 - A Public Release\n------------------------\n\nBugs\n~~~~\n\n- proper support for py26 and py3X and different Django releases\n- avoid querying all instances for choices\n- resolve settings inside view and refine error handling\n\nTests\n~~~~~\n\n- add doctests to the ``form_helpers``\n- add tests for ``forms``\n- add test case ``views.TestGetFieldChoicesView``\n- setup.py/travis: add ``test-reqs.txt`` as extras\\_require\n- refactor testing to use ``py.test`` and run ``tox`` from ``setup.py``\n- travis: use latest version of each Django release\n\nDocs:\n~~~~~\n\n- ``README``: explain what we test against\n\n1.0 - First contact\n-------------------\n\nMajor changes\n~~~~~~~~~~~~~\n\n- Add a new (required) field\n ```AdvancedFilter.model`` `__\n- Add parsing query dict into initialized formsets (allows for `editing\n existing\n instance `__).\n- Add\n ```AdvancedFilterAdmin`` <#editing-previously-created-advanced-filters>`__\n for actually accessing and `editing existing ``AdvancedFilter``\n instances `__.\n- Use `Select2 `__ and\n an AJAX view to dynamically populate ```field``\n options `__.\n- Add proper support for nested serialization of queries.\n\nMinor changes\n~~~~~~~~~~~~~\n\n- Implement more ```operators`` `__ (``isnull``,\n ``istrue`` and ``isfalse``)\n- Allow `custom verbose naming of fields in\n advanced\\_filter\\_fields `__\n- Add helper methods to the model to hide (and decouple) core\n serialization functionality from users.\n- Strip whitespace in field values validation\n- Setup and packaging (``setup.py``/``MANIFEST.in``)\n- Hide ``QSerializer`` calling logic in the model\n- Allow modifying ``advanced_filter_form`` property (defaults to\n ``AdvancedFilterForm``)\n- Correct documentation regarding position of mixin in subclass (issue\n #1)\n\n\n",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/modlinltd/django-advanced-filters",
"keywords": "django-admin admin advanced filters custom query",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "django-advanced-filters",
"package_url": "https://pypi.org/project/django-advanced-filters/",
"platform": "",
"project_url": "https://pypi.org/project/django-advanced-filters/",
"project_urls": {
"Homepage": "https://github.com/modlinltd/django-advanced-filters"
},
"release_url": "https://pypi.org/project/django-advanced-filters/1.1.1/",
"requires_dist": [
"django-braces (<2,>=1.4.0)",
"simplejson (<4,>=3.6.5)",
"coveralls (==0.5); extra == 'test'",
"factory-boy (==2.5.2); extra == 'test'",
"pep8 (==1.6.2); extra == 'test'"
],
"requires_python": "",
"summary": "A Django application for advanced admin filters",
"version": "1.1.1"
},
"last_serial": 4749450,
"releases": {
"1.0.1": [
{
"comment_text": "",
"digests": {
"md5": "2b92b8811103121ed3e933fd9849df7f",
"sha256": "78f7068e5ee699900a42e327cc68893fb174188bb899d0e4bc527b713790f4ef"
},
"downloads": -1,
"filename": "django-advanced-filters-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "2b92b8811103121ed3e933fd9849df7f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 36052,
"upload_time": "2016-01-03T10:27:29",
"url": "https://files.pythonhosted.org/packages/be/b4/18a7eb58550afb3fd8fbf88405ba7f00506e621bbcaac522bae4ca709843/django-advanced-filters-1.0.1.tar.gz"
}
],
"1.0.2": [
{
"comment_text": "",
"digests": {
"md5": "549147fb12e85f62fb8a326336c72ada",
"sha256": "56e0f875b0887a0a1ab7518f7ed5d29d740187b1cfee0dd1e0c432be716123c5"
},
"downloads": -1,
"filename": "django-advanced-filters-1.0.2.tar.gz",
"has_sig": false,
"md5_digest": "549147fb12e85f62fb8a326336c72ada",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 36815,
"upload_time": "2016-03-20T09:16:56",
"url": "https://files.pythonhosted.org/packages/18/67/74d7001e243bf87a54b1e36ef06f9fd6af1d68664a993efc11a2527e6a3c/django-advanced-filters-1.0.2.tar.gz"
}
],
"1.0.3": [
{
"comment_text": "",
"digests": {
"md5": "98a43e882e5fd773405abc141039cab2",
"sha256": "f011487cd3851ec83c08460e4db1f3413a325398d86cd255f8b47aee48c9ce1d"
},
"downloads": -1,
"filename": "django-advanced-filters-1.0.3.tar.gz",
"has_sig": false,
"md5_digest": "98a43e882e5fd773405abc141039cab2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 36843,
"upload_time": "2016-03-21T09:13:20",
"url": "https://files.pythonhosted.org/packages/e6/da/5bd3cf1698832868e32d1974fa1e484a81ed4b2feafa50b76b34ef9c1ca0/django-advanced-filters-1.0.3.tar.gz"
}
],
"1.0.4": [
{
"comment_text": "",
"digests": {
"md5": "21617c4eab185041b8d8fb386f0c7ba4",
"sha256": "0f09a98a84ae2d5dfed17fef36e4bd4a1d5979c2938553e3be59d7f30564dab6"
},
"downloads": -1,
"filename": "django-advanced-filters-1.0.4.tar.gz",
"has_sig": false,
"md5_digest": "21617c4eab185041b8d8fb386f0c7ba4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 37037,
"upload_time": "2016-03-21T10:48:02",
"url": "https://files.pythonhosted.org/packages/e9/99/2d7201a6de4fee99b601c70ea1cc0dfc323bdd735f61db9859b72396c133/django-advanced-filters-1.0.4.tar.gz"
}
],
"1.0.5": [
{
"comment_text": "",
"digests": {
"md5": "bb327a75f5445f9b95991fe68e798ade",
"sha256": "b13e5116ba4305032c46268b8ba77c2423f493365a22ef232700b5bb76ea4059"
},
"downloads": -1,
"filename": "django_advanced_filters-1.0.5-py2-none-any.whl",
"has_sig": false,
"md5_digest": "bb327a75f5445f9b95991fe68e798ade",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 69926,
"upload_time": "2017-01-03T19:04:35",
"url": "https://files.pythonhosted.org/packages/2e/fb/2071cd3ab5b034bd14897730dcea142631ad47d042738f9cf1c8a4595abc/django_advanced_filters-1.0.5-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "e05ec04f36474755d4bef9abad387fa6",
"sha256": "30712b790ff4cb6344b0d690f759ffcccba42f64cf67aabdc3c04b189fb84067"
},
"downloads": -1,
"filename": "django-advanced-filters-1.0.5.tar.gz",
"has_sig": false,
"md5_digest": "e05ec04f36474755d4bef9abad387fa6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 58773,
"upload_time": "2017-01-03T19:04:37",
"url": "https://files.pythonhosted.org/packages/2e/08/6fb577c0a5d95bf1ee7d0ef50209e4f5ffb86cb5fb12f6e7e585e17239d9/django-advanced-filters-1.0.5.tar.gz"
}
],
"1.0.6": [
{
"comment_text": "",
"digests": {
"md5": "09581ab70d4c7600098c5f622c367482",
"sha256": "67e52a6f4016ab14e7995d4968b91e72a835e8199e44296d42806d0f481b1105"
},
"downloads": -1,
"filename": "django_advanced_filters-1.0.6-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "09581ab70d4c7600098c5f622c367482",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 74723,
"upload_time": "2017-09-03T06:48:50",
"url": "https://files.pythonhosted.org/packages/e1/d1/8959d1815adf840a204bfed9e208148607dc2db109a5e9a719a2c51171c2/django_advanced_filters-1.0.6-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "c15ec5da703913fdb1b0a9e223c7c034",
"sha256": "7e3061f470d6b1be10dd368810133c9fbe3d01a6299975752bef891c00061dc4"
},
"downloads": -1,
"filename": "django-advanced-filters-1.0.6.tar.gz",
"has_sig": false,
"md5_digest": "c15ec5da703913fdb1b0a9e223c7c034",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 61736,
"upload_time": "2017-09-03T06:48:51",
"url": "https://files.pythonhosted.org/packages/83/e7/0de3b34e761a62f892b8cb7298c7c17784ccd8408312a082bdce4dcc4616/django-advanced-filters-1.0.6.tar.gz"
}
],
"1.0.7.1": [
{
"comment_text": "",
"digests": {
"md5": "8b50f87eb36a91e7ccd3c743e23660fd",
"sha256": "ed1b13c3ae320f45b3a2721a4f0fdbdc8fa5f605a976cb6a95468d784aa94d43"
},
"downloads": -1,
"filename": "django_advanced_filters-1.0.7.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8b50f87eb36a91e7ccd3c743e23660fd",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 74064,
"upload_time": "2018-03-19T17:19:40",
"url": "https://files.pythonhosted.org/packages/1e/08/53648b55f13c831a70d722be39a3b1addadf4f31b4b03cae149e11b9fbff/django_advanced_filters-1.0.7.1-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "1c9690926a50a6b50303e89f7e8f7ddf",
"sha256": "45840def08562eade6fcb8dfb5b0b6a719c0e5d89ec09477ad5a32af75909ad9"
},
"downloads": -1,
"filename": "django-advanced-filters-1.0.7.1.tar.gz",
"has_sig": false,
"md5_digest": "1c9690926a50a6b50303e89f7e8f7ddf",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 68268,
"upload_time": "2018-03-19T17:19:43",
"url": "https://files.pythonhosted.org/packages/71/73/a4ff46285f8b6baa7ab6033f543a9704f1998961900e2623e63186f742e6/django-advanced-filters-1.0.7.1.tar.gz"
}
],
"1.1.0": [
{
"comment_text": "",
"digests": {
"md5": "e97f7d418f61bac186df6d36d716a8fc",
"sha256": "4d9c6a3ca38f212fa0000f0a35426a046ead98d8608ffe341912dfcc3b0da87f"
},
"downloads": -1,
"filename": "django_advanced_filters-1.1.0-py2-none-any.whl",
"has_sig": false,
"md5_digest": "e97f7d418f61bac186df6d36d716a8fc",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 67272,
"upload_time": "2018-09-23T11:36:05",
"url": "https://files.pythonhosted.org/packages/bc/d6/49dd01e1560cc2812d990c0268b12a47cd58597e1177bb7f46013a4cbd15/django_advanced_filters-1.1.0-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "41cc7e56f75d65c473b21d53840186fc",
"sha256": "adee9498daa65125584c4cc0d37f7636427366fb96cc707bef8133b1dc22c405"
},
"downloads": -1,
"filename": "django-advanced-filters-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "41cc7e56f75d65c473b21d53840186fc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 72645,
"upload_time": "2018-09-23T11:36:07",
"url": "https://files.pythonhosted.org/packages/45/68/98aed982c7a56eb47dfed7cf47703c533b7bdc4ea65f85bae7fbf98c48eb/django-advanced-filters-1.1.0.tar.gz"
}
],
"1.1.1": [
{
"comment_text": "",
"digests": {
"md5": "538de122d5c822bd5d9e2cb4a665ed87",
"sha256": "4b1cd3bea31a95de20192c6ecf211263c90576d2d0630f44e928713e483cb3da"
},
"downloads": -1,
"filename": "django_advanced_filters-1.1.1-py2-none-any.whl",
"has_sig": false,
"md5_digest": "538de122d5c822bd5d9e2cb4a665ed87",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 67433,
"upload_time": "2019-01-28T10:17:50",
"url": "https://files.pythonhosted.org/packages/20/3f/43dcb990add286d572e57d26904a6fe0ed00322798da5c6b523ba5f63f27/django_advanced_filters-1.1.1-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "61de1bedd819fac2cc7e14f015fc2cb9",
"sha256": "3dc3af3b016b350adceb6458958238a5ed68cf90b579c315686129b3979bfcc7"
},
"downloads": -1,
"filename": "django-advanced-filters-1.1.1.tar.gz",
"has_sig": false,
"md5_digest": "61de1bedd819fac2cc7e14f015fc2cb9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 73843,
"upload_time": "2019-01-28T10:17:53",
"url": "https://files.pythonhosted.org/packages/d9/ec/61c872d95df3944f13c1c41d25b8ba9eecd2200fd0f43c274b6b0882252d/django-advanced-filters-1.1.1.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "538de122d5c822bd5d9e2cb4a665ed87",
"sha256": "4b1cd3bea31a95de20192c6ecf211263c90576d2d0630f44e928713e483cb3da"
},
"downloads": -1,
"filename": "django_advanced_filters-1.1.1-py2-none-any.whl",
"has_sig": false,
"md5_digest": "538de122d5c822bd5d9e2cb4a665ed87",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 67433,
"upload_time": "2019-01-28T10:17:50",
"url": "https://files.pythonhosted.org/packages/20/3f/43dcb990add286d572e57d26904a6fe0ed00322798da5c6b523ba5f63f27/django_advanced_filters-1.1.1-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "61de1bedd819fac2cc7e14f015fc2cb9",
"sha256": "3dc3af3b016b350adceb6458958238a5ed68cf90b579c315686129b3979bfcc7"
},
"downloads": -1,
"filename": "django-advanced-filters-1.1.1.tar.gz",
"has_sig": false,
"md5_digest": "61de1bedd819fac2cc7e14f015fc2cb9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 73843,
"upload_time": "2019-01-28T10:17:53",
"url": "https://files.pythonhosted.org/packages/d9/ec/61c872d95df3944f13c1c41d25b8ba9eecd2200fd0f43c274b6b0882252d/django-advanced-filters-1.1.1.tar.gz"
}
]
}