# up device statistic panel withe role permission

This commit is contained in:
xianfuxing 2018-10-11 18:35:56 +08:00
parent a72be66046
commit 8eb5027b8f
2 changed files with 18 additions and 12 deletions

View File

@ -84,7 +84,6 @@ class DeviceLogStatisticAPIView(APIView):
# calc daily count, put it in redis as cache.
if cache.has_key('daily_count'):
daily_count = cache.get('daily_count')
pass
else:
tz = pytz.timezone("UTC")
today = datetime.now(tz).date()
@ -102,12 +101,21 @@ class DeviceLogStatisticAPIView(APIView):
return Response(data)
class DeviceInfoStatisticAPIView(APIView):
class DeviceInfoStatisticAPIView(APIView, RoleMixin):
permission_classes = [IsAuthenticated]
def get(self, request, *args, **kwargs):
online_count = DeviceInfo.objects.filter(online=1).count()
offline_count = DeviceInfo.objects.filter(online=0).count()
user_roles = self.get_role()
online_devices = DeviceInfo.objects.filter(online=1)
offline_devices = DeviceInfo.objects.filter(online=0)
if 'staff' in user_roles or 'admin' in user_roles:
online_ids = [query.device_id for query in online_devices if query.org == self.request.user.org]
offline_ids = [query.device_id for query in offline_devices if query.org == self.request.user.org]
online_devices = online_devices.filter(device_id__in=online_ids)
offline_devices = offline_devices.filter(device_id__in=offline_ids)
online_count = online_devices.count()
offline_count = offline_devices.count()
data = {'online_count': online_count, 'offline_count': offline_count}
return Response(data)
@ -128,13 +136,6 @@ class DeviceLogHistoryListAPIView(ListAPIView, RoleMixin, DeviceListMixin):
pagination_class = PostPageNumberPagination
search_fields = ['device_id', 'date']
# def get_queryset(self, *args, **kwargs):
# queryset_list = DevicePostStatistic.objects.get_queryset().order_by('-date')
# device_id = self.request.GET.get('device_id')
# if device_id:
# queryset_list = queryset_list.filter(device_id__icontains=device_id)
# return queryset_list
def get_queryset(self, *args, **kwargs):
user_roles = self.get_role()
queryset_list = DevicePostStatistic.objects.get_queryset().order_by('-date')

View File

@ -1,3 +1,4 @@
from django.core.cache import cache
from counter.models import DeviceInfo
@ -11,6 +12,10 @@ class RoleMixin(object):
class DeviceListMixin(object):
def get_device_list(self):
if cache.has_key('device_list'):
device_list = cache.get('device_list')
else:
device_list = DeviceInfo.objects.get_queryset().order_by('-online')
cache.set('device_list', device_list, 60 * 60)
return device_list