From 2603c8f51c0796ec430a66c330fc8b23e16fd510 Mon Sep 17 00:00:00 2001 From: ackFromRedmi Date: Tue, 14 Apr 2026 08:09:23 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=84=D0=B8=D0=BB=D1=8C=D1=82=D1=80=20=D1=86?= =?UTF-8?q?=D0=B5=D1=85=D0=BE=D0=B2=20=D0=BD=D0=B0=20=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=86=D0=B5=20=D1=80=D0=B5=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shiftflow/views.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) 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: