修复设备帅选的逻辑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
class WeatherStationDeviceListMixin(object):
class WeatherStationListMixin(object):
@staticmethod
def get_device_list():
def get_weather_station_list():
if cache.get('device_list'):
device_list = cache.get('device_list')
else:

View File

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