From 1a6597b572bf68d118b02c244f04c963c57e73bb Mon Sep 17 00:00:00 2001 From: ibuler Date: Wed, 10 Jun 2020 12:58:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9command=20filter?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/api/asset.py | 8 ++++++-- apps/assets/serializers/cmd_filter.py | 12 ++++++++++-- apps/common/drf/renders/csv.py | 1 + 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/apps/assets/api/asset.py b/apps/assets/api/asset.py index c5ee613e2..dee95ed06 100644 --- a/apps/assets/api/asset.py +++ b/apps/assets/api/asset.py @@ -77,9 +77,13 @@ class AssetPlatformViewSet(ModelViewSet): filter_fields = ['name', 'base'] search_fields = ['name'] + def get_permissions(self): + if self.request.method.lower() in ['get', 'options']: + self.permission_classes = (IsOrgAdmin,) + return super().get_permissions() + def check_object_permissions(self, request, obj): - if request.method.lower() in ['delete', 'put', 'patch'] and \ - obj.internal: + if request.method.lower() in ['delete', 'put', 'patch'] and obj.internal: self.permission_denied( request, message={"detail": "Internal platform"} ) diff --git a/apps/assets/serializers/cmd_filter.py b/apps/assets/serializers/cmd_filter.py index 6559a8189..5a045df9c 100644 --- a/apps/assets/serializers/cmd_filter.py +++ b/apps/assets/serializers/cmd_filter.py @@ -2,7 +2,6 @@ # import re from rest_framework import serializers -from django.utils.translation import ugettext_lazy as _ from common.fields import ChoiceDisplayField from common.serializers import AdaptedBulkListSerializer @@ -27,11 +26,20 @@ class CommandFilterSerializer(BulkOrgResourceModelSerializer): class CommandFilterRuleSerializer(BulkOrgResourceModelSerializer): - serializer_choice_field = ChoiceDisplayField + # serializer_choice_field = ChoiceDisplayField invalid_pattern = re.compile(r'[\.\*\+\[\\\?\{\}\^\$\|\(\)\#\<\>]') + type_display = serializers.ReadOnlyField(source='get_type_display') + action_display = serializers.ReadOnlyField(source='get_action_display') class Meta: model = CommandFilterRule + fields_mini = ['id'] + fields_small = fields_mini + [ + 'type', 'type_display', 'content', 'priority', + 'action', 'action_display', + 'comment', 'created_by', 'date_created', 'date_updated' + ] + fields_fk = ['filter'] fields = '__all__' list_serializer_class = AdaptedBulkListSerializer diff --git a/apps/common/drf/renders/csv.py b/apps/common/drf/renders/csv.py index fd862460f..0d90af359 100644 --- a/apps/common/drf/renders/csv.py +++ b/apps/common/drf/renders/csv.py @@ -30,6 +30,7 @@ class JMSCSVRender(BaseRenderer): @staticmethod def _gen_table(data, fields): + data = data[:100] yield ['*{}'.format(f.label) if f.required else f.label for f in fields] for item in data: