from django.shortcuts import render, redirect from django.views.generic import ListView, DetailView from django.contrib.auth.decorators import login_required from django.utils.decorators import method_decorator from django.contrib import messages from .models import ManufacturingOrder from .forms import ManufacturingOrderForm @method_decorator(login_required, name='dispatch') class ManufactureListView(ListView): model = ManufacturingOrder template_name = 'manufacture/manufacture_list.html' context_object_name = 'manufacturing_orders' paginate_by = 20 @login_required def manufacture_create(request): """Create a new manufacturing order with simple input""" if request.method == 'POST': form = ManufacturingOrderForm(request.POST) if form.is_valid(): manufacturing_order = form.save(commit=False) manufacturing_order.created_by = request.user # Generate order number if not provided if not manufacturing_order.order_number: # Get the next order number last_order = ManufacturingOrder.objects.order_by('-id').first() if last_order: try: last_number = int(last_order.order_number.split('-')[-1]) new_number = last_number + 1 except: new_number = 1 else: new_number = 1 manufacturing_order.order_number = f"MO-{new_number:06d}" # Set status to completed by default for simplicity manufacturing_order.status = 'completed' manufacturing_order.save() messages.success(request, f'Manufacturing order "{manufacturing_order.order_number}" created successfully!') return redirect('manufacture:manufacture_detail', pk=manufacturing_order.pk) else: form = ManufacturingOrderForm() return render(request, 'manufacture/manufacture_form.html', {'form': form, 'title': 'Create Manufacturing Order'}) @login_required def manufacture_delete(request, pk): """Delete a manufacturing order""" from users.views import is_administrator if not is_administrator(request.user): messages.error(request, 'You do not have permission to delete manufacturing orders.') return redirect('manufacture:manufacture_list') manufacturing_order = get_object_or_404(ManufacturingOrder, pk=pk) if request.method == 'POST': order_number = manufacturing_order.order_number manufacturing_order.delete() messages.success(request, f'Manufacturing order "{order_number}" deleted successfully!') return redirect('manufacture:manufacture_list') return render(request, 'manufacture/manufacture_confirm_delete.html', {'manufacturing_order': manufacturing_order}) @method_decorator(login_required, name='dispatch') class ManufactureDetailView(DetailView): model = ManufacturingOrder template_name = 'manufacture/manufacture_detail.html' context_object_name = 'manufacturing_order'