{ "info": { "author": "Celia Oakley", "author_email": "celia.oakley@alumni.stanford.edu", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: Django", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Topic :: Software Development", "Topic :: Utilities" ], "description": "django-rest-authemail\n=====================\n\n``django-rest-authemail`` is a Django/Python application that provides a RESTful API interface for user signup and authentication. Email addresses are used for authentication, rather than usernames. Because the authentication user model is based on Django's ``AbstractBaseUser`` and is itself abstract, the model can be extended without the need for additional database tables. Token authentication allows the API to be accessed from a variety of front ends, including Django, AngularJS clients, and iOS and Android mobile apps.\n\n\nFeatures\n--------\n\n- UPDATED for Django 1.9.\n- Supports and tested with Django 1.6.5, 1.6.7, and 1.7.\n- API endpoints for signup, signup email verification, login, logout, password reset, password reset verification, password change, and user detail.\n- Extensible abstract user model.\n- Perform password confirmation and other client-side validation on the front end for a better user experience.\n- Token authentication.\n- User models in the admin interface include inlines for signup and password reset codes.\n- Uses the Django REST Framework.\n- An example project is included and contains example UI templates.\n- Supports and tested under Python 2.7.6\n\n\nInstallation\n------------\n\n``django-rest-authemail`` is available on the Python Package Index (PyPI) at https://pypi.python.org/pypi/django-rest-authemail.\n\nInstall ``django-rest-authemail`` using one of the following techniques.\n\n- Use ``pip``:\n\n::\n\n pip install django-rest-authemail\n\n- Download the ``.tar.gz`` file from PyPI and install it yourself\n- Download the `source from Github`_ and install it yourself\n\nIf you install it yourself, also install the `Django`_, `Django REST Framework`_, and `requests`_. Install `South`_ if you are using Django < 1.7.\n\n.. _source from Github: http://github.com/celiao/django-rest-authemail\n.. _Django: https://www.djangoproject.com/\n.. _Django REST Framework: http://www.django-rest-framework.org\n.. _South: http://south.readthedocs.org/en/latest/index.html\n.. _requests: http://www.python-requests.org/en/latest\n\nUsage\n-----\n\nIn the ``settings.py`` file of your project, include ``rest_framework`` and ``rest_framework.authtoken`` in ``INSTALLED_APPS``. Set the authentication scheme for the Django REST Framework to ``TokenAuthentication``.\n\n.. code-block:: python\n\n INSTALLED_APPS = (\n ...\n #'south', # Remove comment if you're using South for migrations.\n 'rest_framework',\n 'rest_framework.authtoken',\n ...\n )\n\n REST_FRAMEWORK = {\n 'DEFAULT_AUTHENTICATION_CLASSES': (\n 'rest_framework.authentication.TokenAuthentication',\n )\n }\n\nOptionally, you may add a ``AUTH_EMAIL_VERIFICATION`` setting to specify whether to enable email verification for new users on account registration/signup. Setting this to ``False`` will automatically verify newly created users.\n\nCreate a Django application for your user data. For example,\n\n.. code-block:: python\n\n python manage.py startapp accounts\n\nIn the ``models.py`` file of your application, extend ``EmailAbstractUser``, add custom fields, and assign ``objects`` to ``EmailUserManager()``. For example,\n\n.. code-block:: python\n\n from django.db import models\n from authemail.models import EmailUserManager, EmailAbstractUser\n\n class MyUser(EmailAbstractUser):\n # Custom fields\n date_of_birth = models.DateField('Date of birth', null=True, \n blank=True)\n\n # Required\n objects = EmailUserManager()\n\nIn the ``settings.py`` file of your project, include ``authemail`` and your application in ``INSTALLED_APPS``. Set ``AUTH_USER_MODEL`` to the class of your user model. For example,\n\n.. code-block:: python\n\n AUTH_USER_MODEL = 'accounts.MyUser'\n\n INSTALLED_APPS = (\n ...\n #'south', # Remove comment if you're using South for migrations.\n 'rest_framework',\n 'rest_framework.authtoken',\n 'authemail',\n 'accounts',\n ...\n )\n\nIn the ``admin.py`` file of your application, extend ``EmailUserAdmin`` to add your custom fields. For example,\n\n.. code-block:: python\n\n from django.contrib import admin\n from django.contrib.auth import get_user_model\n from authemail.admin import EmailUserAdmin\n\n class MyUserAdmin(EmailUserAdmin):\n fieldsets = (\n (None, {'fields': ('email', 'password')}),\n ('Personal Info', {'fields': ('first_name', 'last_name')}),\n ('Permissions', {'fields': ('is_active', 'is_staff', \n 'is_superuser', 'is_verified', \n 'groups', 'user_permissions')}),\n ('Important dates', {'fields': ('last_login', 'date_joined')}),\n ('Custom info', {'fields': ('date_of_birth',)}),\n )\n\n admin.site.unregister(get_user_model())\n admin.site.register(get_user_model(), MyUserAdmin)\n\nUse one of the following steps to create the database tables:\n\n1. For Django >= 1.7, create the database tables with Django's ``makemigrations``, ``migrate`` and create a superuser with ``createsuperuser``.\n\n.. code-block:: python\n\n python manage.py makemigrations\n python manage.py migrate\n python manage.py createsuperuser\n\n2. For Django < 1.7, create the database tables with ``syncdb`` and South's ``migrate``. Set up a superuser when prompted by ``syncdb``. Convert your ``accounts`` application to South. You will receive an error message from South, so fake the initial migration as a workaround (see http://south.aeracode.org/ticket/1179).\n\n.. code-block:: python\n\n python manage.py syncdb\n python manage.py migrate\n python manage.py convert_to_south accounts\n python manage.py migrate accounts 0001 --fake\n\n3. To migrate from Django 1.6.X to 1.7, upgrade ``django-rest-authemail``, uninstall ``south``, and bring the migrations up-to-date with ``migrate``.\n\n.. code-block:: python\n\n pip install --upgrade django-rest-authemail\n pip uninstall south\n python manage.py migrate\n\nCheck your setup by starting a Web server on your local machine:\n\n.. code-block:: python\n\n python manage.py runserver\n\nDirect your browser to the ``Django`` ``/admin`` and log in.\n\n.. code-block:: python\n\n 127.0.0.1:8000/admin\n\nYou should see ``Users``, ``Groups``, ``Password reset codes``, ``Signup codes``, and ``Tokens``. If you click on ``Users``, you should see your superuser account.\n\nAdd the ``authemail`` API endpoints to your project's ``urls.py`` file. For example,\n\n.. code-block:: python\n\n from accounts import views\n\n urlpatterns = patterns('',\n url(r'^admin/', include(admin.site.urls)),\n\n url(r'^api/accounts/', include('authemail.urls')),\n )\n\nWhen users signup or reset their password, they will be sent an email with a link and verification code. Include email settings in your project's ``settings.py`` file. See https://docs.djangoproject.com/en/dev/ref/settings/#email-host for more information. For example,\n\n.. code-block:: python\n\n # Email settings\n DEFAULT_EMAIL_FROM = 'your_email_address@gmail.com'\n DEFAULT_EMAIL_BCC = ''\n\n EMAIL_HOST = 'smtp.gmail.com'\n EMAIL_PORT = 587\n EMAIL_HOST_USER = 'your_email_address@gmail.com'\n EMAIL_HOST_PASSWORD = 'xxxx xxxx xxxx xxxx'\n EMAIL_USE_TLS = True\n EMAIL_USE_SSL = False\n SERVER_EMAIL = 'your_email_address@gmail.com'\n\nTry out ``authemail`` API calls by firing up ``python`` and using the ``authemail`` wrapper methods (``runserver`` should still be executing). For example,\n\n.. code-block:: python\n\n python\n >>> from authemail import wrapper\n >>> account = wrapper.Authemail()\n >>> first_name = 'Your first name'\n >>> last_name = 'Your last name'\n >>> email = 'your_email@gmail.com'\n >>> password = 'Your password'\n >>> response = account.signup(first_name=first_name, last_name=last_name,\n ... email=email, password=password)\n\nIn the ``Django`` ``/admin``, you should see a new user (not verified) and a new signup code. You should receive an email at ``your_email@gmail.com``. Use the code in the email to verify your email address using the wrapper (normally, the link in the email would point to the front end, which would issue the signup verify request to the API):\n\n.. code-block:: python\n\n >>> code = '7f31e7a515df266532df4e00e0cf1967a7de7d17'\n >>> response = account.signup_verify(code=code)\n\nIn the ``Django`` ``/admin``, the new user is now verified and the signup code is absent. The new user can now login and you can inspect the associated login token:\n\n.. code-block:: python\n\n >>> response = account.login(email=email, password=password)\n >>> account.token\n u'a84d062c1b60a36e6740eb60c6f9da8d1f709322'\n\nYou will find the same token for the user in the ``Token`` table in the ``Django`` ``/admin``. Find out more information about the user (insert your token):\n\n.. code-block:: python\n\n >>> token = 'a84d062c1b60a36e6740eb60c6f9da8d1f709322'\n >>> response = account.users_me(token=token)\n >>> response\n {u'first_name': u'Your first name', u'last_name': u'Your last name', u'email': u'your_email@gmail.com'}\n\nUse the authentication token to logout:\n\n.. code-block:: python\n\n >>> response = account.logout(token=token)\n >>> response\n {u'success': u'User logged out.'}\n\nPlay with password reset and change!\n\nIf you are having trouble getting your code to execute, or are just curious, try out the Django REST Framework Browsable API. If you type an ``authemail`` API endpoint into your browser, the Browsable API should appear (``runserver`` should still be executing). For example,\n\n.. code-block:: python\n\n 127.0.0.1/api/accounts/signup\n\nIn the ``Content:`` field of the Browsable API, type:\n\n.. code-block:: python\n\n {\n \"first_name\": \"Your first name\",\n \"last_name\": \"Your last name\",\n \"email\": \"your_email@gmail.com\",\n \"password\": \"Your password\"\n }\n\nThen click on ``POST``. You will either receive an error message to help in your debugging, or, if your signup was successful:\n\n.. code-block:: python\n\n {\n \"first_name\": \"Your first name\",\n \"last_name\": \"Your last name\",\n \"email\": \"your_email@gmail.com\",\n }\n\nTry out the other ``authemail`` API endpoints with the Django REST Framework Browsable API.\n\nMake ``authemail`` API calls with front end code. To get started, follow the steps in the ``README.rst`` for the ``example_project``. Enhance the Django code in the ``example_project`` or extend the concepts to AngularJS, iOS, and Android front ends.\n\nWhen calling endpoints from the front end that require authentication (``logout``, ``password/change``, and ``users/me``), include the authorization token key in the HTTP header. For example,\n\n.. code-block:: python\n\n Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b\n\nHere's an example using ``curl``,\n\n.. code-block:: python\n\n curl -X GET 'http://127.0.0.1:8000/accounts/logout' \\\n -H 'Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b'\n\n\nAuthemail API Endpoints\n-----------------------\nFor the endpoints that follow, the base path is shown as ``/api/accounts``. This path is for example purposes. It can be customized in your project's ``urls.py`` file.\n\n**POST /api/accounts/signup**\n\nCall this endpoint to sign up a new user and send a verification email. Sample email templates are found in ``authemail/templates/authemail``. To override the email templates, copy and modify the sample templates, or create your own, in ``your_app/templates/authemail``.\n\nYour front end should handle password confirmation, and if desired, require the visitor to input their first and last names.\n\nUnverified users can sign up multiple times, but only the latest signup code will be active.\n\n- Payload\n \n - email (required)\n - password (required)\n - first_name (optional)\n - last_name (optional)\n\n- Possible responses\n\n.. code-block:: python\n\n 201 (Created)\n Content-Type: application/json\n {\n \"email\": \"amelia.earhart@boeing.com\"\n \"first_name\": \"Amelia\", \n \"last_name\": \"Earhart\", \n }\n\n 400 (Bad Request)\n Content-Type: application/json\n {\n \"email\": [\n \"This field is required.\"\n ], \n \"password\": [\n \"This field is required.\"\n ] \n }\n\n {\n \"email\": [\n \"Enter a valid email address.\"\n ]\n }\n\n {\n \"detail\": \"User with this Email address already exists.\"\n }\n\n**GET /api/accounts/signup/verify/?code=**\n\nWhen the user clicks the link in the verification email, the front end should call this endpoint to verify the user.\n\n- Parameters\n\n - code (required)\n\n- Possible responses\n\n.. code-block:: python\n\n 200 (OK)\n Content-Type: application/json\n {\n \"success\": \"User verified.\"\n }\n\n 400 (Bad Request)\n Content-Type: application/json\n {\n \"detail\": \"Unable to verify user.\"\n }\n\n**POST /api/accounts/login**\n\nCall this endpoint to log in a user. Use the authentication token in future calls to identify the user.\n\n- Payload\n\n - email (required)\n - password (required)\n\n- Possible responses\n\n.. code-block:: python\n\n 200 (OK)\n Content-Type: application/json\n {\n \"token\": \"91ec67d093ded89e0a752f35188802c261899013\"\n }\n\n 400 (Bad Request)\n Content-Type: application/json\n {\n \"password\": [\n \"This field is required.\"\n ], \n \"email\": [\n \"This field is required.\"\n ]\n }\n\n {\n \"email\": [\n \"Enter a valid email address.\"\n ]\n }\n\n 401 (Unauthorized)\n {\n \"detail\": \"Authentication credentials were not provided.\"\n }\n\n {\n \"detail\": \"Unable to login with provided credentials.\"\n }\n\n {\n \"detail\": \"User account not active.\"\n }\n\n**GET /api/accounts/logout**\n\nCall this endpoint to log out an authenticated user.\n\n- HTTP Header\n\n.. code-block:: python\n\n Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b\n\n- Possible responses\n\n.. code-block:: python\n\n 200 (OK)\n Content-Type: application/json\n {\n \"success\": \"User logged out.\"\n }\n\n 401 (Unauthorized)\n Content-Type: application/json\n {\n \"detail\": \"Authentication credentials were not provided.\"\n }\n\n {\n \"detail\": \"Invalid token\"\n }\n\n**POST /api/accounts/password/reset**\n\nCall this endpoint to send an email to a user so they can reset their password. Similar to signup verification, the password reset email templates are found in ``authemail/templates/authemail``. Override the default templates by placing your similarly-named templates in ``your_app/templates/authemail``.\n\n- Payload\n\n - email (required)\n\n- Possible responses\n\n.. code-block:: python\n\n 201 (Created)\n Content-Type: application/json\n {\n \"email\": \"amelia.earhart@boeing.com\"\n }\n\n 400 (Bad Request)\n Content-Type: application/json\n {\n \"email\": [\n \"This field is required.\"\n ]\n }\n\n {\n \"email\": [\n \"Enter a valid email address.\"\n ]\n }\n\n {\n \"detail\": \"Password reset not allowed.\"\n }\n\n**GET /api/accounts/password/reset/verify/?code=**\n\nWhen the user clicks the link in the password reset email, call this endpoint to verify the password reset code.\n\n- Parameters\n\n - code (required)\n\n- Possible responses\n\n.. code-block:: python\n\n 200 (OK)\n Content-Type: application/json\n {\n \"success\": \"User verified.\"\n }\n\n 400 (Bad Request)\n Content-Type: application/json\n {\n \"password\": [\n \"This field is required.\"\n ] \n }\n\n 400 (Bad Request)\n Content-Type: application/json\n {\n \"detail\": \"Unable to verify user.\"\n }\n\n**POST /api/accounts/password/reset/verified**\n\nCall this endpoint with the password reset code and the new password, to reset the user's password. The front end should prompt the user for a confirmation password and give feedback if the passwords don't match.\n\n- Payload\n\n - code (required)\n - password (required)\n\n- Possible responses\n\n.. code-block:: python\n\n 200 (OK)\n Content-Type: application/json\n {\n \"success\": \"Password reset.\"\n }\n\n 400 (Bad Request)\n Content-Type: application/json\n {\n \"password\": [\n \"This field is required.\"\n ] \n }\n\n 400 (Bad Request)\n Content-Type: application/json\n {\n \"detail\": \"Unable to verify user.\"\n }\n\n**POST /api/accounts/password/change**\n\nCall this endpoint to change a user's password.\n\n- HTTP Header\n\n.. code-block:: python\n\n Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b\n\n- Payload\n\n - password (required)\n\n- Possible responses\n\n.. code-block:: python\n\n 200 (OK)\n Content-Type: application/json\n {\n \"success\": \"Password changed.\"\n }\n\n 400 (Bad Request)\n Content-Type: application/json\n {\n \"password\": [\n \"This field is required.\"\n ] \n }\n\n 401 (Unauthorized)\n Content-Type: application/json\n {\n \"detail\": \"Authentication credentials were not provided.\"\n }\n\n {\n \"detail\": \"Invalid token\"\n }\n\n**GET /api/accounts/users/me**\n\nCall this endpoint after logging in and obtaining an authorization token to learn more about the user.\n\n- HTTP Header\n\n.. code-block:: python\n\n Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b\n\n- Possible responses\n\n.. code-block:: python\n\n 200 (OK)\n Content-Type: application/json\n {\n \"id\": 1,\n \"email\": \"amelia.earhart@boeing.com\",\n \"first_name\": \"Amelia\",\n \"last_name\": \"Earhart\",\n }\n \n 401 (Unauthorized)\n Content-Type: application/json\n {\n \"detail\": \"Authentication credentials were not provided.\"\n }\n \n {\n \"detail\": \"Invalid token\"\n }\n\n\nWrapper\n-------\nA wrapper is available to access the Authemail API with Python code. First create an instance of the Authemail class, then call methods to access the API. There is a one-to-one mapping between the endpoints and instance methods. For example,\n\n.. code-block:: python\n\n from authemail import wrapper\n\n account = wrapper.Authemail()\n response = account.signup(first_name=first_name, last_name=last_name,\n email=email, password=password)\n\n if 'detail' in response:\n # Handle error condition\n else:\n # Handle good response\n\nSee ``example_project/views.py`` for more sample usage.\n\n\nInspiration and Ideas\n---------------------\nInspiration and ideas for ``django-rest-authemail`` were derived from:\n\n- `django-rest-framework`_\n- `django-email-as-username`_\n- `django-registration`_\n- `django-rest-auth`_\n- `tmdbsimple`_\n\n.. _django-rest-framework: http://www.django-rest-framework.org/\n.. _django-email-as-username: https://pypi.python.org/pypi/django-email-as-username/1.6.7\n.. _django-registration: http://django-registration.readthedocs.org/en/latest/ \n.. _django-rest-auth: https://pypi.python.org/pypi/django-rest-auth\n.. _tmdbsimple: https://pypi.python.org/pypi/tmdbsimple", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/celiao/django-rest-authemail/tarball/1.4.0", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/celiao/django-rest-authemail", "keywords": "django,python,rest,rest-framework,api,auth,authentication,email,user,username,registration,signup,login,logout,password,django-rest-framework,djangorestframework,django-registration,django-email-as-username", "license": "GPLv3 licence, see LICENSE file", "maintainer": null, "maintainer_email": null, "name": "django-rest-authemail", "package_url": "https://pypi.org/project/django-rest-authemail/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-rest-authemail/", "project_urls": { "Download": "https://github.com/celiao/django-rest-authemail/tarball/1.4.0", "Homepage": "http://github.com/celiao/django-rest-authemail" }, "release_url": "https://pypi.org/project/django-rest-authemail/1.4.0/", "requires_dist": null, "requires_python": null, "summary": "A RESTful API for user signup and authentication using email addresses", "version": "1.4.0" }, "last_serial": 2281349, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "8ff53a553348a4fd044fe097dcb00e30", "sha256": "ae2734b746c2b390859b09eb3f0264e2a9971e05e9b6d61396ae9ac33fe4edfc" }, "downloads": -1, "filename": "django-rest-authemail-0.0.1.tar.gz", "has_sig": false, "md5_digest": "8ff53a553348a4fd044fe097dcb00e30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12905, "upload_time": "2014-08-23T18:14:01", "url": "https://files.pythonhosted.org/packages/d3/43/57d305a0b63ef490d7d0a1e682d4f9de4dc0010499a7044499881448b205/django-rest-authemail-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "a90427b88122718d5ad7c3d8d4e8e057", "sha256": "be67368a49063ef5cccbe5a1a0f8a7a9b1d36b905cce25bde1ca66d9992832d1" }, "downloads": -1, "filename": "django-rest-authemail-0.0.2.tar.gz", "has_sig": false, "md5_digest": "a90427b88122718d5ad7c3d8d4e8e057", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32405, "upload_time": "2014-08-27T06:05:56", "url": "https://files.pythonhosted.org/packages/42/91/2cec866eda0336ab7c977d89b09d052b5cf34b5b1cf51470293ffb81a2b8/django-rest-authemail-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "bc2b4ad61adaab0f6fcda34b904dd419", "sha256": "cc50449aa9830826811068ded7a83d68e27aa27ad37416a04a9b3a0d40a8af5e" }, "downloads": -1, "filename": "django-rest-authemail-0.0.3.tar.gz", "has_sig": false, "md5_digest": "bc2b4ad61adaab0f6fcda34b904dd419", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32404, "upload_time": "2014-08-27T06:11:56", "url": "https://files.pythonhosted.org/packages/4d/8e/a0efc57195514fcb264da2ac792790b003349460628374b4ec2b95f23df4/django-rest-authemail-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "dfb62c564bd2159dff751da209367a3e", "sha256": "08bb979e65a69696de9331c2a573db4a84bfa22c81f91f364e1a88ec0c8e2ad8" }, "downloads": -1, "filename": "django-rest-authemail-0.0.4.tar.gz", "has_sig": false, "md5_digest": "dfb62c564bd2159dff751da209367a3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32408, "upload_time": "2014-08-27T06:15:53", "url": "https://files.pythonhosted.org/packages/8a/77/acdf106e44ef028277cae873318a8b746cd258e896c6f8b91a81df3c2fdf/django-rest-authemail-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "ae9ac673b53e7a2f6d09d216bdee01e6", "sha256": "2cdcf3b8c3002f5249b4e8cfd742df6237bc816f1dfa2d0214b41ad2f6b0715c" }, "downloads": -1, "filename": "django-rest-authemail-0.0.5.tar.gz", "has_sig": false, "md5_digest": "ae9ac673b53e7a2f6d09d216bdee01e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33023, "upload_time": "2014-08-27T06:23:41", "url": "https://files.pythonhosted.org/packages/af/fe/1e8551ec0bb09ecd99b0d0045820854fd1e448e833f25b14a409f18a24d1/django-rest-authemail-0.0.5.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "26fdbe8744f6062dfdeb4e3f13a51b51", "sha256": "67806d94067cd5207cda1d47c88b89c4d49da9c9793120683e02606fde6a153c" }, "downloads": -1, "filename": "django-rest-authemail-0.1.0.tar.gz", "has_sig": false, "md5_digest": "26fdbe8744f6062dfdeb4e3f13a51b51", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34093, "upload_time": "2014-10-13T19:12:46", "url": "https://files.pythonhosted.org/packages/22/1f/87a2ff3b4127a3a35c1438811b57d5bf410a3f09f0c2ca55234406ebae7f/django-rest-authemail-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "0068e26d950308ac4c5514e04fd878ed", "sha256": "1829d6ee8a4fdb87157cf3470fc362cf09049ac9eee1be3c6c391c64e1e2afb2" }, "downloads": -1, "filename": "django-rest-authemail-0.1.1.tar.gz", "has_sig": false, "md5_digest": "0068e26d950308ac4c5514e04fd878ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34096, "upload_time": "2014-10-13T19:20:55", "url": "https://files.pythonhosted.org/packages/33/91/8f5b42b243a4a2dfc8f7174c1eb4c350cd7fc882c12bd61c4ec800490a2b/django-rest-authemail-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "a4695369d35b059cdcc86aff821a3835", "sha256": "23b8fda6412bfe53676ba1e0944ff5cd03337e4a882df1581c37c07a9e888b31" }, "downloads": -1, "filename": "django-rest-authemail-0.1.2.tar.gz", "has_sig": false, "md5_digest": "a4695369d35b059cdcc86aff821a3835", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34101, "upload_time": "2014-10-13T19:50:26", "url": "https://files.pythonhosted.org/packages/14/f8/ec8d95954ad8216e8f1c57d5f0b997bbd49eb2e882d1b1ef93b65b7d32ae/django-rest-authemail-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "19b8a7b1d3777cc71abba23b025b97dd", "sha256": "64951ec9b23c3d7532fa4852f4549ee47b1f250f51e4b89541b3d1d29370a30a" }, "downloads": -1, "filename": "django-rest-authemail-0.1.3.tar.gz", "has_sig": false, "md5_digest": "19b8a7b1d3777cc71abba23b025b97dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34094, "upload_time": "2014-10-13T19:55:58", "url": "https://files.pythonhosted.org/packages/59/77/4b18dc0b02dd63ed73c7f0d6e94d5eb6a69ffab4de71576765f809597640/django-rest-authemail-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "29f5c3df60d0473dad23dfccd69c5629", "sha256": "80d54c3583a493f8ee9ded22dad29269590943c8c5c5ce18053376d2048631b0" }, "downloads": -1, "filename": "django-rest-authemail-0.1.4.tar.gz", "has_sig": false, "md5_digest": "29f5c3df60d0473dad23dfccd69c5629", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34101, "upload_time": "2014-10-13T20:17:53", "url": "https://files.pythonhosted.org/packages/d7/c8/5a4dbd41ee40dc929476d421c45402bb18f0ee8c1d9911f180e2b617e6d9/django-rest-authemail-0.1.4.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "a33fcf750c4af5a660a028bbcc89e429", "sha256": "47d77dcfca3bbcff4c300bd4b7ee1221887cd0a0227e7b29e1db12d2d9db015c" }, "downloads": -1, "filename": "django-rest-authemail-1.0.0.tar.gz", "has_sig": false, "md5_digest": "a33fcf750c4af5a660a028bbcc89e429", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40685, "upload_time": "2016-08-14T21:23:58", "url": "https://files.pythonhosted.org/packages/ec/71/fa6a14b0cef3070b48880e16287d9cb555190caea8ca4d495d1f948dabc7/django-rest-authemail-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "08b3de2746a4279458a367728a746d06", "sha256": "7d9bf3c606d0e84fccb12b615b3fb504614eebf8d448f18104bddff3e20b4df6" }, "downloads": -1, "filename": "django-rest-authemail-1.1.0.tar.gz", "has_sig": false, "md5_digest": "08b3de2746a4279458a367728a746d06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40693, "upload_time": "2016-08-14T21:41:54", "url": "https://files.pythonhosted.org/packages/97/50/7220dcf87a68119152691bf9777673ff53d21ad7482a6eeb05a4e5e6ef21/django-rest-authemail-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "617a0e2623547e59e719b541ac98dce3", "sha256": "8df8f674a67bd20439739bd34cc3cfb30bfdbd5be28aa4825c8327ce3ac26443" }, "downloads": -1, "filename": "django-rest-authemail-1.1.1.tar.gz", "has_sig": false, "md5_digest": "617a0e2623547e59e719b541ac98dce3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40686, "upload_time": "2016-08-14T21:50:20", "url": "https://files.pythonhosted.org/packages/7f/c2/051cfb670bf1f2613731017775ad8995a4064c80d9f6c363a7d94ac71251/django-rest-authemail-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "d20a98db05a40caa9ee2b3f107f7470a", "sha256": "c222c19d9c094249324114866fb8aff7111bca08aef2c589499000c4205c4f2a" }, "downloads": -1, "filename": "django-rest-authemail-1.1.2.tar.gz", "has_sig": false, "md5_digest": "d20a98db05a40caa9ee2b3f107f7470a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40689, "upload_time": "2016-08-14T21:53:00", "url": "https://files.pythonhosted.org/packages/2d/54/036841b73699af524c6253d8398a23bf3297e1f2d9cceaba8e049e292deb/django-rest-authemail-1.1.2.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "f6a17b2f807270113e9fa081ed5fad2c", "sha256": "ad96ec187691fd542ba7ea782cbf3e2529c4da2c3f70645d50ab44ddd0691cf7" }, "downloads": -1, "filename": "django-rest-authemail-1.2.0.tar.gz", "has_sig": false, "md5_digest": "f6a17b2f807270113e9fa081ed5fad2c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40691, "upload_time": "2016-08-14T22:52:36", "url": "https://files.pythonhosted.org/packages/ed/1e/20e1d303f5601f7476b25216ccf5f84d253d8504b210d5b28ae64dd87096/django-rest-authemail-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "13e6800ba243f828042583da06cb38e8", "sha256": "30680e10d45461487f3f19bd61b41a85fc481400c353344a4acb6b64243b6be7" }, "downloads": -1, "filename": "django-rest-authemail-1.3.0.tar.gz", "has_sig": false, "md5_digest": "13e6800ba243f828042583da06cb38e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40691, "upload_time": "2016-08-15T02:05:35", "url": "https://files.pythonhosted.org/packages/44/3e/55f17dc320cfd907796ee6672cfb6a6ece395c2c5726769e9406f99c539f/django-rest-authemail-1.3.0.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "657e9989bb22acb5bbfce348698095bd", "sha256": "d923382ba8df2fac544c11cf4799fe992087cf4ba0358b42a138ccac4b86249c" }, "downloads": -1, "filename": "django-rest-authemail-1.4.0.tar.gz", "has_sig": false, "md5_digest": "657e9989bb22acb5bbfce348698095bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40688, "upload_time": "2016-08-15T02:56:41", "url": "https://files.pythonhosted.org/packages/8e/9b/28186fd88344cbb0e36d8112a46bc18ec8dd7f7902570714b303234ff4c7/django-rest-authemail-1.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "657e9989bb22acb5bbfce348698095bd", "sha256": "d923382ba8df2fac544c11cf4799fe992087cf4ba0358b42a138ccac4b86249c" }, "downloads": -1, "filename": "django-rest-authemail-1.4.0.tar.gz", "has_sig": false, "md5_digest": "657e9989bb22acb5bbfce348698095bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40688, "upload_time": "2016-08-15T02:56:41", "url": "https://files.pythonhosted.org/packages/8e/9b/28186fd88344cbb0e36d8112a46bc18ec8dd7f7902570714b303234ff4c7/django-rest-authemail-1.4.0.tar.gz" } ] }