Finish user detail

This commit is contained in:
ibuler
2016-11-10 22:06:23 +08:00
parent 69f2bf664b
commit f70abec5ef
12 changed files with 192 additions and 249 deletions

View File

@@ -2,13 +2,13 @@
#
from rest_framework.views import APIView, Response
from rest_framework.generics import ListCreateAPIView
from rest_framework.generics import ListAPIView
from rest_framework import viewsets
from users.backends import IsValidUser, IsSuperUser
from common.utils import get_object_or_none
from .utils import get_user_granted_assets, get_user_granted_asset_groups, get_user_asset_permissions
from .models import AssetPermission
from .hands import User
from .hands import AssetGrantedSerializer, User, AssetGroup, Asset, AssetGroup
from . import serializers
@@ -21,7 +21,6 @@ class AssetPermissionViewSet(viewsets.ModelViewSet):
queryset = super(AssetPermissionViewSet, self).get_queryset()
user_id = self.request.query_params.get('user', '')
if user_id and user_id.isdigit():
from users.models import User
self.user_id = user_id
user = get_object_or_none(User, id=int(user_id))
if user:
@@ -43,12 +42,8 @@ class RevokeUserAssetPermission(APIView):
user_id = str(request.data.get('user_id', ''))
if permission_id and user_id and permission_id.isdigit() and user_id.isdigit():
permission_id = int(permission_id)
user_id = int(user_id)
asset_permission = get_object_or_none(AssetPermission, id=permission_id)
user = get_object_or_none(User, id=user_id)
print(asset_permission)
print(user)
asset_permission = get_object_or_none(AssetPermission, id=int(permission_id))
user = get_object_or_none(User, id=int(user_id))
if asset_permission and user:
asset_permission.users.remove(user)
@@ -56,33 +51,16 @@ class RevokeUserAssetPermission(APIView):
return Response({'msg': 'failed'}, status=404)
class UserAssetsApi(APIView):
class UserAssetsApi(ListAPIView):
permission_classes = (IsValidUser,)
serializer_class = AssetGrantedSerializer
def get(self, request, *args, **kwargs):
assets_json = []
user = request.user
def get_queryset(self):
user = self.request.user
if user:
assets = get_user_granted_assets(user)
for asset, system_users in assets.items():
assets_json.append({
'id': asset.id,
'hostname': asset.hostname,
'ip': asset.ip,
'port': asset.port,
'system_users': [
{
'id': system_user.id,
'name': system_user.name,
'username': system_user.username,
} for system_user in system_users
],
'comment': asset.comment
})
return Response(assets_json, status=200)
queryset = get_user_granted_assets(user)
return queryset
return []
class UserAssetsGroupsApi(APIView):
@@ -97,46 +75,31 @@ class UserAssetsGroupsApi(APIView):
for asset in assets:
for asset_group in asset.groups.all():
if asset_group.id in asset_groups:
asset_groups[asset_group.id]['asset_num'] += 1
asset_groups[asset_group.id]['asset_amount'] += 1
else:
asset_groups[asset_group.id] = {
'id': asset_group.id,
'name': asset_group.name,
'comment': asset_group.comment,
'asset_num': 1
'asset_amount': 1
}
asset_groups_json = asset_groups.values()
return Response(asset_groups_json, status=200)
class UserAssetsGroupAssetsApi(APIView):
class UserAssetsGroupAssetsApi(ListAPIView):
permission_classes = (IsValidUser,)
serializer_class = AssetGrantedSerializer
def get(self, request, *args, **kwargs):
# asset_group_id = request.query_params.get('asset_group_id', -1)
asset_group_id = kwargs.get('pk', -1)
# asset_group_name = request.query_params.get('asset_group_name', '')
user = request.user
assets_json = []
def get_queryset(self):
queryset = []
asset_group_id = self.kwargs.get('pk', -1)
user = self.request.user
asset_group = get_object_or_none(AssetGroup, id=asset_group_id)
if user:
if user and asset_group:
assets = get_user_granted_assets(user)
for asset, system_users in assets.items():
for asset_group in asset.groups.all():
if str(asset_group.id) == asset_group_id: # and asset_group.name == asset_group_name:
assets_json.append({
'id': asset.id,
'hostname': asset.hostname,
'ip': asset.ip,
'port': asset.port,
'system_users': [
{
'id': system_user.id,
'name': system_user.name,
'username': system_user.username,
} for system_user in system_users
],
'comment': asset.comment
})
return Response(assets_json, status=200)
for asset in assets:
if asset_group in asset.groups.all():
queryset.append(asset)
return queryset