{ "info": { "author": "Yanwar Solahudin", "author_email": "me@yanwarsolahudin.com", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 2.0", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content" ], "description": "# All Basic\n\n\nAll Basic is a simple Django app to to add some basic functionality to use the DRF API. It consists of separating business logic and the application of nested data that comes from user requests and validations that support nested data.\n\n## Quick start\n\nAdd `allbasic` to your `INSTALLED_APPS` setting like this:\n\n```\nINSTALLED_APPS = [\n ...\n 'allbasic',\n]\n```\n\nCreate an application (what name is up) and create several files:\n\n```\nmyapp/\n domains.py\n presentations.py\n validations.py\n```\n\nIn your `validations.py`:\n\n```\nfrom allbasic.validations import BaseValidation\n\nclass ValidationUserDetailUpdate(BaseValidation):\n def schema(self):\n return {\n 'last_name': {\n 'type': 'string',\n 'required': True,\n 'empty': False\n },\n 'first_name': {\n 'type': 'string',\n 'required': True,\n 'empty': False\n }\n }\n```\n\nIn your `domains.py`:\n\n from allbasic.domains import BaseDomain\n\n class DomainUserUpdate(BaseDomain):\n @transaction.atomic()\n def apply(self):\n data = self.context.get('data')\n user = self.context.get('user')\n\n user.first_name = data.get('first_name', user.first_name)\n user.last_name = data.get('last_name', user.last_name)\n\n return user.save()\n\nIn your `presentations.py`:\n\n```\nfrom allbasic.presentations import BasePresentation\n\nclass UserDetailPresentation(BasePresentation):\n def present(self):\n user = self.context.get('user')\n\n return {\n 'id': user.pk,\n 'username': user.username,\n 'email': user.email,\n 'last_name': user.last_name,\n 'first_name': user.first_name\n }\n```\n\nIn your `views.py`:\n\n```\nfrom allbasic.domains import ContextDomain\nfrom allbasic.presentations import ContextPresentation\nfrom allbasic.validations import ContextValidation\n\nclass UserDetailView(APIView):\n authentication_classes = (\n JSONWebTokenAuthentication,\n SessionAuthentication,\n BasicAuthentication\n )\n permission_classes = (IsAuthenticated,)\n\n def put(self, request):\n validation = ContextValidation(ValidationUserDetailUpdate(request.data))\n\n if validation.validate():\n ContextDomain(DomainUserUpdate(context={'data': validation.data, 'user': request.user})).do_apply()\n presentation = ContextPresentation(UserDetailPresentation(context={'user': request.user}))\n return Response(presentation.do_present())\n\n return Response(validation.errors, status=status.HTTP_400_BAD_REQUEST)\n```", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://www.adala.id/", "keywords": "", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "django-allbasic", "package_url": "https://pypi.org/project/django-allbasic/", "platform": "", "project_url": "https://pypi.org/project/django-allbasic/", "project_urls": { "Homepage": "https://www.adala.id/" }, "release_url": "https://pypi.org/project/django-allbasic/0.1/", "requires_dist": null, "requires_python": "", "summary": "All Basic is a simple Django app to to add some basic functionality to use the DRF API.", "version": "0.1" }, "last_serial": 5269485, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "8d0b7f723cbda448420ab3dc8a672b82", "sha256": "677fe34db3bf3b8808953ddf1759e7ade049807bd0c4b7172024dfede1a418f1" }, "downloads": -1, "filename": "django-allbasic-0.1.tar.gz", "has_sig": false, "md5_digest": "8d0b7f723cbda448420ab3dc8a672b82", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4260, "upload_time": "2019-05-14T21:38:17", "url": "https://files.pythonhosted.org/packages/17/d5/cb4e7cc2bebe2ad515c16b6a4bcf3ecd09f5964e1a7a1d20bb78c0d8d953/django-allbasic-0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8d0b7f723cbda448420ab3dc8a672b82", "sha256": "677fe34db3bf3b8808953ddf1759e7ade049807bd0c4b7172024dfede1a418f1" }, "downloads": -1, "filename": "django-allbasic-0.1.tar.gz", "has_sig": false, "md5_digest": "8d0b7f723cbda448420ab3dc8a672b82", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4260, "upload_time": "2019-05-14T21:38:17", "url": "https://files.pythonhosted.org/packages/17/d5/cb4e7cc2bebe2ad515c16b6a4bcf3ecd09f5964e1a7a1d20bb78c0d8d953/django-allbasic-0.1.tar.gz" } ] }