{ "info": { "author": "Eugene Mozge", "author_email": "eumozge@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Django-queryset-gallery\n\nQueryset gallery is an interface for creating a gallery that provides pagination and filtering via lookups. It can be useful for getting objects via API.\n\n## Table of contents\n\n* [How to create filters](#how-to-create-filters)\n* [How to create a gallery](#how-to-create-a-gallery)\n* [How to use simple search](#how-to-use-simple-search)\n* [How to work with pagination](#how-to-work-with-pagination)\n\n### How to create filters\n\nEvery filter inherits from base class `QuerySetFilter` and include two args: `key` and `lookup`. Filters apply via standard method queryset method `filter`. So, `lookup` will be used for filtering. `key` is an id of a filter and it is used when you provide to gallery engine dict with params for filtering. A filter gets param from dict via `key`.\n\n```\nfrom queryset_gallery.filters import QuerySetFilter\n\nUserEmail = QuerySetFilter(\n key='email',\n lookup='email__icontains'\n)\nUserIsStaff = QuerySetFilter(\n key='is_staff',\n lookup='is_staff'\n)\n```\n\n### How to create a gallery\n\nA base class for a gallery in `QuerySetGallery`. When you need to create a gallery you provide django `model` and set `QuerySetFilter` objects in `filters` conts:\n\n```\nfrom django.contrib.auth.models import User\nfrom queryset_gallery.gallery import QuerySetGallery\n\nclass UserGallery(QuerySetGallery):\n model = User\n filters = [UserEmail, UserIsStaff]\n```\n\nThe gallery has a method `get_page`. It gets several params like:\n\n```\ndef get_page(self, page_number, per_page, filter_params: dict = None, order_by_lookups: list = None, queryset_params=None, queryset=None):\n```\n\nThe first and second args are params for paginator. The third arg `filter_params` is a dict with params for filters. It includes filter keys and params. Also, you can provide source `queryset` or override method `get_queryset`, by default all model objects will be used as a source. Also, if there additional params for getting queryset you can provide it via `queryset_params`. The last arg `order_by_lookups` is a list of lookups for queryset method `order_by()`. All lookups from a list will be applied to queryset. Finally the gallery return queryset and dict of pagination data.\n\n```\ngallery = UserGallery()\nfilter_params = {\n 'email': 'admin',\n 'is_staff': True,\n}\n\ngallery.get_page(per_page=10, page_number=1, filter_params=params, order_by_lookups=['email'])\n```\n\n### How to use simple search\n\nThe simple search is a situation then there a list of params list `['Alex', 'Ambassador']` and several fields for filtering, for example, `first_name`, `last_name` and `nickname`. `QuerySetGallery` supports a simple search via `QuerySetSimpleSearch`. It's just a filter that can be added to const `filters`. For the example above `QuerySetSimpleSearch` create several Django Q objects with a condition OR and execute them. `QuerySetSimpleSearch` is created in the same way as `QuerySetFilter` but get a list of lookups instead of one lookup:\n\n```\nfrom django.contrib.auth.models import User\n\nusers = User.objects.all()\n\nUserSimpleSearch = QuerySetSimpleSearch(\n key='query',\n lookups=[\n 'first_name__icontains',\n 'last_name__icontains',\n 'nickname__icontains'\n ]\n)\nUserSimpleSearch.apply(users, ['Alex', 'Ambassador'])\n```\n\n### How to work with pagination\n\nYou don't need to work with `Paginator`, because the `QuerySetGallery` class works with it. The `QuerySetGallery` has two nuances. If you want to get all objects you can set `per_page` as -1. This way pagination returns all objects. If `per_page` and `necessary_page` are invalid it raises error 404.\n\nExample of the pagination data:\n\n```\ndata = {\n 'objects_count': 20,\n 'page_number': 2,\n 'page_count': 1,\n 'per_page': 100,\n}\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/eumozge/django-queryset-gallery", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "django-queryset-gallery", "package_url": "https://pypi.org/project/django-queryset-gallery/", "platform": "", "project_url": "https://pypi.org/project/django-queryset-gallery/", "project_urls": { "Homepage": "https://github.com/eumozge/django-queryset-gallery" }, "release_url": "https://pypi.org/project/django-queryset-gallery/1.1.3/", "requires_dist": null, "requires_python": "", "summary": "Queryset gallery is an interface for creating a gallery that provides pagination and filtering via lookups. It can be useful for getting objects via API.", "version": "1.1.3" }, "last_serial": 5593620, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "4e3abf0acc8eec39384d815271f85f6c", "sha256": "af6a521e9a0cce30daa2301db2d4025e73c0c0d91cdbdd8090e60402c056351f" }, "downloads": -1, "filename": "django_queryset_gallery-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4e3abf0acc8eec39384d815271f85f6c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2225, "upload_time": "2019-07-10T08:04:51", "url": "https://files.pythonhosted.org/packages/50/2f/f3fc33b9a7fa1f11d7a894866850201805a4cfc6947bbc5e8dab9f981aa6/django_queryset_gallery-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c82f78a8bab2df0c95408c710e03fc43", "sha256": "292a6f7ac4d0d93a8b8e9f541e62b51c1b7d1ef2231a0973f518634a34101868" }, "downloads": -1, "filename": "django_queryset_gallery-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c82f78a8bab2df0c95408c710e03fc43", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4642, "upload_time": "2019-06-08T14:21:44", "url": "https://files.pythonhosted.org/packages/d1/0c/cbef28f1dfb00e453e4bdaf495c8113c6bd3830baf490a9d21ed82aa2310/django_queryset_gallery-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4bd4d13b3bf5929c8aab7e0f2f6ab513", "sha256": "60b50f78e78215d3a8a8a45ccb6f297e787395848732ffe6c3b37ac2d152df8a" }, "downloads": -1, "filename": "django-queryset-gallery-0.1.tar.gz", "has_sig": false, "md5_digest": "4bd4d13b3bf5929c8aab7e0f2f6ab513", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2548, "upload_time": "2019-06-08T14:21:47", "url": "https://files.pythonhosted.org/packages/1d/23/0e84d477579727821173d98faf3df941c7be526a393e1226893c4b949fc4/django-queryset-gallery-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "e86c3829f40b335d5aa75b4fbc5edf90", "sha256": "0b40443adfb840c0948172fa0f167e7cab672f01007c8de17e801b721b6bfc90" }, "downloads": -1, "filename": "django_queryset_gallery-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e86c3829f40b335d5aa75b4fbc5edf90", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5728, "upload_time": "2019-06-09T10:07:30", "url": "https://files.pythonhosted.org/packages/e2/b6/30d57a2c7b06f3e43ad3ed49ed604fa7fa8e74bf959dd3a8a5841c45b53d/django_queryset_gallery-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a8d0e02a51db153c86ac3a7352af02ad", "sha256": "56a7416bbab75ff0dc42da76aba580934714e81b0c13c4a3f0f0e4bdf428cb46" }, "downloads": -1, "filename": "django-queryset-gallery-0.1.1.tar.gz", "has_sig": false, "md5_digest": "a8d0e02a51db153c86ac3a7352af02ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3674, "upload_time": "2019-06-09T10:07:31", "url": "https://files.pythonhosted.org/packages/7f/14/d84656f8e15abe9ea5435ed0ec28ac805a96365c7fd801c67c03c76294a7/django-queryset-gallery-0.1.1.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "51eeeca2e6396746ca5088fd30bb0e53", "sha256": "38c5284d04b0bd7ae0562d8c3d65a5f94f397deffaf942e6e70172eabe76acc3" }, "downloads": -1, "filename": "django_queryset_gallery-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "51eeeca2e6396746ca5088fd30bb0e53", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6987, "upload_time": "2019-06-09T15:16:55", "url": "https://files.pythonhosted.org/packages/ed/53/246364fa2dfc08ec3173f172ebe0ebf629ed8ca71819ca33707cc4b86d2b/django_queryset_gallery-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9e1b48b9d237a7d905ff0f809ca45b44", "sha256": "993a5122a7c8833013cfe943725478224aec45a0c7463ed533b131dcbab9fa70" }, "downloads": -1, "filename": "django-queryset-gallery-1.0.0.tar.gz", "has_sig": false, "md5_digest": "9e1b48b9d237a7d905ff0f809ca45b44", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4616, "upload_time": "2019-06-09T15:16:56", "url": "https://files.pythonhosted.org/packages/45/6d/a3f72ca906d658be7f220b2c1ad155d188307b740d802bd57a6e0169fb78/django-queryset-gallery-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "eac7c8ebd728fa3c7986f2772b47c48e", "sha256": "ff454d714ff1d14d1e9cfe300855594339406a31fd094ee8944fd91e71c0a5b0" }, "downloads": -1, "filename": "django_queryset_gallery-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "eac7c8ebd728fa3c7986f2772b47c48e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7339, "upload_time": "2019-06-11T16:25:06", "url": "https://files.pythonhosted.org/packages/10/80/37520e5401567dab6ac8dd6c4a68230e7bce1a62192bb875d16456dac3fe/django_queryset_gallery-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8f99f2a3627641731c50ad8165510914", "sha256": "1118c4c39f6a0f7d812f3406df040c6abdaadb163cfcf2ed910d562917b86bac" }, "downloads": -1, "filename": "django-queryset-gallery-1.0.1.tar.gz", "has_sig": false, "md5_digest": "8f99f2a3627641731c50ad8165510914", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4963, "upload_time": "2019-06-11T16:25:07", "url": "https://files.pythonhosted.org/packages/18/1b/25382942088b52266a02e5095569c13c4129868ed379d2324d945ec99d8d/django-queryset-gallery-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "db4d1b6bb1aa93fe65996a8e7b3993b2", "sha256": "fc536bf9ab0841fba550437876ed76e1b2c544545bf78a96480545dcbe5184c5" }, "downloads": -1, "filename": "django_queryset_gallery-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "db4d1b6bb1aa93fe65996a8e7b3993b2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7412, "upload_time": "2019-06-12T05:24:13", "url": "https://files.pythonhosted.org/packages/6e/7b/5e10200b3312c40a9702942a83dfab6d83c8ff376d6986bdd1e0ed21119b/django_queryset_gallery-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f1183e49d28c482e7105be4ed8ae4175", "sha256": "5438f18ce9d05a6ce54596ea7c21e074d4253ce252d72b96340b3a0cf1b7ce08" }, "downloads": -1, "filename": "django-queryset-gallery-1.0.2.tar.gz", "has_sig": false, "md5_digest": "f1183e49d28c482e7105be4ed8ae4175", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5015, "upload_time": "2019-06-12T05:24:14", "url": "https://files.pythonhosted.org/packages/ce/c4/33ef2f337d3d13fdf891489c381cbba499323671295c5d41c22854ffa52a/django-queryset-gallery-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "024a9dfd11604e90e994591717a52d9f", "sha256": "ae4db69db49f3e1a43a8dfc50aee4a0e88061fdf825d57cc21f467a7b44d1b9f" }, "downloads": -1, "filename": "django_queryset_gallery-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "024a9dfd11604e90e994591717a52d9f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7524, "upload_time": "2019-06-16T07:23:05", "url": "https://files.pythonhosted.org/packages/c9/50/5d1ae9ad8e8ca8c4c8ff8bba098ac2edca5de10ca6568563504f9300f0d2/django_queryset_gallery-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7417136db0ef4c5cdadf27238a24a35b", "sha256": "91a409f0ddb27770fadf5c9745b07b90516b1e6f0d4926584201fd72ca431457" }, "downloads": -1, "filename": "django-queryset-gallery-1.0.3.tar.gz", "has_sig": false, "md5_digest": "7417136db0ef4c5cdadf27238a24a35b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5112, "upload_time": "2019-06-16T07:23:06", "url": "https://files.pythonhosted.org/packages/90/41/6f1c5ed43e6e6651c42704c3a23382f0edac81a790fc3e67fffbb9002c70/django-queryset-gallery-1.0.3.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "894a2187708f767dd1806a1fb71967b8", "sha256": "a7dd794acd4e0df1a7b404e18b55855f65ab5d5b98fef467cd3d8b0d0080a4d4" }, "downloads": -1, "filename": "django_queryset_gallery-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "894a2187708f767dd1806a1fb71967b8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8358, "upload_time": "2019-06-28T13:48:44", "url": "https://files.pythonhosted.org/packages/c6/62/a876bcc5a3bd1ef99f719e13f86482b9a097a9c4363fff4e505efb7b61d0/django_queryset_gallery-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3e8372217127196272bdc7b604cc37e4", "sha256": "f94612e53e55f2dc7d4a2d1c5e5498dc73bd2e885d1fc662afaf10c133f31163" }, "downloads": -1, "filename": "django-queryset-gallery-1.1.0.tar.gz", "has_sig": false, "md5_digest": "3e8372217127196272bdc7b604cc37e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5966, "upload_time": "2019-06-28T13:48:47", "url": "https://files.pythonhosted.org/packages/f5/ad/90bdf46325ac815206897f1bffb845c58610b79282699d30579db9d3b90d/django-queryset-gallery-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "e19902a5f899c426d98c44814823a821", "sha256": "108429b3e397b99e4629a7939a1be579f263922729f256cd0a27680275e238df" }, "downloads": -1, "filename": "django_queryset_gallery-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e19902a5f899c426d98c44814823a821", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8394, "upload_time": "2019-07-10T12:24:57", "url": "https://files.pythonhosted.org/packages/ee/ff/d253636bee3e6e6da8ad0fa5da0e2363737948e53de320b9e502228a8ca1/django_queryset_gallery-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eb23e63b6da963758fe873d18e141006", "sha256": "039aea9d46f5859d1fe8f4e1c5b0e7348f90f0ba922ab22fbd64ab61fb8a297e" }, "downloads": -1, "filename": "django-queryset-gallery-1.1.1.tar.gz", "has_sig": false, "md5_digest": "eb23e63b6da963758fe873d18e141006", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5992, "upload_time": "2019-07-10T12:24:59", "url": "https://files.pythonhosted.org/packages/5a/89/381baf49a4f94a231ed104629af118f141f60fcc9420e0e8ea335a816d50/django-queryset-gallery-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "b5247a3f900c79091e92ac4d286fc89d", "sha256": "148360eecf71d878a494d1e8f3aa6ca3c3371ece564b1d7552a7a81ba3875b7f" }, "downloads": -1, "filename": "django_queryset_gallery-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b5247a3f900c79091e92ac4d286fc89d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8406, "upload_time": "2019-07-11T07:52:16", "url": "https://files.pythonhosted.org/packages/e0/38/6a131c23a0665834297e97f9e8eb445887c23c6016b8d6f6788e879b3ce8/django_queryset_gallery-1.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a178441918174daa376e43350a67e1c4", "sha256": "825d28fed648a01cfc09130156368d2681f4a526f6a904e86e7443279aa1a74c" }, "downloads": -1, "filename": "django-queryset-gallery-1.1.2.tar.gz", "has_sig": false, "md5_digest": "a178441918174daa376e43350a67e1c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5999, "upload_time": "2019-07-11T07:52:17", "url": "https://files.pythonhosted.org/packages/a9/06/105da1d096d94527f71937d025c8d97643cd31b9143d5acfaaa59e2c1c24/django-queryset-gallery-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "c715e7a32f36b5d632fc8380883d542e", "sha256": "f8e87d1a282efea4ee31493e868bda03e289d2a6a618c67d2a62e879d5597790" }, "downloads": -1, "filename": "django_queryset_gallery-1.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "c715e7a32f36b5d632fc8380883d542e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8438, "upload_time": "2019-07-27T17:46:40", "url": "https://files.pythonhosted.org/packages/92/46/17869a71497c39bedf6768b34d3e59bd1b0fda365b140d1961f9643919b6/django_queryset_gallery-1.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7b2445e9c086cda49d7d1a2ee46e122d", "sha256": "caca62ff6f146a67fd3e18205a6d2d35b599bb68ea931aa93650a6b3438e9472" }, "downloads": -1, "filename": "django-queryset-gallery-1.1.3.tar.gz", "has_sig": false, "md5_digest": "7b2445e9c086cda49d7d1a2ee46e122d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6022, "upload_time": "2019-07-27T17:46:43", "url": "https://files.pythonhosted.org/packages/aa/c7/79f17068f1dfc7c0c77d1c4a8306bf858401fd5ab05959152b257f787055/django-queryset-gallery-1.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c715e7a32f36b5d632fc8380883d542e", "sha256": "f8e87d1a282efea4ee31493e868bda03e289d2a6a618c67d2a62e879d5597790" }, "downloads": -1, "filename": "django_queryset_gallery-1.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "c715e7a32f36b5d632fc8380883d542e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8438, "upload_time": "2019-07-27T17:46:40", "url": "https://files.pythonhosted.org/packages/92/46/17869a71497c39bedf6768b34d3e59bd1b0fda365b140d1961f9643919b6/django_queryset_gallery-1.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7b2445e9c086cda49d7d1a2ee46e122d", "sha256": "caca62ff6f146a67fd3e18205a6d2d35b599bb68ea931aa93650a6b3438e9472" }, "downloads": -1, "filename": "django-queryset-gallery-1.1.3.tar.gz", "has_sig": false, "md5_digest": "7b2445e9c086cda49d7d1a2ee46e122d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6022, "upload_time": "2019-07-27T17:46:43", "url": "https://files.pythonhosted.org/packages/aa/c7/79f17068f1dfc7c0c77d1c4a8306bf858401fd5ab05959152b257f787055/django-queryset-gallery-1.1.3.tar.gz" } ] }