修复设备帅选的逻辑bug

This commit is contained in:
VIJAY\vijay 2022-08-29 11:19:14 +08:00
parent 14a0c60778
commit 56cc550134
2 changed files with 7 additions and 8 deletions

View File

@ -23,9 +23,9 @@ class DeviceListMixin(object):
return device_list return device_list
class WeatherStationDeviceListMixin(object): class WeatherStationListMixin(object):
@staticmethod @staticmethod
def get_device_list(): def get_weather_station_list():
if cache.get('device_list'): if cache.get('device_list'):
device_list = cache.get('device_list') device_list = cache.get('device_list')
else: else:

View File

@ -14,8 +14,8 @@ from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.permissions import IsAuthenticated from rest_framework.permissions import IsAuthenticated
from rest_framework.filters import SearchFilter, OrderingFilter from rest_framework.filters import SearchFilter, OrderingFilter
from django.db.models import Q from django.db.models import Q
from counter.mixins.role import RoleMixin, DeviceListMixin, WeatherStationDeviceListMixin from counter.mixins.role import RoleMixin, DeviceListMixin, WeatherStationListMixin
from ..models import Mosquito, MosqPost, DeviceTempLog, WeatherLog from ..models import Mosquito, MosqPost, DeviceTempLog, WeatherLog, WeatherStationInfo
from .pagination import PostLimitOffsetPagination, DeviceLogHistoryPagination, WeatherlogHistoryPagination from .pagination import PostLimitOffsetPagination, DeviceLogHistoryPagination, WeatherlogHistoryPagination
from .serializers import ( from .serializers import (
MosqListSerializer, MosqListSerializer,
@ -106,7 +106,7 @@ class DeviceTempLogListAPIView(ListAPIView, RoleMixin, DeviceListMixin):
return queryset return queryset
class WeatherLogListAPIView(ListAPIView, RoleMixin, WeatherStationDeviceListMixin): class WeatherLogListAPIView(ListAPIView, RoleMixin, WeatherStationListMixin):
serializer_class = WeatherLogSerializer serializer_class = WeatherLogSerializer
permission_classes = [IsAuthenticated] permission_classes = [IsAuthenticated]
filter_backends = (DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter) filter_backends = (DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter)
@ -121,12 +121,11 @@ class WeatherLogListAPIView(ListAPIView, RoleMixin, WeatherStationDeviceListMixi
start = self.request.GET.get('start') start = self.request.GET.get('start')
end = self.request.GET.get('end') end = self.request.GET.get('end')
queryset = WeatherLog.objects.get_queryset().order_by('-data_time') queryset = WeatherLog.objects.get_queryset().order_by('-data_time')
queryset_info = WeatherStationInfo.objects.get_queryset().order_by('device_id')
if 'staff' in user_roles or 'manager' in user_roles: if 'staff' in user_roles or 'manager' in user_roles:
device_list = self.get_device_list() device_ids = [query.device_id for query in queryset_info if query.org == self.request.user.org]
device_ids = [query.device_id for query in device_list if query.org == self.request.user.org]
queryset = queryset.filter(device_id__in=device_ids) queryset = queryset.filter(device_id__in=device_ids)
if device: if device:
# device_id or device_name # device_id or device_name
qs = queryset.filter(device_id__icontains=device) qs = queryset.filter(device_id__icontains=device)