diff --git a/shiftflow/views.py b/shiftflow/views.py index 1136993..52b02e1 100644 --- a/shiftflow/views.py +++ b/shiftflow/views.py @@ -513,12 +513,7 @@ class RegistryView(LoginRequiredMixin, ListView): m_ids = [int(i) for i in self.request.GET.getlist('m_ids') if str(i).isdigit()] if m_ids: - ws_ids = list( - Machine.objects.filter(id__in=m_ids) - .exclude(workshop_id__isnull=True) - .values_list('workshop_id', flat=True) - ) - work_qs = work_qs.filter(Q(machine_id__in=m_ids) | Q(machine_id__isnull=True, workshop_id__in=ws_ids)) + work_qs = work_qs.filter(Q(machine_id__in=m_ids) | Q(machine_id__isnull=True)) filtered = self.request.GET.get('filtered') reset = self.request.GET.get('reset') @@ -553,12 +548,16 @@ class RegistryView(LoginRequiredMixin, ListView): work_qs = work_qs.filter(status__in=expanded) if role == 'operator': - user_machines = profile.machines.all() if profile else Machine.objects.none() - work_qs = work_qs.filter(machine__in=user_machines) + allowed_ws = list(profile.allowed_workshops.values_list('id', flat=True)) if profile else [] + if allowed_ws: + work_qs = work_qs.filter(Q(workshop_id__in=allowed_ws) | Q(machine__workshop_id__in=allowed_ws)) + else: + user_machines = profile.machines.all() if profile else Machine.objects.none() + work_qs = work_qs.filter(machine__in=user_machines) elif role == 'master': allowed_ws = list(profile.allowed_workshops.values_list('id', flat=True)) if profile else [] if allowed_ws: - work_qs = work_qs.filter(Q(machine__workshop_id__in=allowed_ws) | Q(machine_id__isnull=True, workshop_id__in=allowed_ws)) + work_qs = work_qs.filter(Q(workshop_id__in=allowed_ws) | Q(machine__workshop_id__in=allowed_ws)) workitems = list(work_qs.order_by('-date', 'deal__number', 'id')[:2000]) for wi in workitems: