Commit e592a89c authored by ibuler's avatar ibuler

[Update] 修改url

parent fdab6f73
# Generated by Django 2.1.7 on 2019-07-24 12:02
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('assets', '0036_auto_20190716_1535'),
]
operations = [
migrations.AlterField(
model_name='adminuser',
name='_become_pass',
field=models.CharField(blank=True, default='', max_length=128),
),
]
# -*- coding: utf-8 -*-
#
from rest_framework.permissions import AllowAny
from rest_framework.response import Response
from rest_framework.generics import CreateAPIView
from rest_framework.views import APIView
from .. import serializers
class TokenCreateApi(CreateAPIView):
permission_classes = (AllowAny,)
serializer_class = serializers.BearerTokenSerializer
...@@ -2,10 +2,13 @@ ...@@ -2,10 +2,13 @@
# #
from rest_framework import serializers from rest_framework import serializers
from users.models import User
from .models import AccessKey from .models import AccessKey
__all__ = ['AccessKeySerializer'] __all__ = [
'AccessKeySerializer', 'OtpVerifySerializer', 'BearerTokenSerializer',
]
class AccessKeySerializer(serializers.ModelSerializer): class AccessKeySerializer(serializers.ModelSerializer):
...@@ -18,3 +21,30 @@ class AccessKeySerializer(serializers.ModelSerializer): ...@@ -18,3 +21,30 @@ class AccessKeySerializer(serializers.ModelSerializer):
class OtpVerifySerializer(serializers.Serializer): class OtpVerifySerializer(serializers.Serializer):
code = serializers.CharField(max_length=6, min_length=6) code = serializers.CharField(max_length=6, min_length=6)
class BearerTokenSerializer(serializers.Serializer):
username = serializers.CharField()
password = serializers.CharField(allow_blank=True, write_only=True)
public_key = serializers.CharField(allow_blank=True, write_only=True)
token = serializers.CharField(read_only=True)
keyword = serializers.SerializerMethodField()
@staticmethod
def get_keyword(obj):
return 'Bearer'
def create(self, validated_data):
username = validated_data["username"]
request = self.context.get("request")
user = User.objects.get(username=username)
instance = {
"username": validated_data.get(username),
"token": user.create_bearer_token(request),
}
return instance
def update(self, instance, validated_data):
pass
...@@ -7,10 +7,15 @@ from drf_yasg import openapi ...@@ -7,10 +7,15 @@ from drf_yasg import openapi
class CustomSwaggerAutoSchema(SwaggerAutoSchema): class CustomSwaggerAutoSchema(SwaggerAutoSchema):
def get_tags(self, operation_keys): def get_tags(self, operation_keys):
if len(operation_keys) > 2 and operation_keys[1].startswith('v'): if len(operation_keys) > 2:
return [operation_keys[0] + '_' + operation_keys[2]] return [operation_keys[0] + '_' + operation_keys[1]]
return super().get_tags(operation_keys) return super().get_tags(operation_keys)
def get_operation(self, operation_keys):
operation = super().get_operation(operation_keys)
operation.summary = operation.operation_id
return operation
def get_swagger_view(version='v1'): def get_swagger_view(version='v1'):
from .urls import api_v1_patterns, api_v2_patterns from .urls import api_v1_patterns, api_v2_patterns
......
...@@ -7,26 +7,26 @@ from django.conf.urls.static import static ...@@ -7,26 +7,26 @@ from django.conf.urls.static import static
from django.conf.urls.i18n import i18n_patterns from django.conf.urls.i18n import i18n_patterns
from django.views.i18n import JavaScriptCatalog from django.views.i18n import JavaScriptCatalog
from .views import IndexView, LunaView, I18NView, HealthCheckView from .views import IndexView, LunaView, I18NView, HealthCheckView, redirect_format_api
from .swagger import get_swagger_view from .swagger import get_swagger_view
api_v1 = [ api_v1 = [
path('users/v1/', include('users.urls.api_urls', namespace='api-users')), path('users/', include('users.urls.api_urls', namespace='api-users')),
path('assets/v1/', include('assets.urls.api_urls', namespace='api-assets')), path('assets/', include('assets.urls.api_urls', namespace='api-assets')),
path('perms/v1/', include('perms.urls.api_urls', namespace='api-perms')), path('perms/', include('perms.urls.api_urls', namespace='api-perms')),
path('terminal/v1/', include('terminal.urls.api_urls', namespace='api-terminal')), path('terminal/', include('terminal.urls.api_urls', namespace='api-terminal')),
path('ops/v1/', include('ops.urls.api_urls', namespace='api-ops')), path('ops/', include('ops.urls.api_urls', namespace='api-ops')),
path('audits/v1/', include('audits.urls.api_urls', namespace='api-audits')), path('audits/', include('audits.urls.api_urls', namespace='api-audits')),
path('orgs/v1/', include('orgs.urls.api_urls', namespace='api-orgs')), path('orgs/', include('orgs.urls.api_urls', namespace='api-orgs')),
path('settings/v1/', include('settings.urls.api_urls', namespace='api-settings')), path('settings/', include('settings.urls.api_urls', namespace='api-settings')),
path('authentication/v1/', include('authentication.urls.api_urls', namespace='api-auth')), path('authentication/', include('authentication.urls.api_urls', namespace='api-auth')),
path('common/v1/', include('common.urls.api_urls', namespace='api-common')), path('common/', include('common.urls.api_urls', namespace='api-common')),
path('applications/v1/', include('applications.urls.api_urls', namespace='api-applications')), path('applications/', include('applications.urls.api_urls', namespace='api-applications')),
] ]
api_v2 = [ api_v2 = [
path('terminal/v2/', include('terminal.urls.api_urls_v2', namespace='api-terminal-v2')), path('terminal/', include('terminal.urls.api_urls_v2', namespace='api-terminal-v2')),
path('users/v2/', include('users.urls.api_urls_v2', namespace='api-users-v2')), path('users/', include('users.urls.api_urls_v2', namespace='api-users-v2')),
] ]
...@@ -56,22 +56,22 @@ js_i18n_patterns = i18n_patterns( ...@@ -56,22 +56,22 @@ js_i18n_patterns = i18n_patterns(
) )
api_v1_patterns = [ api_v1_patterns = [
path('api/', include(api_v1)) path('api/v1/', include(api_v1))
] ]
api_v2_patterns = [ api_v2_patterns = [
path('api/', include(api_v2)) path('api/v2/', include(api_v2))
] ]
urlpatterns = [ urlpatterns = [
path('', IndexView.as_view(), name='index'), path('', IndexView.as_view(), name='index'),
path('', include(api_v2_patterns)), path('', include(api_v2_patterns)),
path('', include(api_v1_patterns)), path('', include(api_v1_patterns)),
re_path('api/(?P<version>\w+)/(?P<app>\w+)/.*', redirect_format_api),
path('api/health/', HealthCheckView.as_view(), name="health"), path('api/health/', HealthCheckView.as_view(), name="health"),
path('luna/', LunaView.as_view(), name='luna-view'), path('luna/', LunaView.as_view(), name='luna-view'),
path('i18n/<str:lang>/', I18NView.as_view(), name='i18n-switch'), path('i18n/<str:lang>/', I18NView.as_view(), name='i18n-switch'),
path('settings/', include('settings.urls.view_urls', namespace='settings')), path('settings/', include('settings.urls.view_urls', namespace='settings')),
# path('api/v2/', include(api_v2_patterns)),
# External apps url # External apps url
path('captcha/', include('captcha.urls')), path('captcha/', include('captcha.urls')),
......
# Generated by Django 2.1.7 on 2019-07-24 12:02
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ops', '0006_auto_20190318_1023'),
]
operations = [
migrations.AlterField(
model_name='adhoc',
name='_become',
field=models.CharField(blank=True, default='', max_length=1024, verbose_name='Become'),
),
migrations.AlterField(
model_name='adhoc',
name='created_by',
field=models.CharField(blank=True, default='', max_length=64, null=True, verbose_name='Create by'),
),
migrations.AlterField(
model_name='adhoc',
name='run_as',
field=models.CharField(blank=True, default='', max_length=64, null=True, verbose_name='Username'),
),
]
# Generated by Django 2.1.7 on 2019-07-24 07:25
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0022_auto_20190625_1105'),
]
operations = [
migrations.AlterField(
model_name='user',
name='created_by',
field=models.CharField(blank=True, default='', max_length=30, verbose_name='Created by'),
),
]
...@@ -81,3 +81,4 @@ django-radius==1.3.3 ...@@ -81,3 +81,4 @@ django-radius==1.3.3
ipip-ipdb==1.2.1 ipip-ipdb==1.2.1
django-redis-sessions==0.6.1 django-redis-sessions==0.6.1
unicodecsv==0.14.1 unicodecsv==0.14.1
httpsig==1.3.0
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