From d198b1abe6b96bbdd84e4c2622d996f770c69edd Mon Sep 17 00:00:00 2001 From: Andrea Grandi Date: Mon, 29 May 2017 17:07:50 +0100 Subject: [PATCH 01/20] Add Django manage command to create a DRF user Token --- .../authtoken/management/__init__.py | 0 .../authtoken/management/commands/__init__.py | 0 .../management/commands/drf_create_token.py | 20 +++++++++++++++++++ tests/test_authtoken.py | 15 ++++++++++++++ 4 files changed, 35 insertions(+) create mode 100644 rest_framework/authtoken/management/__init__.py create mode 100644 rest_framework/authtoken/management/commands/__init__.py create mode 100644 rest_framework/authtoken/management/commands/drf_create_token.py diff --git a/rest_framework/authtoken/management/__init__.py b/rest_framework/authtoken/management/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/rest_framework/authtoken/management/commands/__init__.py b/rest_framework/authtoken/management/commands/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/rest_framework/authtoken/management/commands/drf_create_token.py b/rest_framework/authtoken/management/commands/drf_create_token.py new file mode 100644 index 000000000..ccd400ed5 --- /dev/null +++ b/rest_framework/authtoken/management/commands/drf_create_token.py @@ -0,0 +1,20 @@ +from django.contrib.auth.models import User +from django.core.management.base import BaseCommand +from rest_framework.authtoken.models import Token + + +class Command(BaseCommand): + help = 'Create DRF Token for a given user' + + def create_user_token(self, username): + user = User.objects.get(username=username) + token = Token.objects.get_or_create(user=user) + return token[0] + + def add_arguments(self, parser): + parser.add_argument('username', type=str, nargs='+') + + def handle(self, *args, **options): + username = options['username'] + token = self.create_user_token(username) + print('Generated token {0} for user {1}'.format(token.key, username)) diff --git a/tests/test_authtoken.py b/tests/test_authtoken.py index 54ac1848d..3b5a618e3 100644 --- a/tests/test_authtoken.py +++ b/tests/test_authtoken.py @@ -4,6 +4,8 @@ from django.contrib.auth.models import User from django.test import TestCase from rest_framework.authtoken.admin import TokenAdmin +from rest_framework.authtoken.management.commands.drf_create_token import \ + Command as AuthTokenCommand from rest_framework.authtoken.models import Token from rest_framework.authtoken.serializers import AuthTokenSerializer from rest_framework.exceptions import ValidationError @@ -33,3 +35,16 @@ class AuthTokenTests(TestCase): self.user.set_password(data['password']) self.user.save() assert AuthTokenSerializer(data=data).is_valid() + + +class AuthTokenCommandTests(TestCase): + + def setUp(self): + self.site = site + self.user = User.objects.create_user(username='test_user') + + def test_command_create_user_token(self): + token = AuthTokenCommand().create_user_token(self.user.username) + assert token is not None + token_saved = Token.objects.first() + assert token.key == token_saved.key From 84e22cc2f3866078a06a464636e4ec6c1a7fec47 Mon Sep 17 00:00:00 2001 From: Bekhzod Tillakhanov Date: Tue, 30 May 2017 00:15:07 +0500 Subject: [PATCH 02/20] Scheme fix when unauth and Flask8 lint fix --- rest_framework/templates/rest_framework/docs/document.html | 3 ++- rest_framework/templates/rest_framework/docs/sidebar.html | 2 ++ tests/test_atomic_requests.py | 1 + tests/test_fields.py | 1 - tests/test_permissions.py | 3 +++ tests/test_renderers.py | 1 + tests/test_request.py | 1 + tests/test_response.py | 1 + tests/test_reverse.py | 1 + tests/test_schemas.py | 1 + tests/test_validation.py | 1 + 11 files changed, 14 insertions(+), 2 deletions(-) diff --git a/rest_framework/templates/rest_framework/docs/document.html b/rest_framework/templates/rest_framework/docs/document.html index ef5f5966b..274eee4e3 100644 --- a/rest_framework/templates/rest_framework/docs/document.html +++ b/rest_framework/templates/rest_framework/docs/document.html @@ -13,7 +13,7 @@ {% if 'javascript' in langs %}{% include "rest_framework/docs/langs/javascript-intro.html" %}{% endif %} - +{% if document.data %} {% for section_key, section in document.data|items %} {% if section_key %}

{{ section_key }} @@ -28,3 +28,4 @@ {% for link_key, link in document.links|items %} {% include "rest_framework/docs/link.html" %} {% endfor %} +{% endif %} diff --git a/rest_framework/templates/rest_framework/docs/sidebar.html b/rest_framework/templates/rest_framework/docs/sidebar.html index c6ac26f66..f5f84a2e5 100644 --- a/rest_framework/templates/rest_framework/docs/sidebar.html +++ b/rest_framework/templates/rest_framework/docs/sidebar.html @@ -5,6 +5,7 @@