{ "info": { "author": "Sergei Kovalev", "author_email": "zili.tnd@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Build Tools" ], "description": "Django-Rester\n=============\n\n|build| |codacy| |pypi| |license|\n\nPackage for creating API with built-in validation and authentication\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis product is designed to build API endpoints of varying complexity\nand nesting.\n\nThe core is a view class - BaseApiView (the inheritor of the standard\ndjango view)\n\n--------------\n\n1. requirements\n'''''''''''''''\n\n1. Python 3+\n\n2. Django 1.11+\n\n--------------\n\n2. settings\n'''''''''''\n\nDEFAULT settings (may be overridden):\n\n.. code:: python\n\n DJANGO_RESTER = {\n 'AUTH_BACKEND': 'django_rester.rester_jwt', \n 'RESPONSE_STRUCTURE': False,\n 'CORS_ACCESS': False,\n 'FIELDS_CHECK_EXCLUDED_METHODS': ['OPTIONS', 'HEAD'],\n 'SOFT_RESPONSE_VALIDATION': False, \n }\n\n DJANGO_RESTER_JWT: {\n 'SECRET': 'secret_key',\n 'EXPIRE': 60 * 60 * 24 * 14, # seconds\n 'AUTH_HEADER': 'Authorization',\n 'AUTH_HEADER_PREFIX': 'jwt',\n 'ALGORITHM': 'HS256',\n 'PAYLOAD_LIST': ['username'],\n 'USE_REDIS': False, # here can be an int value (redis db number)\n 'LOGIN_FIELD': 'username', # as default django login field\n }\n\n**DJANGO\\_RESTER** - django-rester settings:\n\n\u00a0\u00a0\u00a0\u00a0 **AUTH\\_BACKEND** - authentication backend\\*\n\n\u00a0\u00a0\u00a0\u00a0 **RESPONSE\\_STRUCTURE** - Either False or a dict with 'success',\n'message' and 'data' as a values\n\n\u00a0\u00a0\u00a0\u00a0 **CORS\\_ACCESS** - CORS control: True, False, '\\*', hosts\\_string\n\n\u00a0\u00a0\u00a0\u00a0 **FIELDS\\_CHECK\\_EXCLUDED\\_METHODS** - methods, which will not be\nprocessed with body structure checks\n\n\u00a0\u00a0\u00a0\u00a0 **SOFT\\_RESPONSE\\_VALIDATION** - if True, response will not be cut\noff if it will contain additional to response\\_structure fields\n\n**DJANGO\\_RESTER\\_JWT** - JWT authentication settings (in case of\n'RESTER\\_AUTH\\_BACKEND' = 'django\\_rester.rester\\_jwt')\\*:\n\n\u00a0\u00a0\u00a0\u00a0 **SECRET** - JWT secret key\n\n\u00a0\u00a0\u00a0\u00a0 **EXPIRE** - token expiration time (datetime.now() +\nRESTER\\_EXPIRATION\\_DELTA)\n\n\u00a0\u00a0\u00a0\u00a0 **AUTH\\_HEADER** - HTTP headed, which will be used for auth token.\n\n\u00a0\u00a0\u00a0\u00a0 **AUTH\\_HEADER\\_PREFIX** - prefix for auth token\n(\"Authorization: \")\n\n\u00a0\u00a0\u00a0\u00a0 **ALGORITHM** - cypher algorithm\n\n\u00a0\u00a0\u00a0\u00a0 **PAYLOAD\\_LIST** - payload list for token encode (will take\nspecified **user** attributes to create token)\n\n\u00a0\u00a0\u00a0\u00a0 **USE\\_REDIS** - use redis-server to store tokens or not\n\n\u00a0\u00a0\u00a0\u00a0 **LOGIN\\_FIELD** - user login field (default is 'username' as in\ndjango) \\*\\*\\*\n\n3. built-in statuses\n''''''''''''''''''''\n\n``from django_rester.status import ...`` slightly modified status.py\nfrom `DRF `__, it's simple and\neasy to understand.\n\nAny statuses used in this documentation are described in that file.\n\\*\\*\\* ##### 4. built-in exceptions:\n\n``from django_rester.exceptions import ...`` Exceptions, which will help\nyou to recognise errors related to django-rester\n\n**class ResterException(Exception)**\n\n\u00a0\u00a0\u00a0\u00a0base django-rester exception, standard Exception inheritor\n\n**class ResponseError(Exception)**\n\n\u00a0\u00a0\u00a0\u00a0ResponseError inheritor, added response status -\nHTTP\\_500\\_INTERNAL\\_SERVER\\_ERROR\n\n**class ResponseBadRequest(ResponseError)**\n\n\u00a0\u00a0\u00a0\u00a0ResponseError inheritor, response status changed to\nHTTP\\_400\\_BAD\\_REQUEST\n\n**class ResponseServerError(ResponseError)**\n\n\u00a0\u00a0\u00a0\u00a0ResponseError inheritor\n\n**class ResponseAuthError(ResponseError)**\n\n\u00a0\u00a0\u00a0\u00a0ResponseError inheritor, response status changed to\nHTTP\\_401\\_UNAUTHORIZED\n\n**class ResponseOkMessage(ResponseError)**\n\n\u00a0\u00a0\u00a0\u00a0ResponseError inheritor\n\n\u00a0\u00a0\u00a0\u00a0acceptable arguments: \\*, message='', data=None,\nstatus=HTTP\\_200\\_OK\n\n**class ResponseFailMessage(ResponseError)**\n\n\u00a0\u00a0\u00a0\u00a0ResponseError inheritor\n\n\u00a0\u00a0\u00a0\u00a0acceptable arguments: \\*, message='', data=None,\nstatus=HTTP\\_500\\_INTERNAL\\_SERVER\\_ERROR\n\n**class ResponseBadRequestMsgList(ResponseError)**\n\n\u00a0\u00a0\u00a0\u00a0ResponseError inheritor\n\n\u00a0\u00a0\u00a0\u00a0acceptable arguments: \\*, messages=None,\nstatus=HTTP\\_400\\_BAD\\_REQUEST\n\n\u00a0\u00a0\u00a0\u00a0messages could be list, tuple or string.\n\n**class JSONFieldError(ResterException)**\n\n\u00a0\u00a0\u00a0\u00a0ResterException inheritor, base JSONField exception\n\n**class JSONFieldModelTypeError(JSONFieldError)**\n\n\u00a0\u00a0\u00a0\u00a0JSONField exception, raises when type of model parameter is not\nvalid\n\n**class JSONFieldModelError(JSONFieldError)**\n\n\u00a0\u00a0\u00a0\u00a0JSONField exception, raises when value of model parameter is not\nvalid\n\n**class JSONFieldTypeError(JSONFieldError)**\n\n\u00a0\u00a0\u00a0\u00a0JSONField exception, simple TypeError inside JSONField class\n\n**class JSONFieldValueError(JSONFieldError)**\n\n\u00a0\u00a0\u00a0\u00a0JSONField exception, simple ValueError inside JSONField class\n\n**class BaseAPIViewException(Exception)**\n\n\u00a0\u00a0\u00a0\u00a0BaseAPIView exception class\n\n**class RequestStructureException(BaseAPIViewException)**\n\n\u00a0\u00a0\u00a0\u00a0raise if request structure is invalid\n\n**class ResponseStructureException(RequestStructureException)**\n\n\u00a0\u00a0\u00a0\u00a0raise if response structure is invalid \\*\\*\\* ##### 5. permission\nclasses\n\n``from django_rester.permission import ...`` Permission classes created\nto interact wih **@permissions()** decorator (good example of usage), or\nin any other way you want\n\nAll permission classes accepts only one argument on **init** - django\nview **request** object.\n\nAll permission classes has 2 attributes, defined on **init**:\n\n**check**: Bool - returns **True** or **False** if request.user may or\nmay not access endpoint method\n\n**message**: could be a string or list of messages **class\nBasePermission**\n\n\u00a0\u00a0\u00a0\u00a0contains all base permission methods, it is not recommended to use\nit directly in projects\n\n**class IsAuthenticated(BasePermission)**\n\n\u00a0\u00a0\u00a0\u00a0check = **True** if user authenticated and active, else **False**\n\n**class IsAdmin(BasePermission)**\n\n\u00a0\u00a0\u00a0\u00a0check = **True** if user authenticated and active and is\\_superuser,\nelse **False**\n\n**class AllowAny(BasePermission)**\n\n\u00a0\u00a0\u00a0\u00a0check = **True** for any user (even anonymous)\n\n--------------\n\n6. built-in decorators\n''''''''''''''''''''''\n\n``from django_rester.decorators import ...`` **@permissions()**\n\n\u00a0\u00a0\u00a0\u00a0accepts permission class or list, tuple of classes.\n\n\u00a0\u00a0\u00a0\u00a0if check is passed, then user will be allowed to use endpoint\n\nexample:\n\n::\n\n class Example(BaseApiView):\n\n @permissions(IsAdmin)\n def post(request, request_data, *args, **kwargs):\n pass\n\n--------------\n\n7. built-in views\n'''''''''''''''''\n\n``from django_rester.views import ...`` **class BaseApiView(View)**\n\ninherits from standard django view.\n\nclass attributes:\n\n\u00a0\u00a0\u00a0\u00a0**auth** - authentication backend instance\n\n\u00a0\u00a0\u00a0\u00a0**request\\_fields** - request validator (use JSONField to build this\nvalidator)\n\n\u00a0\u00a0\u00a0\u00a0**response\\_fields** - response validator (use JSONField to build\nthis validator)\n\nclass HTTP methods (get, post, put, etc...) accepts next arguments:\nrequest, request\\_data, \\*args, \\*\\*kwargs\n\n\u00a0\u00a0\u00a0\u00a0**request** - standard django view request object\n\n\u00a0\u00a0\u00a0\u00a0**request\\_data** - all received request parameters as json\nserialized object\n\nUser authentication with selected authentication backend **class\nLogin(BaseApiView)**\n\nCould be used to authenticate user with selected authentication backend.\n\n\u00a0\u00a0\u00a0\u00a0Allowed method is 'POST' only.\n\n\u00a0\u00a0\u00a0\u00a0Requires username and password in request parameters (username\nfieldname parameter may be set in settings)\n\n\u00a0\u00a0\u00a0\u00a0Returns token and HTTP\\_200\\_OK status code if authentication\nsuccess, error message and HTTP\\_401\\_UNAUTHORIZED if failed **class\nLogout(BaseApiView)**\n\nCould be used to logout (with redis support) or just to let know\nfrontend about logout process. Any view could be used the same way, here\nis a **simple example**:\n\n\u00a0\u00a0\u00a0\u00a0**app/views.py:**\n\n.. code:: python\n\n from django_rester.views import BaseAPIView\n from django_rester.decorators import permissions\n from django_rester.exceptions import ResponseOkMessage\n from django_rester.permission import IsAdmin\n from django_rester.status import HTTP_200_OK\n from app.models import Model # import Model from your application\n from django_rester.fields import JSONField\n\n class TestView(BaseAPIView):\n\n request_fields = {\"POST\": {\n \"id\": JSONField(field_type=int, required=True, ),\n \"title\": JSONField(field_type=str, required=True, default='some_title'),\n \"fk\": [{\"id\": JSONField(field_type=int, required=True)}],\n }}\n\n response_fields = {\"POST\": {\n \"id\": JSONField(field_type=int, required=True, ),\n \"title\": JSONField(field_type=str, required=True, default='some_title'),\n # ...\n }}\n\n def retrieve_items():\n return Model.objects.all()\n\n def create_item(title):\n item, cre = Model.objects.get_or_create(title=title)\n return item, cre\n\n @permissions(AllowAny)\n def get(self, request, request_data, *args, **kwargs):\n items = self.retrieve_items()\n response_data = {...here we should build some response structure...}***\n return response_data, HTTP_200_OK\n\n @permissions(IsAdmin)\n def post(self, request, request_data, *args, **kwargs):\n title = request_data.get('title', None)\n # no need to check 'if title', because it is allready validated by 'available_fields'\n # ... here we will do some view magic with the rest request_data\n item, cre = self.create_item(title)\n if not cre:\n raise ResponseOkMessage(message='Item allready exists', data={'title': title})\n response_data = {...here we should build some response structure...}***\n\n return response_data\n\n\u00a0\u00a0\u00a0\u00a0**app/urls.py:**\n\n.. code:: python\n\n from django.conf.urls import url\n from .views import TestView\n\n urlpatterns = [\n url(r'^test/', TestView.as_view()),\n ]\n\n--------------\n\n8. built-in fields\n''''''''''''''''''\n\n``from django_rester.fields import ...`` **class JSONField**\n\nclass attributes:\n\n\u00a0\u00a0\u00a0\u00a0**field\\_type** - data type (int, float, str, bool)\n\n\u00a0\u00a0\u00a0\u00a0**required** - field is required\n\n\u00a0\u00a0\u00a0\u00a0**default** - default value if not specified\n\n\u00a0\u00a0\u00a0\u00a0**blank** - may or may not be blank\n\n\u00a0\u00a0\u00a0\u00a0**model** - model for foreign relations\n\n\u00a0\u00a0\u00a0\u00a0**field** - field for foreign relations\n\nmethods (public), with normal usage, you won't need them in your code:\n\n\u00a0\u00a0\u00a0\u00a0**check\\_type** - validate type of JSONField value\n\n\u00a0\u00a0\u00a0\u00a0**validate** - validate field value with parameters \\*\\*\\*\n\n\\*- There is only one authentication backend available for now -\nRESTER\\_JWT\n\n\\*\\*- BaseApiView is on active development stage, other attributes and\nmethods could be added soon\n\n\\*\\*\\*- automatic response structure build - one of the nearest tasks\n\nInstallation notes\n~~~~~~~~~~~~~~~~~~\n\npycurl (Mac OS)\n'''''''''''''''\n\n.. code:: bash\n\n brew remove curl\n brew install curl-openssl\n export PYCURL_SSL_LIBRARY=openssl\n pip install --no-cache-dir --global-option=build_ext --global-option=\"-L/usr/local/opt/openssl/lib\" --global-option=\"-I/usr/local/opt/openssl/include\" --compile --install-option=\"--with-openssl\" pycurl\n\n.. |build| image:: https://travis-ci.org/lexycore/django-rester.svg?branch=master\n :target: https://travis-ci.org/lexycore/django-rester\n.. |codacy| image:: https://api.codacy.com/project/badge/Grade/dee291831b0b43158e2d2301726e2c00\n :target: https://www.codacy.com/app/lexycore/django-rester/dashboard\n.. |pypi| image:: https://img.shields.io/pypi/v/django-rester.svg\n :target: https://pypi.python.org/pypi/django-rester\n.. |license| image:: https://img.shields.io/pypi/l/django-rester.svg\n :target: https://github.com/lexycore/django-rester/blob/master/LICENSE\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/lexycore/django-rester.git", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://lexycore.github.io/django-rester", "keywords": "development,API", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "django-rester", "package_url": "https://pypi.org/project/django-rester/", "platform": "", "project_url": "https://pypi.org/project/django-rester/", "project_urls": { "Download": "https://github.com/lexycore/django-rester.git", "Homepage": "http://lexycore.github.io/django-rester" }, "release_url": "https://pypi.org/project/django-rester/0.0.6.36/", "requires_dist": [ "django", "pyjwt", "django-rediser" ], "requires_python": "", "summary": "Django REST API build helper", "version": "0.0.6.36" }, "last_serial": 4998769, "releases": { "0.0.2.12": [ { "comment_text": "", "digests": { "md5": "3b9666fb33c13d94b28b38d7c2c8d544", "sha256": "e4ad6a7661ec16e06110542128120ee573e5c6674623584e08ea8e72ab4c093b" }, "downloads": -1, "filename": "django_rester-0.0.2.12-py3-none-any.whl", "has_sig": false, "md5_digest": "3b9666fb33c13d94b28b38d7c2c8d544", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19514, "upload_time": "2017-11-27T11:42:36", "url": "https://files.pythonhosted.org/packages/e6/ac/8d2adae8123077b53ae4f5ea29ddc23a1550fd3afa63c83eccbf2883ba6a/django_rester-0.0.2.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cceac3576c79d14e1d643daa1044f6b0", "sha256": "d3a4b9df829b8055b86ad8ad9b1f3be194d2e88a2aa35dda01a884256fd15167" }, "downloads": -1, "filename": "django-rester-0.0.2.12.tar.gz", "has_sig": false, "md5_digest": "cceac3576c79d14e1d643daa1044f6b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13816, "upload_time": "2017-11-27T11:42:38", "url": "https://files.pythonhosted.org/packages/02/df/04364ec7bfa51f6b43ead2bddea5063ab0f349eae911b0bc71862084e55c/django-rester-0.0.2.12.tar.gz" } ], "0.0.2.14": [ { "comment_text": "", "digests": { "md5": "b9e19bd0933741ad34ef0508963f7a5a", "sha256": "db5464aa3fc78d965e4c8357d43914174cccc9bdf3200c46ea758f0a424a903e" }, "downloads": -1, "filename": "django_rester-0.0.2.14-py3-none-any.whl", "has_sig": false, "md5_digest": "b9e19bd0933741ad34ef0508963f7a5a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19515, "upload_time": "2017-12-23T21:38:35", "url": "https://files.pythonhosted.org/packages/9f/0d/e808a1377637d3caecbe96588ae6d86241219b02910e3a3e00ece7aa97fc/django_rester-0.0.2.14-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9ee4dbbb940a97ac916517bff70ef105", "sha256": "8f9d946d76432b59af34d2674c93e9e522017506e942f5b52017ff4b31152715" }, "downloads": -1, "filename": "django-rester-0.0.2.14.tar.gz", "has_sig": false, "md5_digest": "9ee4dbbb940a97ac916517bff70ef105", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13822, "upload_time": "2017-12-23T21:38:37", "url": "https://files.pythonhosted.org/packages/91/4e/bb3d816640cf83f290e547ed1d11be277f48ea0119c3dfa679aa313d69fd/django-rester-0.0.2.14.tar.gz" } ], "0.0.2.dev11": [ { "comment_text": "", "digests": { "md5": "217726064382ea57daad0662b34d1095", "sha256": "c5e5fe63d0a75cc821c7157f3d68f7c9c44cad955370237bd4be75581fdbb3d4" }, "downloads": -1, "filename": "django_rester-0.0.2.dev11-py3-none-any.whl", "has_sig": false, "md5_digest": "217726064382ea57daad0662b34d1095", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19543, "upload_time": "2017-11-27T11:40:12", "url": "https://files.pythonhosted.org/packages/08/54/a5b3b451d58035d4a891eb0d439762a0c8f8d0a417285bec125d706d6a94/django_rester-0.0.2.dev11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fec6e09a0511455d8f1c8d72330afa0b", "sha256": "2e7db76cd2c41412b736d423029e2d2d1f65b35c9c4e8e06b8309ec9334e4f23" }, "downloads": -1, "filename": "django-rester-0.0.2.dev11.tar.gz", "has_sig": false, "md5_digest": "fec6e09a0511455d8f1c8d72330afa0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13824, "upload_time": "2017-11-27T11:40:13", "url": "https://files.pythonhosted.org/packages/f8/71/4ec2ebec16292a6d0042cb0de6745bcc34dc0b291981f3828db4e3b9bb49/django-rester-0.0.2.dev11.tar.gz" } ], "0.0.2.dev13": [ { "comment_text": "", "digests": { "md5": "ea7990da23d76e4037155ddc6d092490", "sha256": "f4559e38047f79d5c13f2eb7395e9ce596cf75eeb7e99adc2f87c0c31696f2c7" }, "downloads": -1, "filename": "django_rester-0.0.2.dev13-py3-none-any.whl", "has_sig": false, "md5_digest": "ea7990da23d76e4037155ddc6d092490", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19546, "upload_time": "2017-12-23T21:37:32", "url": "https://files.pythonhosted.org/packages/b5/dd/7bcc697f84bfd28e84f7c14ef6045a576d8c9b1678f5abf668df23968ec0/django_rester-0.0.2.dev13-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1885b8561e46083988a8b7e996a2580d", "sha256": "f41eafa1dc852e184be04b3c64d443644df96bbb66426acab491076d2f71d677" }, "downloads": -1, "filename": "django-rester-0.0.2.dev13.tar.gz", "has_sig": false, "md5_digest": "1885b8561e46083988a8b7e996a2580d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13830, "upload_time": "2017-12-23T21:37:34", "url": "https://files.pythonhosted.org/packages/b4/2e/8521c780fc2c59b3632205225b5816112c2f408045e378529d7b539d728b/django-rester-0.0.2.dev13.tar.gz" } ], "0.0.4.16": [ { "comment_text": "", "digests": { "md5": "2443bfee15fc06c90f2057cbb4d37275", "sha256": "d725e0dd8c99857900760649ce680237c0e0d05083b6e8c4059b3de1ea1a098b" }, "downloads": -1, "filename": "django_rester-0.0.4.16-py3-none-any.whl", "has_sig": false, "md5_digest": "2443bfee15fc06c90f2057cbb4d37275", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19713, "upload_time": "2018-01-06T23:38:50", "url": "https://files.pythonhosted.org/packages/44/ab/029544c2ac2bc6e8a3710611c17e665aa3830e7e15cac725b1e629fa7d33/django_rester-0.0.4.16-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "601e88f878afc17573c73c1a3db84535", "sha256": "3e0bed75cb190d9af7e86c92cd342ea7a21f3c90c84c8c5bea0e188c546595c1" }, "downloads": -1, "filename": "django-rester-0.0.4.16.tar.gz", "has_sig": false, "md5_digest": "601e88f878afc17573c73c1a3db84535", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13996, "upload_time": "2018-01-06T23:38:52", "url": "https://files.pythonhosted.org/packages/f9/2c/bbd21458fc2172a97e82f17d6e78eb8e57aa7bf77d92287ed33b55d1ab4b/django-rester-0.0.4.16.tar.gz" } ], "0.0.4.19": [ { "comment_text": "", "digests": { "md5": "45b5e0aef7743b0d487fdc430602e779", "sha256": "2db96fe837f4c805ed3e590c0561d1fc5f1a815c270cc70f9730a0f13f82b4eb" }, "downloads": -1, "filename": "django_rester-0.0.4.19-py3-none-any.whl", "has_sig": false, "md5_digest": "45b5e0aef7743b0d487fdc430602e779", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21231, "upload_time": "2018-01-17T21:51:18", "url": "https://files.pythonhosted.org/packages/92/57/e15d2b1506206d770eb3b69172e6cbdbc070c453e4640caa808021533554/django_rester-0.0.4.19-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5d2388f8fc51fa1864d0d9c682ab98cb", "sha256": "c017583953fa24172b36cec24599a2a49cc116f4cc832eaadf834b5d7e292674" }, "downloads": -1, "filename": "django-rester-0.0.4.19.tar.gz", "has_sig": false, "md5_digest": "5d2388f8fc51fa1864d0d9c682ab98cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15275, "upload_time": "2018-01-17T21:51:19", "url": "https://files.pythonhosted.org/packages/d2/55/f68c1a0abadf2be3808a0740df61f1192ef0bb2eafea5ec82861689c51fa/django-rester-0.0.4.19.tar.gz" } ], "0.0.4.dev15": [ { "comment_text": "", "digests": { "md5": "9e327d4f3753cf88e5f234566bb3f673", "sha256": "ddbc0c97a65f87266ced6fc4745f5ac64f0f8dc7e4bd99ce73640b46210f65e1" }, "downloads": -1, "filename": "django_rester-0.0.4.dev15-py3-none-any.whl", "has_sig": false, "md5_digest": "9e327d4f3753cf88e5f234566bb3f673", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19742, "upload_time": "2018-01-06T23:37:59", "url": "https://files.pythonhosted.org/packages/1a/7a/013460bac0b0fd47bd3123493b74b34bb42a862c3b51e453a56f7850f491/django_rester-0.0.4.dev15-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "91baea39d39acc0d421ebc4203cfa76f", "sha256": "89a724a7ec1c1e373b78c629ab64141fc8bf8f3d2bc64b16d0489aa87ffdf163" }, "downloads": -1, "filename": "django-rester-0.0.4.dev15.tar.gz", "has_sig": false, "md5_digest": "91baea39d39acc0d421ebc4203cfa76f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13989, "upload_time": "2018-01-06T23:38:00", "url": "https://files.pythonhosted.org/packages/99/75/359e9a85884983c1682115ca9d984aae404c390572e7dc36786a84de80db/django-rester-0.0.4.dev15.tar.gz" } ], "0.0.4.dev17": [ { "comment_text": "", "digests": { "md5": "6a05d2dad3f23182909caab4ea3bd9c3", "sha256": "8d696990a148dd2d7b6d104397e725754a7af801fd3c019f032a771be0eff3f7" }, "downloads": -1, "filename": "django_rester-0.0.4.dev17-py3-none-any.whl", "has_sig": false, "md5_digest": "6a05d2dad3f23182909caab4ea3bd9c3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19829, "upload_time": "2018-01-08T19:27:21", "url": "https://files.pythonhosted.org/packages/cb/a9/31d1b54916fd3d29108af7ed3dc65f4fead9fe4a5d9d0eb15aad4615d113/django_rester-0.0.4.dev17-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2e8fbdf90b7d453bceecdc207721dc7c", "sha256": "a78cee405130c65cd56cda7a7f631064d7217dfe0fee0843a4843ba3a6ab1a62" }, "downloads": -1, "filename": "django-rester-0.0.4.dev17.tar.gz", "has_sig": false, "md5_digest": "2e8fbdf90b7d453bceecdc207721dc7c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14086, "upload_time": "2018-01-08T19:27:25", "url": "https://files.pythonhosted.org/packages/7e/5d/ff5f2dddc749571993c453f27c10efd799aae486e680c13181861d4993ff/django-rester-0.0.4.dev17.tar.gz" } ], "0.0.4.dev18": [ { "comment_text": "", "digests": { "md5": "35ed3d3d4205003c4f3639e535001770", "sha256": "b182741d1133704a755ab2ae6c29bffb9e0abf53b68da288ae7a9878aec0beba" }, "downloads": -1, "filename": "django_rester-0.0.4.dev18-py3-none-any.whl", "has_sig": false, "md5_digest": "35ed3d3d4205003c4f3639e535001770", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21262, "upload_time": "2018-01-17T21:50:30", "url": "https://files.pythonhosted.org/packages/7a/31/905c2dffc11c3e55bc52433398d07dc9dc01bdc0c47dd054ad25579c4ea4/django_rester-0.0.4.dev18-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a7d8e98219cf7e58fa89961ae1b6097", "sha256": "4e537a692ad329078332bc9da226cb82c6b6fb2bc6b8d09dc712bdfa76941d38" }, "downloads": -1, "filename": "django-rester-0.0.4.dev18.tar.gz", "has_sig": false, "md5_digest": "7a7d8e98219cf7e58fa89961ae1b6097", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15278, "upload_time": "2018-01-17T21:50:32", "url": "https://files.pythonhosted.org/packages/7f/92/ddfecd3528898e30a27ee3798421867385430c6555abfb757208331fb2c7/django-rester-0.0.4.dev18.tar.gz" } ], "0.0.4.dev20": [ { "comment_text": "", "digests": { "md5": "4656fe9da6cf2d8930ee526a006789ab", "sha256": "f7ea04f1a0103e25697ef34df959351bad8da0e093a173b1361553840fdd67dd" }, "downloads": -1, "filename": "django_rester-0.0.4.dev20-py3-none-any.whl", "has_sig": false, "md5_digest": "4656fe9da6cf2d8930ee526a006789ab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21336, "upload_time": "2018-03-07T19:24:01", "url": "https://files.pythonhosted.org/packages/c6/47/43f21caf4c7ec5273e75aa861311aa6b95fe8af0e2838f4c87461d2a656f/django_rester-0.0.4.dev20-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5bcf8ce0991f4d545d58234f7ee38301", "sha256": "a5765120cc1af0b24b589d52311aa5e00486e8f0b2517a5375447418d69ebd2c" }, "downloads": -1, "filename": "django-rester-0.0.4.dev20.tar.gz", "has_sig": false, "md5_digest": "5bcf8ce0991f4d545d58234f7ee38301", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15311, "upload_time": "2018-03-07T19:24:03", "url": "https://files.pythonhosted.org/packages/76/81/efe6035441298fb35000dbd8301635829fd88b26ae7ca9ce807c6b9157bd/django-rester-0.0.4.dev20.tar.gz" } ], "0.0.4.dev22": [ { "comment_text": "", "digests": { "md5": "f37e7aa7eed1c360ef58a142216daeb8", "sha256": "af87dbfad9d3bf26e0e66dbcdb16670f316096894e416aa59739b786614effb1" }, "downloads": -1, "filename": "django_rester-0.0.4.dev22-py3-none-any.whl", "has_sig": false, "md5_digest": "f37e7aa7eed1c360ef58a142216daeb8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16711, "upload_time": "2018-05-02T13:49:43", "url": "https://files.pythonhosted.org/packages/84/6e/4340bd759a55e31f8d2e6aa26d8505139ea0cfe0754af872ec46a990a642/django_rester-0.0.4.dev22-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bdeaddf17e3e7e507d1a2ab2fbb3e3be", "sha256": "18b3451dd8b515ca598c167b3f685adc4438017134f0722664bf9673569ae077" }, "downloads": -1, "filename": "django-rester-0.0.4.dev22.tar.gz", "has_sig": false, "md5_digest": "bdeaddf17e3e7e507d1a2ab2fbb3e3be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15446, "upload_time": "2018-05-02T13:49:45", "url": "https://files.pythonhosted.org/packages/9b/66/c8fa0ac6d4a890685acfb1e91a72b5336bf0e14a2ce623d6f11a5303ad84/django-rester-0.0.4.dev22.tar.gz" } ], "0.0.4.dev24": [ { "comment_text": "", "digests": { "md5": "f6b8219f0e9e24ebf1a2238f7456c8ec", "sha256": "40054573be99a5a8b652bd27e076ecf82e24d763f2e667e99cfef4e717a6e5e8" }, "downloads": -1, "filename": "django_rester-0.0.4.dev24-py3-none-any.whl", "has_sig": false, "md5_digest": "f6b8219f0e9e24ebf1a2238f7456c8ec", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16737, "upload_time": "2018-05-03T10:40:46", "url": "https://files.pythonhosted.org/packages/cb/ae/908a1cfc5272169d3a5dcef097ea976c9de7ad360206b412d13d018ad1f5/django_rester-0.0.4.dev24-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "468f5dd5c801695dfdbc6b5d709ac7d4", "sha256": "43df2f9c39965092df49ea8ff2d37c258daa1c5ddf06c612251e64762c7ec5ac" }, "downloads": -1, "filename": "django-rester-0.0.4.dev24.tar.gz", "has_sig": false, "md5_digest": "468f5dd5c801695dfdbc6b5d709ac7d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15508, "upload_time": "2018-05-03T10:40:48", "url": "https://files.pythonhosted.org/packages/66/4d/c20b9fa17e704b7740e0369b974d7f44875b7bf4238beb566f30c2fc7fec/django-rester-0.0.4.dev24.tar.gz" } ], "0.0.4.dev25": [ { "comment_text": "", "digests": { "md5": "6456e6f2f5d8453a1a0b78aabd3fd6d3", "sha256": "8425199dc67392dc4accd3c678884ad5415fae8c30741fdc349ef0c5dc01c4cc" }, "downloads": -1, "filename": "django_rester-0.0.4.dev25-py3-none-any.whl", "has_sig": false, "md5_digest": "6456e6f2f5d8453a1a0b78aabd3fd6d3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16738, "upload_time": "2018-05-03T10:53:52", "url": "https://files.pythonhosted.org/packages/20/bc/40e3573401147471d5bc356e9e894b7f7c84030859adc90abd6d85aad9fa/django_rester-0.0.4.dev25-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1c39db70f82e7eed5d2c0096ec001d97", "sha256": "113dc15b0d4df494f4457164e42ea19eab4c4d6b91967aaf2392dd727629798c" }, "downloads": -1, "filename": "django-rester-0.0.4.dev25.tar.gz", "has_sig": false, "md5_digest": "1c39db70f82e7eed5d2c0096ec001d97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15510, "upload_time": "2018-05-03T10:53:53", "url": "https://files.pythonhosted.org/packages/39/b8/2ecf435b614b94141e73e80c710ceb00fe310f7ccf398c7fb2101512731d/django-rester-0.0.4.dev25.tar.gz" } ], "0.0.4.dev26": [ { "comment_text": "", "digests": { "md5": "d491dc90905d59a1b01fb39943efdb15", "sha256": "8a02b72b3ece8f5e19821acd6360312db7306c15e82472106c92c0879be4b9ba" }, "downloads": -1, "filename": "django_rester-0.0.4.dev26-py3-none-any.whl", "has_sig": false, "md5_digest": "d491dc90905d59a1b01fb39943efdb15", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17046, "upload_time": "2018-05-21T10:48:12", "url": "https://files.pythonhosted.org/packages/64/f4/297e194790693a166fa150b1df7453c1a71f45e2fa15361c95f495c3d416/django_rester-0.0.4.dev26-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "976652f32f19f35c83dbfb25f2d1a71b", "sha256": "90b82ac284bdb57740b17b7122eb897f8837b41f680ea9f5c168cfedcdafb1ad" }, "downloads": -1, "filename": "django-rester-0.0.4.dev26.tar.gz", "has_sig": false, "md5_digest": "976652f32f19f35c83dbfb25f2d1a71b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15675, "upload_time": "2018-05-21T10:48:14", "url": "https://files.pythonhosted.org/packages/2c/0f/4cebe35aa2d325c32759dffd081e458b05f49e14973426e158be421322bb/django-rester-0.0.4.dev26.tar.gz" } ], "0.0.4.dev27": [ { "comment_text": "", "digests": { "md5": "d3dd3dccc884ca357021fa6e4676de57", "sha256": "849abcc0008d6a6700de680639ab9ab385b90cb9fa1bf0f978864c7a8348eaaf" }, "downloads": -1, "filename": "django_rester-0.0.4.dev27-py3-none-any.whl", "has_sig": false, "md5_digest": "d3dd3dccc884ca357021fa6e4676de57", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17321, "upload_time": "2018-09-09T11:31:10", "url": "https://files.pythonhosted.org/packages/47/18/a4188618362cefeda581356f20fc40023e45b935620b5c7529ccefebaeaf/django_rester-0.0.4.dev27-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb054214b36ce0200250aa1d716941b1", "sha256": "ddbc7ba9e1f0211edcf47d9d142275a49b3a1e90fc0ed98b6541462e07fffe68" }, "downloads": -1, "filename": "django-rester-0.0.4.dev27.tar.gz", "has_sig": false, "md5_digest": "fb054214b36ce0200250aa1d716941b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15923, "upload_time": "2018-09-09T11:31:11", "url": "https://files.pythonhosted.org/packages/06/5b/bffb2c91b0dec0a52d4b5054fa07002f4fdb66802745622760b6f7837ac9/django-rester-0.0.4.dev27.tar.gz" } ], "0.0.4.dev28": [ { "comment_text": "", "digests": { "md5": "849ff4e14751c59c36c5e1d0155aec12", "sha256": "fb5393089a5522a0c6fa04b3a9180b26de259b91ec7a7c914a0622f4e795a175" }, "downloads": -1, "filename": "django_rester-0.0.4.dev28-py3-none-any.whl", "has_sig": false, "md5_digest": "849ff4e14751c59c36c5e1d0155aec12", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17338, "upload_time": "2018-09-22T16:44:31", "url": "https://files.pythonhosted.org/packages/bb/70/3cb1594d0b452c2d8c7a3f58cd84e7383daf5e6e641a0da803d290a34e79/django_rester-0.0.4.dev28-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dbc55b3030ea7398ec1c47471fc86d80", "sha256": "72d114ed02d8f50c2dcc5bd9eb417d66407c57aaf3f135be65b25c13f7505d15" }, "downloads": -1, "filename": "django-rester-0.0.4.dev28.tar.gz", "has_sig": false, "md5_digest": "dbc55b3030ea7398ec1c47471fc86d80", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15941, "upload_time": "2018-09-22T16:44:33", "url": "https://files.pythonhosted.org/packages/a1/74/181e613970bf493c81bcbf8a6c7451c088eabc99143e512cc5cb475c2680/django-rester-0.0.4.dev28.tar.gz" } ], "0.0.5.dev29": [ { "comment_text": "", "digests": { "md5": "aabeafc6b28ce5a12c24db6369147ad7", "sha256": "e6a4dab9f66be579b0684cdf3a57e201ec8218fb2cff145dd517cfd79c374c21" }, "downloads": -1, "filename": "django_rester-0.0.5.dev29-py3-none-any.whl", "has_sig": false, "md5_digest": "aabeafc6b28ce5a12c24db6369147ad7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17339, "upload_time": "2018-09-22T17:00:16", "url": "https://files.pythonhosted.org/packages/e8/c2/b033b70cb98f19af4295b6d2e2f097ffb564a56f21a745ddc560d8c4705f/django_rester-0.0.5.dev29-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a28df435844337e79d87eeaa26468a95", "sha256": "21b4412370c4252fb126ac19e28c464c787e20d6baa80b2cfbb210364dcb3cd5" }, "downloads": -1, "filename": "django-rester-0.0.5.dev29.tar.gz", "has_sig": false, "md5_digest": "a28df435844337e79d87eeaa26468a95", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15935, "upload_time": "2018-09-22T17:00:17", "url": "https://files.pythonhosted.org/packages/bf/11/f1577b83e06a6e7737a91169c981ae3afc8a056fdcb80b84cde99590ab56/django-rester-0.0.5.dev29.tar.gz" } ], "0.0.6.35": [ { "comment_text": "", "digests": { "md5": "f4edfb8ff09bea1465fdaa51331165ce", "sha256": "5bebaca89bf7f16c7e6638a0c454730f19a1a67638411b25ed3e7fbc6859027d" }, "downloads": -1, "filename": "django_rester-0.0.6.35-py3-none-any.whl", "has_sig": false, "md5_digest": "f4edfb8ff09bea1465fdaa51331165ce", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21460, "upload_time": "2019-02-20T13:38:55", "url": "https://files.pythonhosted.org/packages/7e/d1/5a5cb5084e8e4ad770816aa7b25190bbeac7c2b644253eca9e449040f213/django_rester-0.0.6.35-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "822661944a5c68b061048243515c864f", "sha256": "e896ef34c9dc0fca2a119b9ffa304b611fc72286c405e981016f43648465c2b4" }, "downloads": -1, "filename": "django-rester-0.0.6.35.tar.gz", "has_sig": false, "md5_digest": "822661944a5c68b061048243515c864f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17989, "upload_time": "2019-02-20T13:38:56", "url": "https://files.pythonhosted.org/packages/7a/92/0f73f810751e38d91c395f2f1594525fc5a17f490a16e22f0fb3514f665b/django-rester-0.0.6.35.tar.gz" } ], "0.0.6.36": [ { "comment_text": "", "digests": { "md5": "30750875f7bb31d6890fc0c9c51a43e1", "sha256": "e47223bdd6bb83378c1f940b838fa984da5144cffa7bd51452405728c8ca28fe" }, "downloads": -1, "filename": "django_rester-0.0.6.36-py3-none-any.whl", "has_sig": false, "md5_digest": "30750875f7bb31d6890fc0c9c51a43e1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21470, "upload_time": "2019-03-28T17:01:36", "url": "https://files.pythonhosted.org/packages/73/cc/8c23608a5bf89faf726fedc300227b669c455afd63feaadc2caae5d34295/django_rester-0.0.6.36-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0e983aa3c3be80c4b225c018bfd533cf", "sha256": "ad1cf76c28226a73eafce2b370a470ab3c87de8daaac6f2d1df2b6c1f297f49a" }, "downloads": -1, "filename": "django-rester-0.0.6.36.tar.gz", "has_sig": false, "md5_digest": "0e983aa3c3be80c4b225c018bfd533cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18014, "upload_time": "2019-03-28T17:01:38", "url": "https://files.pythonhosted.org/packages/21/01/615efc26ce80e09e95a0764e73a904dc651bf979cfad56beca0aa3a0e780/django-rester-0.0.6.36.tar.gz" } ], "0.0.6.dev30": [ { "comment_text": "", "digests": { "md5": "b09d1c49770e0530db353b3b6e9337d2", "sha256": "09d4ede2eba4e42872dc5f95e1aae8e10fb8d22f9a1d150634f556d29d4ad040" }, "downloads": -1, "filename": "django_rester-0.0.6.dev30-py3-none-any.whl", "has_sig": false, "md5_digest": "b09d1c49770e0530db353b3b6e9337d2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21140, "upload_time": "2019-02-18T23:45:11", "url": "https://files.pythonhosted.org/packages/5f/2b/523ef57dd93c95c7b6a407cd2e3c66ec18444c1d8dc84c648a9add9e3f68/django_rester-0.0.6.dev30-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8c8c87672c7044016c2adcee39d93437", "sha256": "4434b3c91801fc4efb9d7d5857d6b7287c8af5a88c7bbe808b05e1719e0ce3a0" }, "downloads": -1, "filename": "django-rester-0.0.6.dev30.tar.gz", "has_sig": false, "md5_digest": "8c8c87672c7044016c2adcee39d93437", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17582, "upload_time": "2019-02-18T23:45:13", "url": "https://files.pythonhosted.org/packages/f2/78/1078b03c5a768aa8c8d6b9c21a18064fa8fd4c5c3f669e493e20e408f8a0/django-rester-0.0.6.dev30.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "30750875f7bb31d6890fc0c9c51a43e1", "sha256": "e47223bdd6bb83378c1f940b838fa984da5144cffa7bd51452405728c8ca28fe" }, "downloads": -1, "filename": "django_rester-0.0.6.36-py3-none-any.whl", "has_sig": false, "md5_digest": "30750875f7bb31d6890fc0c9c51a43e1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21470, "upload_time": "2019-03-28T17:01:36", "url": "https://files.pythonhosted.org/packages/73/cc/8c23608a5bf89faf726fedc300227b669c455afd63feaadc2caae5d34295/django_rester-0.0.6.36-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0e983aa3c3be80c4b225c018bfd533cf", "sha256": "ad1cf76c28226a73eafce2b370a470ab3c87de8daaac6f2d1df2b6c1f297f49a" }, "downloads": -1, "filename": "django-rester-0.0.6.36.tar.gz", "has_sig": false, "md5_digest": "0e983aa3c3be80c4b225c018bfd533cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18014, "upload_time": "2019-03-28T17:01:38", "url": "https://files.pythonhosted.org/packages/21/01/615efc26ce80e09e95a0764e73a904dc651bf979cfad56beca0aa3a0e780/django-rester-0.0.6.36.tar.gz" } ] }