from rest_framework.viewsets import GenericViewSet from .models import DeviceInfo from .mixins.role import RoleMixin class BaseDeviceViewSet(RoleMixin, GenericViewSet): def get_queryset(self, *args, **kwargs): user_roles = self.get_role() queryset = DeviceInfo.objects.get_queryset().order_by('-last_offline_time') if 'staff' in user_roles or 'manager' in user_roles: child = self.request.user.get_child() device_ids = [query.device_id for query in queryset if query.org == self.request.user.org or query.org.id in child] queryset = queryset.filter(device_id__in=device_ids) device_id = self.request.GET.get('device_id') device_status = self.request.GET.get('status') if device_id: queryset = queryset.filter(device_id__icontains=device_id) if device_status: queryset = queryset.filter(online=int(status)) return queryset