Commit 92303734 authored by Michael Fladischer's avatar Michael Fladischer

Import djoser_0.5.2.orig.tar.gz

parent cf00f564
This diff is collapsed.
......@@ -92,7 +92,7 @@ REST_FRAMEWORK = {
}
```
Run migrations this step will create tables for `auth` app:
Run migrations - this step will create tables for `auth` app:
$ ./manage.py migrate
......@@ -132,10 +132,29 @@ REST_FRAMEWORK = {
}
```
Run migrations this step will create tables for `auth` and `authtoken` apps:
Run migrations - this step will create tables for `auth` and `authtoken` apps:
$ ./manage.py migrate
### JSON Web Token Authentication
`djoser` does not provide support for JSON web token authentication out of the box but
can be enabled by using a library like [djangorestframework-jwt](https://github.com/GetBlimp/django-rest-framework-jwt).
You simply need to route correctly in your `settings.ROOT_URLCONF`. An example would be:
```
import rest_framework_jwt.views
import djoser.views
urlpatterns = [
url(r'^auth/login', rest_framework_jwt.views.obtain_jwt_token), # using JSON web token
url(r'^auth/register', djoser.views.RegistrationView.as_view()),
url(r'^auth/password/reset', djoser.views.PasswordResetView.as_view()),
url(r'^auth/password/reset/confirm', djoser.views.PasswordResetConfirmView.as_view()),
...
]
```
## Settings
Optionally add `DJOSER` settings:
......@@ -605,7 +624,7 @@ In this extremely short tutorial we are going to mimic the simplest flow: regist
## Customization
If you need to customize any serializer behavior you can use
If you need to customize any serializer behaviour you can use
the DJOSER['SERIALIZERS'] setting to use your own serializer classes in the built-in views.
Or if you need to completely change the default djoser behaviour,
you can always override djoser views with your own custom ones.
......@@ -624,7 +643,7 @@ Define custom view/serializer (inherit from one of `djoser` class) and override
```python
class CustomRegistrationView(djoser.views.RegistrationView):
def send_email(self, *args, **kwargs):
def send_activation_email(self, *args, **kwargs):
your_custom_email_sender(*args, **kwargs)
```
......
This diff is collapsed.
Django>=1.5
Django>=1.7
djangorestframework>=3.0.0
......@@ -35,13 +35,8 @@ class ActionViewMixin(object):
def post(self, request):
serializer = self.get_serializer(data=request.data)
if serializer.is_valid():
return self.action(serializer)
else:
return response.Response(
data=serializer.errors,
status=status.HTTP_400_BAD_REQUEST,
)
serializer.is_valid(raise_exception=True)
return self._action(serializer)
class UserEmailFactoryBase(object):
......
......@@ -86,7 +86,7 @@ class LoginView(utils.ActionViewMixin, generics.GenericAPIView):
permissions.AllowAny,
)
def action(self, serializer):
def _action(self, serializer):
token = utils.login_user(self.request, serializer.user)
token_serializer_class = serializers.serializers_manager.get('token')
return Response(
......@@ -119,7 +119,7 @@ class PasswordResetView(utils.ActionViewMixin, generics.GenericAPIView):
_users = None
def action(self, serializer):
def _action(self, serializer):
for user in self.get_users(serializer.data['email']):
self.send_password_reset_email(user)
return response.Response(status=status.HTTP_204_NO_CONTENT)
......@@ -152,7 +152,7 @@ class SetPasswordView(utils.ActionViewMixin, generics.GenericAPIView):
return serializers.serializers_manager.get('set_password_retype')
return serializers.serializers_manager.get('set_password')
def action(self, serializer):
def _action(self, serializer):
self.request.user.set_password(serializer.data['new_password'])
self.request.user.save()
......@@ -176,7 +176,7 @@ class PasswordResetConfirmView(utils.ActionViewMixin, generics.GenericAPIView):
return serializers.serializers_manager.get('password_reset_confirm_retype')
return serializers.serializers_manager.get('password_reset_confirm')
def action(self, serializer):
def _action(self, serializer):
serializer.user.set_password(serializer.data['new_password'])
serializer.user.save()
return response.Response(status=status.HTTP_204_NO_CONTENT)
......@@ -192,7 +192,7 @@ class ActivationView(utils.ActionViewMixin, generics.GenericAPIView):
)
token_generator = default_token_generator
def action(self, serializer):
def _action(self, serializer):
serializer.user.is_active = True
serializer.user.save()
signals.user_activated.send(
......@@ -218,7 +218,7 @@ class SetUsernameView(utils.ActionViewMixin, generics.GenericAPIView):
return serializers.serializers_manager.get('set_username_retype')
return serializers.serializers_manager.get('set_username')
def action(self, serializer):
def _action(self, serializer):
setattr(self.request.user, User.USERNAME_FIELD, serializer.data['new_' + User.USERNAME_FIELD])
self.request.user.save()
return response.Response(status=status.HTTP_204_NO_CONTENT)
......
#!/usr/bin/env python
import io
import os
from setuptools import setup
try:
import pypandoc
description = pypandoc.convert('README.md', 'rst')
except (IOError, ImportError):
description = open('README.md').read()
description = io.open('README.md', encoding='utf-8').read()
def get_packages(package):
......@@ -22,7 +24,7 @@ def get_requirements(file_name):
setup(
name='djoser',
version='0.5.1',
version='0.5.2',
packages=get_packages('djoser'),
license='MIT',
author='SUNSCRAPERS',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment