# 更新接口role
This commit is contained in:
parent
8b35461dda
commit
a72be66046
|
@ -19,11 +19,12 @@ from .serializers import (
|
||||||
LogHistorySerializer,
|
LogHistorySerializer,
|
||||||
DeviceLogHistorySerializer,
|
DeviceLogHistorySerializer,
|
||||||
)
|
)
|
||||||
|
from ..mixins.role import RoleMixin, DeviceListMixin
|
||||||
from ..models import DeviceCount, DeviceInfo
|
from ..models import DeviceCount, DeviceInfo
|
||||||
from mosquito.models import MosqPostStatistic, DevicePostStatistic
|
from mosquito.models import MosqPostStatistic, DevicePostStatistic
|
||||||
|
|
||||||
|
|
||||||
class DeviceLogListAPIView(ListAPIView):
|
class DeviceLogListAPIView(ListAPIView, RoleMixin, DeviceListMixin):
|
||||||
serializer_class = DeviceCountSerializer
|
serializer_class = DeviceCountSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
filter_backends = [SearchFilter, OrderingFilter]
|
filter_backends = [SearchFilter, OrderingFilter]
|
||||||
|
@ -31,14 +32,19 @@ class DeviceLogListAPIView(ListAPIView):
|
||||||
search_fields = ['device_id']
|
search_fields = ['device_id']
|
||||||
|
|
||||||
def get_queryset(self, *args, **kwargs):
|
def get_queryset(self, *args, **kwargs):
|
||||||
|
user_roles = self.get_role()
|
||||||
queryset_list = DeviceCount.objects.get_queryset().order_by('-data_time')
|
queryset_list = DeviceCount.objects.get_queryset().order_by('-data_time')
|
||||||
|
if 'staff' in user_roles or 'admin' 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]
|
||||||
|
queryset_list = queryset_list.filter(device_id__in=device_ids)
|
||||||
device_id = self.request.GET.get('device_id')
|
device_id = self.request.GET.get('device_id')
|
||||||
if device_id:
|
if device_id:
|
||||||
queryset_list = queryset_list.filter(device_id__icontains=device_id)
|
queryset_list = queryset_list.filter(device_id__icontains=device_id)
|
||||||
return queryset_list
|
return queryset_list
|
||||||
|
|
||||||
|
|
||||||
class DeviceInfoListAPIView(ListAPIView):
|
class DeviceInfoListAPIView(ListAPIView, RoleMixin):
|
||||||
serializer_class = DeviceInfoSerializer
|
serializer_class = DeviceInfoSerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
filter_backends = [SearchFilter, OrderingFilter]
|
filter_backends = [SearchFilter, OrderingFilter]
|
||||||
|
@ -46,12 +52,11 @@ class DeviceInfoListAPIView(ListAPIView):
|
||||||
search_fields = ['device_id', 'online']
|
search_fields = ['device_id', 'online']
|
||||||
|
|
||||||
def get_queryset(self, *args, **kwargs):
|
def get_queryset(self, *args, **kwargs):
|
||||||
user = self.request.user
|
user_roles = self.get_role()
|
||||||
user_roles = user.role.split(',')
|
|
||||||
queryset_list = DeviceInfo.objects.get_queryset().order_by('-online')
|
queryset_list = DeviceInfo.objects.get_queryset().order_by('-online')
|
||||||
if 'staff' in user_roles or 'admin' in user_roles:
|
if 'staff' in user_roles or 'admin' in user_roles:
|
||||||
queryset_ids = [query.device_id for query in queryset_list if query.org == user.org]
|
device_ids = [query.device_id for query in queryset_list if query.org == self.request.user.org]
|
||||||
queryset_list = queryset_list.filter(device_id__in=queryset_ids)
|
queryset_list = queryset_list.filter(device_id__in=device_ids)
|
||||||
device_id = self.request.GET.get('device_id')
|
device_id = self.request.GET.get('device_id')
|
||||||
status = self.request.GET.get('status')
|
status = self.request.GET.get('status')
|
||||||
|
|
||||||
|
@ -116,7 +121,7 @@ class LogHistoryListAPIView(ListAPIView):
|
||||||
queryset = MosqPostStatistic.objects.all().order_by('-date')
|
queryset = MosqPostStatistic.objects.all().order_by('-date')
|
||||||
|
|
||||||
|
|
||||||
class DeviceLogHistoryListAPIView(ListAPIView):
|
class DeviceLogHistoryListAPIView(ListAPIView, RoleMixin, DeviceListMixin):
|
||||||
serializer_class = DeviceLogHistorySerializer
|
serializer_class = DeviceLogHistorySerializer
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
filter_backends = [SearchFilter, OrderingFilter]
|
filter_backends = [SearchFilter, OrderingFilter]
|
||||||
|
@ -131,12 +136,13 @@ class DeviceLogHistoryListAPIView(ListAPIView):
|
||||||
# return queryset_list
|
# return queryset_list
|
||||||
|
|
||||||
def get_queryset(self, *args, **kwargs):
|
def get_queryset(self, *args, **kwargs):
|
||||||
user = self.request.user
|
user_roles = self.get_role()
|
||||||
user_roles = user.role.split(',')
|
|
||||||
queryset_list = DevicePostStatistic.objects.get_queryset().order_by('-date')
|
queryset_list = DevicePostStatistic.objects.get_queryset().order_by('-date')
|
||||||
|
|
||||||
if 'staff' in user_roles or 'admin' in user_roles:
|
if 'staff' in user_roles or 'admin' in user_roles:
|
||||||
queryset_ids = [query.device_id for query in queryset_list if query.org == user.org]
|
device_list = self.get_device_list()
|
||||||
queryset_list = queryset_list.filter(device_id__in=queryset_ids)
|
device_ids = [query.device_id for query in device_list if query.org == self.request.user.org]
|
||||||
|
queryset_list = queryset_list.filter(device_id__in=device_ids)
|
||||||
device_id = self.request.GET.get('device_id')
|
device_id = self.request.GET.get('device_id')
|
||||||
|
|
||||||
if device_id:
|
if device_id:
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
from counter.models import DeviceInfo
|
||||||
|
|
||||||
|
|
||||||
|
class RoleMixin(object):
|
||||||
|
def get_role(self):
|
||||||
|
user = self.request.user
|
||||||
|
user_roles = user.role.split(',')
|
||||||
|
|
||||||
|
return user_roles
|
||||||
|
|
||||||
|
|
||||||
|
class DeviceListMixin(object):
|
||||||
|
def get_device_list(self):
|
||||||
|
device_list = DeviceInfo.objects.get_queryset().order_by('-online')
|
||||||
|
|
||||||
|
return device_list
|
|
@ -26,6 +26,14 @@ class DeviceCount(models.Model):
|
||||||
verbose_name = '设备数据'
|
verbose_name = '设备数据'
|
||||||
verbose_name_plural = verbose_name
|
verbose_name_plural = verbose_name
|
||||||
|
|
||||||
|
@property
|
||||||
|
def org(self):
|
||||||
|
try:
|
||||||
|
device_info2 = DeviceInfo2.objects.get(device_id=self.device_id)
|
||||||
|
return device_info2.org
|
||||||
|
except DeviceInfo2.DoesNotExist:
|
||||||
|
raise
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return '{0} at {1}'.format(self.device_id, self.data_time)
|
return '{0} at {1}'.format(self.device_id, self.data_time)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue