# 优化代码组织

This commit is contained in:
xianfuxing 2020-05-27 11:15:40 +08:00
parent 5a45cd6a17
commit a2b1d35ceb
3 changed files with 28 additions and 27 deletions

View File

@ -33,15 +33,15 @@ class DeviceLogListAPIView(ListAPIView, RoleMixin, DeviceListMixin):
def get_queryset(self, *args, **kwargs): def get_queryset(self, *args, **kwargs):
user_roles = self.get_role() user_roles = self.get_role()
queryset_list = DeviceCount.objects.get_queryset().order_by('-data_time') queryset = DeviceCount.objects.get_queryset().order_by('-data_time')
if 'staff' in user_roles or 'admin' in user_roles: if 'staff' in user_roles or 'manager' in user_roles:
device_list = self.get_device_list() 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 device_list if query.org == self.request.user.org]
queryset_list = queryset_list.filter(device_id__in=device_ids) queryset = queryset.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 = queryset.filter(device_id__icontains=device_id)
return queryset_list return queryset
class DeviceInfoListAPIView(ListAPIView, RoleMixin): class DeviceInfoListAPIView(ListAPIView, RoleMixin):
@ -53,19 +53,19 @@ class DeviceInfoListAPIView(ListAPIView, RoleMixin):
def get_queryset(self, *args, **kwargs): def get_queryset(self, *args, **kwargs):
user_roles = self.get_role() user_roles = self.get_role()
queryset_list = DeviceInfo.objects.get_queryset().order_by('-online') queryset = DeviceInfo.objects.get_queryset().order_by('-online')
if 'staff' in user_roles or 'admin' in user_roles: if 'staff' in user_roles or 'manager' in user_roles:
device_ids = [query.device_id for query in queryset_list if query.org == self.request.user.org] device_ids = [query.device_id for query in queryset if query.org == self.request.user.org]
queryset_list = queryset_list.filter(device_id__in=device_ids) queryset = queryset.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')
if device_id: if device_id:
queryset_list = queryset_list.filter(device_id__icontains=device_id) queryset = queryset.filter(device_id__icontains=device_id)
if status: if status:
queryset_list = queryset_list.filter(online=int(status)) queryset = queryset.filter(online=int(status))
return queryset_list return queryset
class DeviceLogStatisticAPIView(APIView): class DeviceLogStatisticAPIView(APIView):
@ -138,15 +138,15 @@ class DeviceLogHistoryListAPIView(ListAPIView, RoleMixin, DeviceListMixin):
def get_queryset(self, *args, **kwargs): def get_queryset(self, *args, **kwargs):
user_roles = self.get_role() user_roles = self.get_role()
queryset_list = DevicePostStatistic.objects.get_queryset().order_by('-date')
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')
queryset = DevicePostStatistic.objects.get_queryset().order_by('-date')
if 'staff' in user_roles or 'manager' in user_roles:
devices = self.get_device_list()
device_ids = [device.device_id for device in devices if device.org == self.request.user.org]
queryset = queryset.filter(device_id__in=device_ids)
if device_id: if device_id:
queryset_list = queryset_list.filter(device_id__icontains=device_id) queryset = queryset.filter(device_id__icontains=device_id)
return queryset_list return queryset

View File

@ -11,6 +11,7 @@ class RoleMixin(object):
class DeviceListMixin(object): class DeviceListMixin(object):
@staticmethod
def get_device_list(self): def get_device_list(self):
if cache.has_key('device_list'): if cache.has_key('device_list'):
device_list = cache.get('device_list') device_list = cache.get('device_list')

View File

@ -7,7 +7,7 @@
# * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table # * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names. # Feel free to rename the models, but don't rename db_table values or field names.
from django.db import models from django.db import models
from mosquito.models import DeviceInfo as DeviceInfo2 from mosquito.models import DeviceInfo as CelexDeviceInfo
class DeviceCount(models.Model): class DeviceCount(models.Model):
@ -29,9 +29,9 @@ class DeviceCount(models.Model):
@property @property
def org(self): def org(self):
try: try:
device_info2 = DeviceInfo2.objects.get(device_id=self.device_id) celex_device = CelexDeviceInfo.objects.get(device_id=self.device_id)
return device_info2.org return celex_device.org
except DeviceInfo2.DoesNotExist: except CelexDeviceInfo.DoesNotExist:
raise raise
def __str__(self): def __str__(self):
@ -63,9 +63,9 @@ class DeviceInfo(models.Model):
@property @property
def org(self): def org(self):
try: try:
device_info2 = DeviceInfo2.objects.get(device_id=self.device_id) celex_device = CelexDeviceInfo.objects.get(device_id=self.device_id)
return device_info2.org return celex_device.org
except DeviceInfo2.DoesNotExist: except CelexDeviceInfo.DoesNotExist:
raise raise
def __str__(self): def __str__(self):