# 更新接口role

This commit is contained in:
xianfuxing 2018-10-11 13:59:53 +08:00
parent 8b35461dda
commit a72be66046
3 changed files with 41 additions and 11 deletions

View File

@ -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:

View File

@ -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

View File

@ -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)