Добавил поис на странице реестра добавил еск для сброса фильтров
All checks were successful
Deploy MES Core / deploy (push) Successful in 11s

This commit is contained in:
2026-04-16 22:58:20 +03:00
parent b48bf0947a
commit ef30e5ebb8
3 changed files with 78 additions and 14 deletions

View File

@@ -435,6 +435,8 @@ class RegistryView(LoginRequiredMixin, ListView):
# Диапазон дат, задаваемый пользователем. Если фильтры не активны или явно указан reset=1 — используем дефолты
start_date = self.request.GET.get('start_date')
end_date = self.request.GET.get('end_date')
q = (self.request.GET.get('q') or '').strip()
# Дефолтный режим: последние 7 дней и только статус "В работе"
is_default = (not filtered) or bool(reset)
@@ -451,6 +453,16 @@ class RegistryView(LoginRequiredMixin, ListView):
# Ограничения по ролям
if q:
queryset = queryset.filter(
Q(task__deal__number__icontains=q)
| Q(task__drawing_name__icontains=q)
| Q(task__entity__name__icontains=q)
| Q(task__entity__drawing_number__icontains=q)
| Q(task__material__name__icontains=q)
| Q(task__material__full_name__icontains=q)
)
if role == 'operator':
user_machines = profile.machines.all() if profile else Machine.objects.none()
queryset = queryset.filter(machine__in=user_machines)
@@ -470,6 +482,7 @@ class RegistryView(LoginRequiredMixin, ListView):
context['user_role'] = role
context['user_roles'] = sorted(roles)
context['is_readonly'] = bool(getattr(profile, 'is_readonly', False)) if profile else False
context['q'] = (self.request.GET.get('q') or '').strip()
allowed_ws = list(profile.allowed_workshops.values_list('id', flat=True)) if profile else []
context['allowed_workshop_ids'] = allowed_ws
@@ -511,6 +524,16 @@ class RegistryView(LoginRequiredMixin, ListView):
work_qs = WorkItem.objects.select_related('deal', 'deal__company', 'entity', 'entity__planned_material', 'operation', 'machine', 'workshop')
q = (self.request.GET.get('q') or '').strip()
if q:
work_qs = work_qs.filter(
Q(deal__number__icontains=q)
| Q(entity__name__icontains=q)
| Q(entity__drawing_number__icontains=q)
| Q(entity__planned_material__name__icontains=q)
| Q(entity__planned_material__full_name__icontains=q)
)
m_ids = [int(i) for i in self.request.GET.getlist('m_ids') if str(i).isdigit()]
if m_ids:
work_qs = work_qs.filter(Q(machine_id__in=m_ids) | Q(machine_id__isnull=True))