Update some api

This commit is contained in:
ibuler 2016-12-28 00:28:52 +08:00
parent d56f030dc4
commit d80fec6e60
8 changed files with 25 additions and 16 deletions

View File

@ -12,7 +12,7 @@ from rest_framework.decorators import api_view
from .models import Terminal, TerminalHeatbeat from .models import Terminal, TerminalHeatbeat
from .serializers import TerminalSerializer, TerminalHeatbeatSerializer from .serializers import TerminalSerializer, TerminalHeatbeatSerializer
from .hands import IsSuperUserOrAppUser, User from .hands import IsSuperUserOrAppUser, IsAppUser, User
from common.utils import get_object_or_none from common.utils import get_object_or_none
@ -39,7 +39,8 @@ class TerminalRegisterView(ListCreateAPIView):
data['access_key_secret'] = access_key.secret data['access_key_secret'] = access_key.secret
return Response(data, status=201) return Response(data, status=201)
else: 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): def list(self, request, *args, **kwargs):
return Response('', status=404) return Response('', status=404)
@ -57,10 +58,16 @@ class TerminalViewSet(viewsets.ModelViewSet):
class TerminalHeatbeatViewSet(viewsets.ModelViewSet): class TerminalHeatbeatViewSet(viewsets.ModelViewSet):
queryset = TerminalHeatbeat.objects.all() queryset = TerminalHeatbeat.objects.all()
serializer_class = TerminalHeatbeatSerializer serializer_class = TerminalHeatbeatSerializer
permission_classes = (IsSuperUserOrAppUser,) permission_classes = (IsAppUser,)
def create(self, request, *args, **kwargs): def create(self, request, *args, **kwargs):
terminal = request.user terminal = request.user.terminal
TerminalHeatbeat.objects.create(terminal=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'})

View File

@ -2,5 +2,5 @@
# #
from users.models import User from users.models import User
from users.permissions import IsSuperUserOrAppUser from users.permissions import IsSuperUserOrAppUser, IsAppUser
from audits.models import ProxyLog from audits.models import ProxyLog

View File

@ -14,7 +14,7 @@ class Terminal(models.Model):
name = models.CharField(max_length=30, unique=True, verbose_name=_('Name')) name = models.CharField(max_length=30, unique=True, verbose_name=_('Name'))
remote_addr = models.GenericIPAddressField(verbose_name=_('Remote address'), blank=True, null=True) 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')) 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')) url = models.CharField(max_length=100, blank=True, verbose_name=_('URL to login'))
is_accepted = models.BooleanField(default=False, verbose_name='Is Accepted') is_accepted = models.BooleanField(default=False, verbose_name='Is Accepted')
date_created = models.DateTimeField(auto_now_add=True) date_created = models.DateTimeField(auto_now_add=True)

View File

@ -10,11 +10,12 @@ from .. import api
app_name = 'applications' app_name = 'applications'
router = routers.DefaultRouter() 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/heatbeat', api.TerminalHeatbeatViewSet, 'terminal-heatbeat')
router.register(r'v1/terminal', api.TerminalViewSet, 'terminal')
urlpatterns = [ 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 urlpatterns += router.urls

View File

@ -51,6 +51,7 @@ class TerminalModelAccept(AdminUserRequiredMixin, JSONResponseMixin, UpdateView)
def form_valid(self, form): def form_valid(self, form):
terminal = form.save() terminal = form.save()
terminal.is_accepted = True terminal.is_accepted = True
terminal.is_active = True
terminal.save() terminal.save()
data = { data = {
'success': True, 'success': True,

View File

@ -14,12 +14,12 @@ router.register(r'v1/admin-user', api.AdminUserViewSet, 'admin-user')
router.register(r'v1/system-user', api.SystemUserViewSet, 'system-user') router.register(r'v1/system-user', api.SystemUserViewSet, 'system-user')
urlpatterns = [ 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<pk>[0-9]+)/assets/$', api.IDCAssetsApi.as_view(), name='api-idc-assets'), # url(r'^v1/idc/(?P<pk>[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/system-user/auth/', api.SystemUserAuthApi.as_view(), name='system-user-auth'),
url(r'^v1/assets/(?P<pk>\d+)/groups$', url(r'^v1/assets/(?P<pk>\d+)/groups/$',
api.AssetUpdateGroupApi.as_view(), name='asset-update-group'), api.AssetUpdateGroupApi.as_view(), name='asset-update-group'),
url(r'^v1/assets/(?P<pk>\d+)/system-users$', url(r'^v1/assets/(?P<pk>\d+)/system-users/$',
api.SystemUserUpdateApi.as_view(), name='asset-update-systemusers'), api.SystemUserUpdateApi.as_view(), name='asset-update-systemusers'),
] ]

View File

@ -7,8 +7,8 @@ app_name = 'audits'
router = routers.DefaultRouter() router = routers.DefaultRouter()
router.register(r'v1/proxy-log', api.ProxyLogViewSet, 'proxy-log') router.register(r'v1/proxy-log/', api.ProxyLogViewSet, 'proxy-log')
router.register(r'v1/command-log', api.CommandLogViewSet, 'command-log') router.register(r'v1/command-log/', api.CommandLogViewSet, 'command-log')
urlpatterns = router.urls urlpatterns = router.urls

View File

@ -28,7 +28,7 @@ class IsAppUser(IsValidUser, permissions.BasePermission):
def has_permission(self, request, view): def has_permission(self, request, view):
return super(IsAppUser, self).has_permission(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): class IsSuperUser(IsValidUser, permissions.BasePermission):