{ "info": { "author": "LevIT", "author_email": "info@levit.be", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 1.9", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content" ], "description": "# LevIT's DRF Auto-endpoint\n\n`drf_auto_endpoint` is a library used to make it as straight-forward to declare an API endpoint\nas it is to declare a new `ModelAdmin` in Django.\n\n## Installation\n\nSo far, `drf_auto_endpoint` is only compatible with python 3.5, Django 1.9 and DRF 3.3.\nIt probably also works with other version of python 3.3+ and Django 1.8+, it just hasn't been\ntested with those yet.\n\n### With pip\n\n`pip install drf_auto_endpoint`\n\n### From source\n\nWithin the source directory:\n\n`python setup.py install`\n\n## Usage\n\nFirst of all you'll need to import the default EndpointRouter in your urls.py file.\n\n`from drf_auto_endpoint.router import router`\n\nAs well as add its urls to your `urlpatterns` in `urls.py`, the same way you would with DRF's\n`DefaultRouter`.\n\n```\nurlpatterns = [\n ...\n url(r'^api/', include(router.urls)),\n ...\n]\n``` \n\n### Prototyping\n\nThe quickest way to get a working endpoint is to register a model with the router. Register accepts\nan optional keyword argument for the `url` associated to that endpoint. By default the url for an\nendpoint willbe `app_label/verbose_name_plural`\n\n```\nfrom drf_auto_endpoint.router import router\nfrom my_app.models import MyModel, OtherModel\n\nrouter.register(MyModel)\nrouter.register(OtherModel, url='my_custom_url')\n\nurlpatterns = [\n url(r'^api/', include(router.urls)),\n]\n```\n\n#### Options\n\nWhen registering a Model with the router, you can also pass several keyword arguments:\n\n- `read_only`: Boolean, indicates whether this endpoint should be read_only or not\n- `fieldsets`: a tuple containing the list of fieldsets to use. A fieldset has 2 properties,\na `title` and a list of `fields` (by default, every field from the model will be used).\n- `filter_fields`: a tuple containing a list of fields on which the endpoint will accept filtering\n- `search_fields`: a tuple containing a list of fields on which the endpoint will accept searching\n(text fields only)\n- `ordering_fields`: a tuple containing a list of fields on which the endpoint will accept ordering\n- `page_size`: the number of records to render at once (automatically activates pagination)\n- `permission_classes`: a tuple containing the list of DRF permission classes to use\n- `url`: the base url for the viewset\n- `viewset`: the viewset class to use instead of the auto-generated one\n- `base_viewset`: a base viewset class to use instead of the defaults (`ModelViewSet` or \n`ReadOnlyModelViewSet`)\n\n### Custom Enpoint's\n\nAs with Django's `ModelAdmin` class you can also define your own `Endpoint` class and register it\nwith the router instead of registering a model.\n\n```\n# my_app/endpoints.py\nfrom drf_auto_endpoint.endpoints import Endpoint\nfrom .models import MyModel\n\nclass MyModelEndpoint(Endpoint):\n\n model = MyModel\n read_only = True\n fields = ('id', 'name', 'category')\n```\n\n```\n# urls.py\nfrom drf_auto_endpoint.router import router\nfrom my_app.endpoints import MyModelEndpoint\n\nrouter.register(endpoint=MyModelEndpoint)\n\nurlpatterns = [\n url(r'^api/', include(router.urls)),\n]\n```\n\n## MetaData\n\nThis package also provides an `AutoMetadata` and a `MinimalAutoMetadata` class. Those \nclasses can be used in place of the default DRF metadata class.\n\nTo use it, change you DRF settings to include\n\n```\nREST_FRAMEWORK = {\n 'DEFAULT_METADATA_CLASS': 'drf_auto_endpoint.metadata.AutoMetadata',\n}\n```\n\nThose MetaData classes will provide extra information about the fields provided by the\nserializer and hint the client application on how to use and display those fields.\n\nAs an example, see the extra output these classes provide for the sample model `Product`.\n\n```\n \"fields\": [\n {\n \"read_only\": true,\n \"name\": \"id\",\n \"label\": \"Id\",\n \"widget\": \"number\",\n \"extra\": {}\n },\n {\n \"read_only\": false,\n \"name\": \"name\",\n \"label\": \"Name\",\n \"widget\": \"text\",\n \"extra\": {}\n },\n {\n \"read_only\": false,\n \"name\": \"category\",\n \"label\": \"Category\",\n \"widget\": \"foreignkey\",\n \"extra\": {\n \"related_model\": \"sample/category\"\n }\n },\n {\n \"read_only\": false,\n \"name\": \"product_type\",\n \"label\": \"Product_Type\",\n \"widget\": \"select\",\n \"extra\": {\n \"choices\": [\n {\n \"value\": \"s\",\n \"label\": \"Sellable\"\n },\n {\n \"value\": \"r\",\n \"label\": \"Rentable\"\n }\n ]\n }\n },\n {\n \"read_only\": true,\n \"name\": \"__str__\",\n \"label\": \"Product\",\n \"widget\": \"text\",\n \"extra\": {}\n }\n ],\n \"list_display\": [\n \"__str__\"\n ],\n \"filter_fields\": [],\n \"search_enabled\": false,\n \"ordering_fields\": [],\n \"needs\": [\n {\n \"singular\": \"category\",\n \"app\": \"sample\",\n \"plural\": \"categories\"\n }\n ],\n \"fieldsets\": [\n {\n \"title\": null,\n \"fields\": [\n {\n \"name\": \"name\"\n },\n {\n \"name\": \"category\"\n },\n {\n \"name\": \"product_type\"\n }\n ]\n }\n ]\n```\n\n## ToDo\n\n- [ ] Python 2.7 compatibility\n- [x] Python 3.4 compatibility\n- [ ] Django 1.10 compatibility\n- [ ] Write better documentation\n- [x] Provide a wrapper for `ModelSerializer` and `ModelViewSet`\n- [x] Add custom options for filter, search and order\n- [ ] Enable admin-like registration mechanism\n- [x] Provide a `Metadata` class to provide meta-information (like list_display) on `OPTION` calls\n- [x] Add `choices` (only for non-foreign-keys) and `related_model` to the `Metadata` class\n- [ ] Add languages information when django-model-translation is installed\n\n---\n\nLicense information available [here](LICENSE.md).\n\nContributors code of conduct is available [here](COC.md). Note that this COC **will** be enforced.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/levit_scs/drf_auto_endpoint", "keywords": null, "license": "MIT License", "maintainer": null, "maintainer_email": null, "name": "drf_auto_endpoint", "package_url": "https://pypi.org/project/drf_auto_endpoint/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/drf_auto_endpoint/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://bitbucket.org/levit_scs/drf_auto_endpoint" }, "release_url": "https://pypi.org/project/drf_auto_endpoint/0.9.9/", "requires_dist": null, "requires_python": null, "summary": "Package description", "version": "0.9.9" }, "last_serial": 2397484, "releases": { "0.9": [ { "comment_text": "", "digests": { "md5": "994412f414b1fb7c43516010e326c53c", "sha256": "bbc9a78fd31f41562edb867c029cd6b100fadfe1539179342a21e06494df05f8" }, "downloads": -1, "filename": "drf_auto_endpoint-0.9.tar.gz", "has_sig": false, "md5_digest": "994412f414b1fb7c43516010e326c53c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4826, "upload_time": "2016-06-27T06:02:01", "url": "https://files.pythonhosted.org/packages/18/74/8c746eebc52ed237308fa4423a2ac5203391f964c76689a50b0981770c87/drf_auto_endpoint-0.9.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "57cf29751894c0e092dbd254e657aa64", "sha256": "bb5ee8ed36434df44df6dfd1c6a1490eaa200db65eff84b7703a2c6f00f1093f" }, "downloads": -1, "filename": "drf_auto_endpoint-0.9.1.tar.gz", "has_sig": false, "md5_digest": "57cf29751894c0e092dbd254e657aa64", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6161, "upload_time": "2016-07-01T06:13:40", "url": "https://files.pythonhosted.org/packages/82/64/8a372ee89f33b7db5df83fef77ea2a776039e7f18c0002ff5a4330142dfd/drf_auto_endpoint-0.9.1.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "8d5425a17462f8c797bbe3a99308ed78", "sha256": "ca3b4d11ff1c620a4993f718189b88995437e9ee0dadc4ca97a1f5e407577437" }, "downloads": -1, "filename": "drf_auto_endpoint-0.9.2.tar.gz", "has_sig": false, "md5_digest": "8d5425a17462f8c797bbe3a99308ed78", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6338, "upload_time": "2016-07-28T06:40:13", "url": "https://files.pythonhosted.org/packages/71/83/4b36861285b333e8b0f7c0c3d130fa93902a61cc6b9128841caaa8e78265/drf_auto_endpoint-0.9.2.tar.gz" } ], "0.9.3": [ { "comment_text": "", "digests": { "md5": "449de65e5da0cfc83d546e2201d2b8f2", "sha256": "a4451544b6c16af09f97ee44cdbc51864fb9a109800108faac1359c94990cde8" }, "downloads": -1, "filename": "drf_auto_endpoint-0.9.3.tar.gz", "has_sig": false, "md5_digest": "449de65e5da0cfc83d546e2201d2b8f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6339, "upload_time": "2016-07-29T11:28:49", "url": "https://files.pythonhosted.org/packages/d2/a8/4b5bbb97159b1966058772720b1861a417da9b113cb6fa695cf9fbc0157c/drf_auto_endpoint-0.9.3.tar.gz" } ], "0.9.4": [ { "comment_text": "", "digests": { "md5": "4fafd85595f419f475d0b14e20badc43", "sha256": "3b64ab56d4da98142a70a319878f853edadc0149f7316658578b609b714bbff6" }, "downloads": -1, "filename": "drf_auto_endpoint-0.9.4.tar.gz", "has_sig": false, "md5_digest": "4fafd85595f419f475d0b14e20badc43", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6405, "upload_time": "2016-08-24T06:54:10", "url": "https://files.pythonhosted.org/packages/fa/f9/bb4a4580051b81eaf73f279e07a2139220f4646b4227122399d74e90c3c2/drf_auto_endpoint-0.9.4.tar.gz" } ], "0.9.5": [ { "comment_text": "", "digests": { "md5": "198dd43263f2f69162d1bc1ea363fc3a", "sha256": "1f2f7ca5abebb05287813b3869a42eee47eca070b3eb6ecefdcc5dbbbef821bb" }, "downloads": -1, "filename": "drf_auto_endpoint-0.9.5.tar.gz", "has_sig": false, "md5_digest": "198dd43263f2f69162d1bc1ea363fc3a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6610, "upload_time": "2016-08-24T07:54:01", "url": "https://files.pythonhosted.org/packages/70/99/56c6246c8bd973c4ea55ae46f4560b925d4b6ce3726bb9532ab3616be070/drf_auto_endpoint-0.9.5.tar.gz" } ], "0.9.6": [ { "comment_text": "", "digests": { "md5": "cd2ed57c8f167ec04fee997057d43afe", "sha256": "d8180b8190b49333eb29975e242f2af00e536667075b607d75b3f5ca4d9cf50c" }, "downloads": -1, "filename": "drf_auto_endpoint-0.9.6.tar.gz", "has_sig": false, "md5_digest": "cd2ed57c8f167ec04fee997057d43afe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19362, "upload_time": "2016-09-01T07:26:47", "url": "https://files.pythonhosted.org/packages/f5/4e/37a8a75330e79c11e0f5251c578718547f8f0731cafb36cd5285cde46655/drf_auto_endpoint-0.9.6.tar.gz" } ], "0.9.7": [ { "comment_text": "", "digests": { "md5": "7dac64ab777b9bb50450c292bbfd4bc6", "sha256": "a1538af7cd522a0150bb9c457f910183acc9f699e06602070b3d1a711ff76e90" }, "downloads": -1, "filename": "drf_auto_endpoint-0.9.7.tar.gz", "has_sig": false, "md5_digest": "7dac64ab777b9bb50450c292bbfd4bc6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19598, "upload_time": "2016-09-28T12:12:06", "url": "https://files.pythonhosted.org/packages/58/2a/b26ebff1e9fdef91117c3dd7f1c636c0e15d1278d8b2e92bc4e5f6a8e386/drf_auto_endpoint-0.9.7.tar.gz" } ], "0.9.8": [ { "comment_text": "", "digests": { "md5": "93349a9c65c8a6184e43e13aa0d3a275", "sha256": "5964d0d479a00d2aff3bdfee616ab13017d5c7254f540844ef0a20c6cf39d369" }, "downloads": -1, "filename": "drf_auto_endpoint-0.9.8.tar.gz", "has_sig": false, "md5_digest": "93349a9c65c8a6184e43e13aa0d3a275", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19882, "upload_time": "2016-10-05T14:33:22", "url": "https://files.pythonhosted.org/packages/37/02/c8633fc7e08401134dd05446741e9aad787cfe17cff06c3ec1797fcf1ebe/drf_auto_endpoint-0.9.8.tar.gz" } ], "0.9.9": [ { "comment_text": "", "digests": { "md5": "045bf9a27a6b7d3cdc1ecb36e528a972", "sha256": "7bc849f76f933e1f69eeb11ebd1812586d2a5920fbfb239bca85f9fd601bd8b4" }, "downloads": -1, "filename": "drf_auto_endpoint-0.9.9.tar.gz", "has_sig": false, "md5_digest": "045bf9a27a6b7d3cdc1ecb36e528a972", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19906, "upload_time": "2016-10-13T15:29:25", "url": "https://files.pythonhosted.org/packages/9d/99/1211e090c075d055efd76e591a1c29963d7140973c56278cc99aef9565a3/drf_auto_endpoint-0.9.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "045bf9a27a6b7d3cdc1ecb36e528a972", "sha256": "7bc849f76f933e1f69eeb11ebd1812586d2a5920fbfb239bca85f9fd601bd8b4" }, "downloads": -1, "filename": "drf_auto_endpoint-0.9.9.tar.gz", "has_sig": false, "md5_digest": "045bf9a27a6b7d3cdc1ecb36e528a972", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19906, "upload_time": "2016-10-13T15:29:25", "url": "https://files.pythonhosted.org/packages/9d/99/1211e090c075d055efd76e591a1c29963d7140973c56278cc99aef9565a3/drf_auto_endpoint-0.9.9.tar.gz" } ] }