{
"info": {
"author": "101Loop",
"author_email": "pypidev@civilmachines.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Environment :: Web Environment",
"Framework :: Django",
"Framework :: Django :: 1.11",
"Framework :: Django :: 2.0",
"Framework :: Django :: 2.1",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Topic :: Internet :: WWW/HTTP"
],
"description": "# Django REST Framework - User\n\n**User APP for Django REST Framework with API Views.**
\n\n`DRF User` is a Django app that overrides default user app to provide additional attributes and functionalities. The\ncurrent stable version includes:\n- [x] Mobile Number\n- [x] Single field for full name\n- [x] REST API to register\n- [x] REST API to login\n- [x] MultiModelBackend: User can login using either of mobile, email or username\n- [x] REST API to login with OTP (Same API endpoint as for OTP Verification; Set `is_login: true` while sending JSON\nrequest)\n- [x] OTP Verification for mobile and email\n- [x] API to register / login with OTP (no pre-registration required)\n- [x] Mail sending feature upon successful registration\n- [x] SMS sending feature upon successful registration\n- [x] Change Password\n- [x] Update Profile\n- [x] settings.py based configuration\n- [ ] Signal based mails: Pending in OTP section\n- [ ] Mail based activation (optional alternative for OTP based activation)\n\n#### Contributors\n\n- **[Civil Machines Technologies Private Limited](https://github.com/civilmahines)**: For providing me platform and \nfunds for research work. This project is hosted currently with `CMT` only. \n- [Himanshu Shankar](https://github.com/iamhssingh): The app was initiated and worked upon majorly by Himanshu. This app\nis currently in use in various other django projects that are developed by him.\n- [Aditya Gupta](https://github.com/ag93999): Aditya has updated view in the app to include additional features such as\nChange Password. He is also an active contributor in this repository and is working to replace `ValidateAndPerformView`\nwith appropriate `Django REST Framework GenericAPI Views`.\n\n** We're looking for someone who can contribute on docs part **\n\n#### Installation\n\n- Download and Install via `pip`\n```\npip install drf_user\n```\nor\n\nDownload and Install via `easy_install`\n```\neasy_install drf_user\n```\n- Add `drf_user` in `INSTALLED_APPS`
\n```\nINSTALLED_APPS = [\n ...\n 'drf_user',\n ...\n]\n```\n- Also add other dependencies in `INSTALLED_APPS`
\n```\nINSTALLED_APPS = [\n ...\n 'drfaddons',\n 'rest_framework',\n 'django_filters',\n ...\n]\n```\n- Include urls of `drf_user` in `urls.py`\n```\nurlpatterns = [\n ...\n path('api/user/', include('drf_user.urls')),\n ...\n]\n\n# or\n\nurlpatterns = [\n ...\n url(r'^api/user/', include('drf_user.urls')),\n ...\n]\n```\n- Include AUTH_USER_MODEL in settings.py\n```\n...\nAUTH_USER_MODEL = 'drf_user.User'\n...\n``` \n- Finally, run `migrate` command\n```\npython manage.py migrate drf_user\n```\n\n### Additional settings\nThese additional settings are **required** to use `drf_user` at its full extent.\nThese settings should be done in `settings.py`\n\n- Set `AUTHENTICATION_BACKEND`:\n```\nAUTHENTICATION_BACKENDS = [\n 'drf_user.auth.MultiFieldModelBackend',\n]\n```\n\n- Set `JWT_PAYLOAD_HANDLER` in `JWT_AUTH` configurations\n```\nJWT_AUTH = {\n ...\n 'JWT_PAYLOAD_HANDLER': 'drf_user.auth.jwt_payload_handler',\n ...\n}\n```\n\n- Set `DEFAULT_AUTHENTICATION_CLASSES` in `REST_FRAMEWORK` configuration\n```\nREST_FRAMEWORK = {\n ...\n 'DEFAULT_AUTHENTICATION_CLASSES': (\n 'drfaddons.auth.JSONWebTokenAuthentication',\n ...\n ),\n}\n```\n\n#### Manual Settings\n\nUser can define manual setting in `settings.py` file in `USER_SETTINGS` variable . Default options are provided below\n\n```\nuser_settings = {\n 'DEFAULT_ACTIVE_STATE': False,\n 'OTP': {\n 'LENGTH': 7,\n 'ALLOWED_CHARS': '1234567890',\n 'VALIDATION_ATTEMPTS': 3,\n 'SUBJECT': 'OTP for Verification',\n 'COOLING_PERIOD': 3\n },\n 'MOBILE_VALIDATION': True,\n 'EMAIL_VALIDATION': True,\n 'REGISTRATION': {\n 'SEND_MAIL': False,\n 'SEND_MESSAGE': False,\n 'MAIL_SUBJECT': 'Welcome to DRF-USER',\n 'SMS_BODY': 'Your account has been created',\n 'TEXT_MAIL_BODY': 'Your account has been created.',\n 'HTML_MAIL_BODY': 'Your account has been created.'\n }\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/101loop/drf-user",
"keywords": "",
"license": "GPLv3",
"maintainer": "",
"maintainer_email": "",
"name": "drf-user",
"package_url": "https://pypi.org/project/drf-user/",
"platform": "",
"project_url": "https://pypi.org/project/drf-user/",
"project_urls": {
"Homepage": "https://github.com/101loop/drf-user"
},
"release_url": "https://pypi.org/project/drf-user/0.0.8/",
"requires_dist": [
"Django (>=1.11)",
"django-filter (==2.0.0)",
"djangorestframework (>=3.8.0)",
"djangorestframework-jwt (==1.11.0)",
"drfaddons (>=0.1.0)"
],
"requires_python": ">=3.0",
"summary": "User APP for Django REST Framework with API Views",
"version": "0.0.8"
},
"last_serial": 4966612,
"releases": {
"0.0.1": [
{
"comment_text": "",
"digests": {
"md5": "fdde2a56241f468e62af16c210e9cb37",
"sha256": "acf0dd640be1f0438b142d21fc9b3ea0fdab7f4b268d4184451750ec3f094de5"
},
"downloads": -1,
"filename": "drf_user-0.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "fdde2a56241f468e62af16c210e9cb37",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"size": 13741,
"upload_time": "2018-07-16T06:40:22",
"url": "https://files.pythonhosted.org/packages/17/23/f929354afb81ed7291a1714f3fc38b3f455cc1bb38a6c70206ad3c251b4d/drf_user-0.0.1-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "cfff0d2463b318ecc261be859e93c22e",
"sha256": "3f0510c84c4dba023960f0bc2224d8c14182babad98e0c56dee7985376a1d592"
},
"downloads": -1,
"filename": "drf_user-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "cfff0d2463b318ecc261be859e93c22e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
"size": 10871,
"upload_time": "2018-07-16T06:40:23",
"url": "https://files.pythonhosted.org/packages/34/42/b5b8d0bb1cc4f488e5fc01bac8cbf299e564a0fc70b32f8aa9ed98bdc917/drf_user-0.0.1.tar.gz"
}
],
"0.0.2": [
{
"comment_text": "",
"digests": {
"md5": "66012bb6056cdbf2601880ef462f2813",
"sha256": "3e854ab0898fe9c19d58a436b1fe5bd3f65ca68e3693a99b122511cb082f96e5"
},
"downloads": -1,
"filename": "drf_user-0.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "66012bb6056cdbf2601880ef462f2813",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.0",
"size": 32308,
"upload_time": "2018-11-23T07:08:20",
"url": "https://files.pythonhosted.org/packages/b1/ee/8e0517179fe42b0cf48b3fe380861a60445c3c1928e16ce0bd4a789e57e4/drf_user-0.0.2-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "40c7aea79fb0355edbe3ffea126b6825",
"sha256": "55d86016a54cabe89613d1408acf4ff1e7c6120b05bef4674b33d5c348d6b20d"
},
"downloads": -1,
"filename": "drf_user-0.0.2.tar.gz",
"has_sig": false,
"md5_digest": "40c7aea79fb0355edbe3ffea126b6825",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.0",
"size": 13974,
"upload_time": "2018-11-23T07:08:22",
"url": "https://files.pythonhosted.org/packages/60/29/14a3b12c0c14c9f0ac108743c4d5e11ef5fa87dbfb0f41d31155d10b2eb2/drf_user-0.0.2.tar.gz"
}
],
"0.0.3": [
{
"comment_text": "",
"digests": {
"md5": "0c69be9302442b799808e5744d7af321",
"sha256": "63bb99952c2015bc628b48827e9a959510342c0412c331b344bab6fed2295937"
},
"downloads": -1,
"filename": "drf_user-0.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0c69be9302442b799808e5744d7af321",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.0",
"size": 32350,
"upload_time": "2018-12-12T10:57:36",
"url": "https://files.pythonhosted.org/packages/76/45/ace7a8896c057902f3e362813d020bc2130913d65a69b1cd9801abb308a2/drf_user-0.0.3-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "6a7f0832ebf8e4535de16c04613b6571",
"sha256": "0daee663454802239461cce9837e6f13b0fe8234b821cac0ff7f5d1718381b68"
},
"downloads": -1,
"filename": "drf_user-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "6a7f0832ebf8e4535de16c04613b6571",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.0",
"size": 14063,
"upload_time": "2018-12-12T10:57:47",
"url": "https://files.pythonhosted.org/packages/21/0b/cecb1780fa93185f7a44f0473d4dfe6d309f94283407e5526cd03551aa11/drf_user-0.0.3.tar.gz"
}
],
"0.0.4": [
{
"comment_text": "",
"digests": {
"md5": "961918e602e082694b4682ebc56a46e6",
"sha256": "52f72bd7fe046ddffa6485525314ad8298ba600cd0ae0044bab4ef26cba09bdb"
},
"downloads": -1,
"filename": "drf_user-0.0.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "961918e602e082694b4682ebc56a46e6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.0",
"size": 33877,
"upload_time": "2018-12-20T14:01:15",
"url": "https://files.pythonhosted.org/packages/61/14/29bf609b9370c887bed92e147f8190ad66f5791fdbe1f6cd16846fffd7e6/drf_user-0.0.4-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "7078dfc89926b600f5c04d16df3deef6",
"sha256": "006422ecca20f0376bbd89f121b3a5361c0a45549b07cc919fbcdb22c10b8b6b"
},
"downloads": -1,
"filename": "drf_user-0.0.4.tar.gz",
"has_sig": false,
"md5_digest": "7078dfc89926b600f5c04d16df3deef6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.0",
"size": 15135,
"upload_time": "2018-12-20T14:01:16",
"url": "https://files.pythonhosted.org/packages/46/dc/9a342e8655698cbee17bcd2feaae6f7b11fab55dfb60d43780b52a7e5283/drf_user-0.0.4.tar.gz"
}
],
"0.0.5": [
{
"comment_text": "",
"digests": {
"md5": "c74e38f0f75abbf0d4bba1f759de435e",
"sha256": "7a4dd8283e6622a9df608ee1ba0c5b59e1f21e8bfba4887a3b4d875b6a0a8fb1"
},
"downloads": -1,
"filename": "drf_user-0.0.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c74e38f0f75abbf0d4bba1f759de435e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.0",
"size": 34029,
"upload_time": "2018-12-21T11:36:52",
"url": "https://files.pythonhosted.org/packages/97/24/6699e951c9a57763b18eb0e5f22d182f81907bb7dccf0c9d89532036aed5/drf_user-0.0.5-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "e47898dcd6437c4e3984551ee4b81cd9",
"sha256": "380c4b09c29f085a243e2a3323a664caf535e08bd3a68328f9a37cf091a2709b"
},
"downloads": -1,
"filename": "drf_user-0.0.5.tar.gz",
"has_sig": false,
"md5_digest": "e47898dcd6437c4e3984551ee4b81cd9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.0",
"size": 15304,
"upload_time": "2018-12-21T11:36:54",
"url": "https://files.pythonhosted.org/packages/06/8d/2a6b683206a364070ee1ef2789c1afa4acb7d3ac0ba755123b105a75a9f8/drf_user-0.0.5.tar.gz"
}
],
"0.0.6": [
{
"comment_text": "",
"digests": {
"md5": "cc3deb80417eb9134f6d53ffa34fd122",
"sha256": "46ddeb7d318678de0c144953d2b3cd7797b8f0cd53f2c7110370113b946b2a82"
},
"downloads": -1,
"filename": "drf_user-0.0.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "cc3deb80417eb9134f6d53ffa34fd122",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.0",
"size": 35512,
"upload_time": "2018-12-21T12:01:27",
"url": "https://files.pythonhosted.org/packages/39/c3/0126a4d7e11ac80118200b519d78a347baa0d58163038d9833670b45cf39/drf_user-0.0.6-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "fa50b955e5d3441c10b1b4c366fc1bf0",
"sha256": "164b328564a80efb21cf3903715d643bee6761e48ec5bd72dd5d895dfff780cb"
},
"downloads": -1,
"filename": "drf_user-0.0.6.tar.gz",
"has_sig": false,
"md5_digest": "fa50b955e5d3441c10b1b4c366fc1bf0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.0",
"size": 16051,
"upload_time": "2018-12-21T12:01:28",
"url": "https://files.pythonhosted.org/packages/ee/d2/db88d26836d1b1b3a7dbb6198be511c50de8144ae3c9b2bf061878b845e9/drf_user-0.0.6.tar.gz"
}
],
"0.0.7": [
{
"comment_text": "",
"digests": {
"md5": "8de572b8ffc675d452ed38523c66c7be",
"sha256": "8609f1a18d5d1d86075bc14a10ec99cdd96c90afd1185d288d778e6a844b500c"
},
"downloads": -1,
"filename": "drf_user-0.0.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8de572b8ffc675d452ed38523c66c7be",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.0",
"size": 35794,
"upload_time": "2018-12-24T21:10:13",
"url": "https://files.pythonhosted.org/packages/87/9b/7201e4a2e942d82d4e40ec30063fb711b64c9d13c6505f98f34eca60b0e8/drf_user-0.0.7-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "a60c6db3e7707157a5144dca3e4b2456",
"sha256": "d249efb3b139efe1655ec9b928cfe96a2395b3e03528cb28ab1605fe2390df6c"
},
"downloads": -1,
"filename": "drf_user-0.0.7.tar.gz",
"has_sig": false,
"md5_digest": "a60c6db3e7707157a5144dca3e4b2456",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.0",
"size": 16294,
"upload_time": "2018-12-24T21:10:15",
"url": "https://files.pythonhosted.org/packages/15/5a/9868ddcd3cdf1babb96a77b5c6de3b858cb6ac2a34899506a935893c915d/drf_user-0.0.7.tar.gz"
}
],
"0.0.8": [
{
"comment_text": "",
"digests": {
"md5": "be4199d3e2873304357f956162218ce9",
"sha256": "14c6b8e532dac93041e7d564cba4cd2a260e5f2062fd957e511f7da75440b4d3"
},
"downloads": -1,
"filename": "drf_user-0.0.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "be4199d3e2873304357f956162218ce9",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.0",
"size": 35654,
"upload_time": "2019-03-21T05:24:07",
"url": "https://files.pythonhosted.org/packages/4a/39/82554c5ddae09644c9b7b00377027555b73c533d5559b0d3c2ccebba52c5/drf_user-0.0.8-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "6b21f4933c8288e9c8b3d4d99e07a03d",
"sha256": "ffb9a87bbd9e38c2db6c7d487842d0e7fcbec841333a13a7799ef7d060c4bbeb"
},
"downloads": -1,
"filename": "drf_user-0.0.8.tar.gz",
"has_sig": false,
"md5_digest": "6b21f4933c8288e9c8b3d4d99e07a03d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.0",
"size": 16164,
"upload_time": "2019-03-21T05:24:10",
"url": "https://files.pythonhosted.org/packages/bb/5e/499f84174fd77077abbc62efae0d83342361986aaefa391fa19232e46f5c/drf_user-0.0.8.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "be4199d3e2873304357f956162218ce9",
"sha256": "14c6b8e532dac93041e7d564cba4cd2a260e5f2062fd957e511f7da75440b4d3"
},
"downloads": -1,
"filename": "drf_user-0.0.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "be4199d3e2873304357f956162218ce9",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.0",
"size": 35654,
"upload_time": "2019-03-21T05:24:07",
"url": "https://files.pythonhosted.org/packages/4a/39/82554c5ddae09644c9b7b00377027555b73c533d5559b0d3c2ccebba52c5/drf_user-0.0.8-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "6b21f4933c8288e9c8b3d4d99e07a03d",
"sha256": "ffb9a87bbd9e38c2db6c7d487842d0e7fcbec841333a13a7799ef7d060c4bbeb"
},
"downloads": -1,
"filename": "drf_user-0.0.8.tar.gz",
"has_sig": false,
"md5_digest": "6b21f4933c8288e9c8b3d4d99e07a03d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.0",
"size": 16164,
"upload_time": "2019-03-21T05:24:10",
"url": "https://files.pythonhosted.org/packages/bb/5e/499f84174fd77077abbc62efae0d83342361986aaefa391fa19232e46f5c/drf_user-0.0.8.tar.gz"
}
]
}