From 6e843533cb2b63026f7b663dac3be836eef37791 Mon Sep 17 00:00:00 2001 From: ibuler Date: Fri, 25 Nov 2016 11:00:51 +0800 Subject: [PATCH] Base finish user --- apps/assets/api.py | 6 +++--- apps/assets/serializers.py | 2 +- apps/common/mixins.py | 2 +- apps/users/api.py | 21 ++------------------- apps/users/serializers.py | 10 ---------- apps/users/templates/users/user_list.html | 2 +- apps/users/views.py | 2 -- 7 files changed, 8 insertions(+), 37 deletions(-) diff --git a/apps/assets/api.py b/apps/assets/api.py index 1b746da46..896aadc88 100644 --- a/apps/assets/api.py +++ b/apps/assets/api.py @@ -6,14 +6,14 @@ from rest_framework.views import APIView from rest_framework_bulk import BulkListSerializer, BulkSerializerMixin, ListBulkCreateUpdateDestroyAPIView from django.shortcuts import get_object_or_404 -from common.mixins import BulkDeleteApiMixin +from common.mixins import IDInFilterMixin from common.utils import get_object_or_none, signer from .hands import IsSuperUserOrTerminalUser, IsSuperUser from .models import AssetGroup, Asset, IDC, SystemUser, AdminUser from . import serializers -class AssetViewSet(viewsets.ModelViewSet): +class AssetViewSet(IDInFilterMixin, viewsets.ModelViewSet): """API endpoint that allows Asset to be viewed or edited.""" queryset = Asset.objects.all() serializer_class = serializers.AssetSerializer @@ -71,7 +71,7 @@ class SystemUserViewSet(viewsets.ModelViewSet): # return self.object.assets.all() -class AssetListUpdateApi(BulkDeleteApiMixin, ListBulkCreateUpdateDestroyAPIView): +class AssetListUpdateApi(IDInFilterMixin, ListBulkCreateUpdateDestroyAPIView): queryset = Asset.objects.all() serializer_class = serializers.AssetSerializer permission_classes = (IsSuperUser,) diff --git a/apps/assets/serializers.py b/apps/assets/serializers.py index e035d58e4..0bc7a70c8 100644 --- a/apps/assets/serializers.py +++ b/apps/assets/serializers.py @@ -2,7 +2,7 @@ from django.utils.translation import ugettext_lazy as _ from rest_framework import viewsets, serializers,generics from .models import AssetGroup, Asset, IDC, AssetExtend, AdminUser, SystemUser -from common.mixins import BulkDeleteApiMixin +from common.mixins import IDInFilterMixin from rest_framework_bulk import BulkListSerializer, BulkSerializerMixin diff --git a/apps/common/mixins.py b/apps/common/mixins.py index 892b0fae6..6a69221c5 100644 --- a/apps/common/mixins.py +++ b/apps/common/mixins.py @@ -46,7 +46,7 @@ class JSONResponseMixin(object): return JsonResponse(context) -class BulkDeleteApiMixin(object): +class IDInFilterMixin(object): def filter_queryset(self, queryset): id_list = self.request.query_params.get('id__in') diff --git a/apps/users/api.py b/apps/users/api.py index 46ebfbea1..156eab025 100644 --- a/apps/users/api.py +++ b/apps/users/api.py @@ -15,7 +15,7 @@ from rest_framework import authentication import django_filters from django_filters.rest_framework import DjangoFilterBackend -from common.mixins import BulkDeleteApiMixin +from common.mixins import IDInFilterMixin from common.utils import get_logger from .utils import check_user_valid, token_gen from .models import User, UserGroup @@ -27,29 +27,12 @@ from . import serializers logger = get_logger(__name__) -class IDInFilter(django_filters.rest_framework.FilterSet): - id__in = django_filters.CharFilter(method='in_filter') - - class Meta: - model = User - fields = ['id__in'] - - def in_filter(self, queryset, name, value): - try: - value = json.loads(value) - except ValueError: - value = [] - return queryset.filter(**{name+'__in': value}) - - -class UserViewSet(BulkModelViewSet): +class UserViewSet(IDInFilterMixin, BulkModelViewSet): queryset = User.objects.all() serializer_class = serializers.UserSerializer permission_classes = (IsSuperUser,) filter_backends = (DjangoFilterBackend,) filter_fields = ('username', 'email', 'name', 'id') - filter_class = IDInFilter - ordering_fields = ('username', 'email') class UserUpdateGroupApi(generics.RetrieveUpdateAPIView): diff --git a/apps/users/serializers.py b/apps/users/serializers.py index 48fc820c6..92839e311 100644 --- a/apps/users/serializers.py +++ b/apps/users/serializers.py @@ -9,12 +9,6 @@ from common.utils import signer, validate_ssh_public_key from .models import User, UserGroup -# class UserDetailSerializer(BulkSerializerMixin, serializers.ModelSerializer): -# class Meta: -# model = User -# fields = ['avatar', 'wechat', 'phone', 'enable_otp', 'comment', 'is_active', 'name'] - - class UserSerializer(BulkSerializerMixin, serializers.ModelSerializer): groups_display = serializers.SerializerMethodField() groups = serializers.PrimaryKeyRelatedField(many=True, queryset=UserGroup.objects.all()) @@ -33,10 +27,6 @@ class UserSerializer(BulkSerializerMixin, serializers.ModelSerializer): def get_groups_display(obj): return " ".join([group.name for group in obj.groups.all()]) - # @staticmethod - # def get_active_display(obj): - # return not (obj.is_expired and obj.is_active) - class UserPKUpdateSerializer(serializers.ModelSerializer): class Meta: diff --git a/apps/users/templates/users/user_list.html b/apps/users/templates/users/user_list.html index c6ad18efd..59c79feba 100644 --- a/apps/users/templates/users/user_list.html +++ b/apps/users/templates/users/user_list.html @@ -86,7 +86,7 @@ $(document).ready(function(){ } }}], ajax_url: '{% url "api-users:user-list" %}', - columns: [{data: "id"}, {data: "username" }, {data: "name" }, {data: "get_role_display" }, + columns: [{data: "id"}, {data: "name" }, {data: "username" }, {data: "get_role_display" }, {data: "groups_display" }, {data: "is_valid" }, {data: "id" }], op_html: $('#actions').html() }; diff --git a/apps/users/views.py b/apps/users/views.py index 022041325..f51bdd798 100644 --- a/apps/users/views.py +++ b/apps/users/views.py @@ -3,12 +3,10 @@ from __future__ import unicode_literals import json import uuid -import codecs from openpyxl import Workbook from openpyxl.writer.excel import save_virtual_workbook from openpyxl import load_workbook -import unicodecsv as csv from django import forms from django.utils import timezone from django.core.cache import cache