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