Доработали генерацию сменных заданий
All checks were successful
Deploy MES Core / deploy (push) Successful in 10s
All checks were successful
Deploy MES Core / deploy (push) Successful in 10s
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
from datetime import datetime
|
||||
|
||||
from django.shortcuts import redirect
|
||||
from django.urls import reverse_lazy
|
||||
from django.views.generic import TemplateView, ListView, UpdateView
|
||||
@@ -102,7 +104,98 @@ class RegistryView(LoginRequiredMixin, ListView):
|
||||
context['all_selected_machines'] = False
|
||||
|
||||
return context
|
||||
|
||||
|
||||
|
||||
class RegistryPrintView(LoginRequiredMixin, TemplateView):
|
||||
template_name = 'shiftflow/registry_print.html'
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
profile = getattr(request.user, 'profile', None)
|
||||
role = profile.role if profile else 'operator'
|
||||
if role not in ['admin', 'technologist', 'master']:
|
||||
return redirect('registry')
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
profile = getattr(self.request.user, 'profile', None)
|
||||
role = profile.role if profile else 'operator'
|
||||
context['user_role'] = role
|
||||
|
||||
queryset = Item.objects.select_related('task', 'task__deal', 'task__material', 'task__material__category', 'machine')
|
||||
filtered = self.request.GET.get('filtered')
|
||||
|
||||
m_ids = self.request.GET.getlist('m_ids')
|
||||
if filtered and not m_ids:
|
||||
queryset = queryset.none()
|
||||
if m_ids:
|
||||
queryset = queryset.filter(machine_id__in=m_ids)
|
||||
|
||||
statuses = self.request.GET.getlist('statuses')
|
||||
if filtered and not statuses:
|
||||
queryset = queryset.none()
|
||||
if statuses:
|
||||
expanded = []
|
||||
for s in statuses:
|
||||
if s == 'closed':
|
||||
expanded += ['done', 'partial']
|
||||
else:
|
||||
expanded.append(s)
|
||||
queryset = queryset.filter(status__in=expanded)
|
||||
|
||||
start_date = self.request.GET.get('start_date')
|
||||
end_date = self.request.GET.get('end_date')
|
||||
if not filtered:
|
||||
today = timezone.now().date()
|
||||
queryset = queryset.filter(date=today, status__in=['work', 'leftover'])
|
||||
start_date = today.strftime('%Y-%m-%d')
|
||||
end_date = start_date
|
||||
else:
|
||||
if start_date:
|
||||
queryset = queryset.filter(date__gte=start_date)
|
||||
if end_date:
|
||||
queryset = queryset.filter(date__lte=end_date)
|
||||
|
||||
is_synced = self.request.GET.get('is_synced')
|
||||
if is_synced in ['0', '1']:
|
||||
queryset = queryset.filter(is_synced_1c=bool(int(is_synced)))
|
||||
|
||||
if role == 'master' and not filtered:
|
||||
queryset = queryset.filter(status='work')
|
||||
|
||||
items = list(queryset.order_by('machine__name', 'date', 'task__deal__number', 'id'))
|
||||
groups = {}
|
||||
for item in items:
|
||||
groups.setdefault(item.machine, []).append(item)
|
||||
|
||||
context['groups'] = list(groups.items())
|
||||
context['printed_at'] = timezone.now()
|
||||
context['end_date'] = end_date or ''
|
||||
|
||||
print_date_raw = end_date or start_date
|
||||
print_date = None
|
||||
if isinstance(print_date_raw, str) and print_date_raw:
|
||||
try:
|
||||
print_date = datetime.strptime(print_date_raw, '%Y-%m-%d').date()
|
||||
except ValueError:
|
||||
print_date = None
|
||||
context['print_date'] = print_date
|
||||
|
||||
if start_date and end_date and start_date == end_date:
|
||||
context['date_label'] = start_date
|
||||
elif start_date and end_date:
|
||||
context['date_label'] = f"{start_date} — {end_date}"
|
||||
elif start_date:
|
||||
context['date_label'] = f"c {start_date}"
|
||||
elif end_date:
|
||||
context['date_label'] = f"по {end_date}"
|
||||
else:
|
||||
context['date_label'] = ''
|
||||
|
||||
return context
|
||||
|
||||
|
||||
# Вьюха детального вида и редактирования
|
||||
class ItemUpdateView(LoginRequiredMixin, UpdateView):
|
||||
model = Item
|
||||
|
||||
Reference in New Issue
Block a user