From d80fec6e6002f614e19159d64b2b7a3a46e738ed Mon Sep 17 00:00:00 2001 From: ibuler Date: Wed, 28 Dec 2016 00:28:52 +0800 Subject: [PATCH] Update some api --- apps/applications/api.py | 17 ++++++++++++----- apps/applications/hands.py | 2 +- apps/applications/models.py | 2 +- apps/applications/urls/api_urls.py | 5 +++-- apps/applications/views.py | 1 + apps/assets/urls/api_urls.py | 8 ++++---- apps/audits/urls/api_urls.py | 4 ++-- apps/users/permissions.py | 2 +- 8 files changed, 25 insertions(+), 16 deletions(-) diff --git a/apps/applications/api.py b/apps/applications/api.py index 7166c2b9b..48f06a806 100644 --- a/apps/applications/api.py +++ b/apps/applications/api.py @@ -12,7 +12,7 @@ from rest_framework.decorators import api_view from .models import Terminal, TerminalHeatbeat from .serializers import TerminalSerializer, TerminalHeatbeatSerializer -from .hands import IsSuperUserOrAppUser, User +from .hands import IsSuperUserOrAppUser, IsAppUser, User from common.utils import get_object_or_none @@ -39,7 +39,8 @@ class TerminalRegisterView(ListCreateAPIView): data['access_key_secret'] = access_key.secret return Response(data, status=201) else: - return Response(serializer.errors, status=400) + data = {'msg': 'Not valid', 'detail': ';'.join(serializer.errors)} + return Response(data, status=400) def list(self, request, *args, **kwargs): return Response('', status=404) @@ -57,10 +58,16 @@ class TerminalViewSet(viewsets.ModelViewSet): class TerminalHeatbeatViewSet(viewsets.ModelViewSet): queryset = TerminalHeatbeat.objects.all() serializer_class = TerminalHeatbeatSerializer - permission_classes = (IsSuperUserOrAppUser,) + permission_classes = (IsAppUser,) def create(self, request, *args, **kwargs): - terminal = request.user + terminal = request.user.terminal TerminalHeatbeat.objects.create(terminal=terminal) - return Response({'msg': 'Success'}) + return Response({'msg': 'Success'}, status=201) + + +class TestHeatbeat(APIView): + permission_classes = (IsAppUser,) + def post(self, request): + return Response({'hello': 'world'}) \ No newline at end of file diff --git a/apps/applications/hands.py b/apps/applications/hands.py index 193b548a5..cf5b643da 100644 --- a/apps/applications/hands.py +++ b/apps/applications/hands.py @@ -2,5 +2,5 @@ # from users.models import User -from users.permissions import IsSuperUserOrAppUser +from users.permissions import IsSuperUserOrAppUser, IsAppUser from audits.models import ProxyLog \ No newline at end of file diff --git a/apps/applications/models.py b/apps/applications/models.py index 649363574..fe08620e7 100644 --- a/apps/applications/models.py +++ b/apps/applications/models.py @@ -14,7 +14,7 @@ class Terminal(models.Model): name = models.CharField(max_length=30, unique=True, verbose_name=_('Name')) remote_addr = models.GenericIPAddressField(verbose_name=_('Remote address'), blank=True, null=True) type = models.CharField(choices=TYPE_CHOICES, max_length=3, blank=True, verbose_name=_('Terminal type')) - user = models.OneToOneField(User, verbose_name='Application user', null=True) + user = models.OneToOneField(User, related_name='terminal', verbose_name='Application user', null=True) url = models.CharField(max_length=100, blank=True, verbose_name=_('URL to login')) is_accepted = models.BooleanField(default=False, verbose_name='Is Accepted') date_created = models.DateTimeField(auto_now_add=True) diff --git a/apps/applications/urls/api_urls.py b/apps/applications/urls/api_urls.py index a3b466c72..a202de464 100644 --- a/apps/applications/urls/api_urls.py +++ b/apps/applications/urls/api_urls.py @@ -10,11 +10,12 @@ from .. import api app_name = 'applications' router = routers.DefaultRouter() -router.register(r'v1/terminal', api.TerminalViewSet, 'terminal') router.register(r'v1/terminal/heatbeat', api.TerminalHeatbeatViewSet, 'terminal-heatbeat') +router.register(r'v1/terminal', api.TerminalViewSet, 'terminal') urlpatterns = [ - url(r'v1/terminal/register$', api.TerminalRegisterView.as_view(), name='terminal-register') + url(r'^v1/terminal/register/$', api.TerminalRegisterView.as_view(), name='terminal-register'), + # url(r'^v1/terminal/heatbeat/$', api.TestHeatbeat.as_view()) ] urlpatterns += router.urls \ No newline at end of file diff --git a/apps/applications/views.py b/apps/applications/views.py index 3b083c15e..70bbd27cb 100644 --- a/apps/applications/views.py +++ b/apps/applications/views.py @@ -51,6 +51,7 @@ class TerminalModelAccept(AdminUserRequiredMixin, JSONResponseMixin, UpdateView) def form_valid(self, form): terminal = form.save() terminal.is_accepted = True + terminal.is_active = True terminal.save() data = { 'success': True, diff --git a/apps/assets/urls/api_urls.py b/apps/assets/urls/api_urls.py index 77613bdce..6e0a2b2c7 100644 --- a/apps/assets/urls/api_urls.py +++ b/apps/assets/urls/api_urls.py @@ -14,12 +14,12 @@ router.register(r'v1/admin-user', api.AdminUserViewSet, 'admin-user') router.register(r'v1/system-user', api.SystemUserViewSet, 'system-user') urlpatterns = [ - url(r'^v1/assets_bulk$', api.AssetListUpdateApi.as_view(), name='asset-bulk-update'), + url(r'^v1/assets_bulk/$', api.AssetListUpdateApi.as_view(), name='asset-bulk-update'), # url(r'^v1/idc/(?P[0-9]+)/assets/$', api.IDCAssetsApi.as_view(), name='api-idc-assets'), - url(r'^v1/system-user/auth', api.SystemUserAuthApi.as_view(), name='system-user-auth'), - url(r'^v1/assets/(?P\d+)/groups$', + url(r'^v1/system-user/auth/', api.SystemUserAuthApi.as_view(), name='system-user-auth'), + url(r'^v1/assets/(?P\d+)/groups/$', api.AssetUpdateGroupApi.as_view(), name='asset-update-group'), - url(r'^v1/assets/(?P\d+)/system-users$', + url(r'^v1/assets/(?P\d+)/system-users/$', api.SystemUserUpdateApi.as_view(), name='asset-update-systemusers'), ] diff --git a/apps/audits/urls/api_urls.py b/apps/audits/urls/api_urls.py index 2aa429fd0..84384cb7d 100644 --- a/apps/audits/urls/api_urls.py +++ b/apps/audits/urls/api_urls.py @@ -7,8 +7,8 @@ app_name = 'audits' router = routers.DefaultRouter() -router.register(r'v1/proxy-log', api.ProxyLogViewSet, 'proxy-log') -router.register(r'v1/command-log', api.CommandLogViewSet, 'command-log') +router.register(r'v1/proxy-log/', api.ProxyLogViewSet, 'proxy-log') +router.register(r'v1/command-log/', api.CommandLogViewSet, 'command-log') urlpatterns = router.urls diff --git a/apps/users/permissions.py b/apps/users/permissions.py index 68d446089..4b2047951 100644 --- a/apps/users/permissions.py +++ b/apps/users/permissions.py @@ -28,7 +28,7 @@ class IsAppUser(IsValidUser, permissions.BasePermission): def has_permission(self, request, view): return super(IsAppUser, self).has_permission(request, view) \ - and request.user.is_app() + and request.user.is_app class IsSuperUser(IsValidUser, permissions.BasePermission): -- GitLab