diff --git a/apps/counter/api/serializers.py b/apps/counter/api/serializers.py index 6656ba6..7167df4 100644 --- a/apps/counter/api/serializers.py +++ b/apps/counter/api/serializers.py @@ -9,6 +9,7 @@ from mosquito.models import MosqPostStatistic, DevicePostStatistic class DeviceCountSerializer(serializers.ModelSerializer): + device_name = serializers.SerializerMethodField() mosq_count = serializers.SerializerMethodField() signal = serializers.SerializerMethodField() energy = serializers.SerializerMethodField() @@ -19,6 +20,7 @@ class DeviceCountSerializer(serializers.ModelSerializer): fields = [ 'id', 'device_id', + 'device_name', 'signal', 'mosq_count', 'energy', @@ -39,6 +41,13 @@ class DeviceCountSerializer(serializers.ModelSerializer): def get_calc_time(self, obj): return obj.data_time.strftime('%Y-%m-%d %H:%M:%S') + def get_device_name(self, obj): + qs = CelexDeviceInfo.objects.filter(device_id=obj.device_id) + if qs.count() > 0: + device = qs[0] + return device.device_name + return None + class DeviceInfoSerializer(serializers.ModelSerializer): device_name = serializers.SerializerMethodField() diff --git a/apps/counter/api/views.py b/apps/counter/api/views.py index 8efd8cf..19bedd9 100644 --- a/apps/counter/api/views.py +++ b/apps/counter/api/views.py @@ -15,6 +15,7 @@ from rest_framework.filters import SearchFilter, OrderingFilter from mosquito.api.pagination import ( PostLimitOffsetPagination, PostPageNumberPagination, + DeviceLogListPagination, DeviceLogHistoryPagination ) from .serializers import ( @@ -32,7 +33,7 @@ class DeviceLogListAPIView(ListAPIView, RoleMixin, DeviceListMixin): serializer_class = DeviceCountSerializer permission_classes = [IsAuthenticated] filter_backends = [SearchFilter, OrderingFilter] - pagination_class = PostPageNumberPagination + pagination_class = DeviceLogListPagination search_fields = ['device_id'] def get_queryset(self, *args, **kwargs): diff --git a/apps/mosquito/api/pagination.py b/apps/mosquito/api/pagination.py index 9c2e05c..09c94d2 100644 --- a/apps/mosquito/api/pagination.py +++ b/apps/mosquito/api/pagination.py @@ -10,6 +10,13 @@ class PostPageNumberPagination(PageNumberPagination): page_size = 10 +class DeviceLogListPagination(PageNumberPagination): + page_size = 10 + page_size_query_param = 'limit' + page_query_param = 'page' + max_page_size = 1000 + + class DeviceLogHistoryPagination(PageNumberPagination): page_size = 10 page_size_query_param = 'limit'