from django.shortcuts import render, redirect, get_object_or_404 from django.core.paginator import Paginator from django.contrib import messages from core.models import Report from core.forms import ReportForm from core.utils import ConfigurableCRUDView, queryFromMaster from .filters import ReportFilter from .forms import ExportOptionsForm from pprint import pprint def index(request): reports = Report.objects.all() report_filter = ReportFilter(request.GET, queryset=reports) # Paginate the filtered queryset paginator = Paginator(report_filter.qs, 10) # Show 10 reports per page page_number = request.GET.get('page') page_obj = paginator.get_page(page_number) context = { 'filter': report_filter, 'page_obj': page_obj, } return render(request, 'report/index.html', context) def report_create_view(request): if request.method == "POST": form = ReportForm(request.POST) if form.is_valid(): form.save() messages.success(request, "Report created successfully!") return redirect("report:report_index") # Adjust with your report list view name else: form = ReportForm() return render(request, "report/create.html", {"form": form}) class ReportCRUDView(ConfigurableCRUDView): model = Report list_template_name = 'legacy/datacrud_list.html' detail_template_name = 'legacy/datacrud_detail.html' form_template_name = 'report/report_form.html' confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html' filterset_class = ReportFilter page_title = "Reports" # URL name mappings list_url_name = 'report:report-list' create_url_name = 'report:report-create' update_url_name = 'report:report-update' delete_url_name = 'report:report-delete' config_fields = ["name", "file", "created_by", "created_at"] config_field_orders = ["id", "name", "created_by"] # config_readonly_fields = ["lot_no"] # config_edit_fields = ["lot_no", "code"] ordering = ["-created_at", "-id",] def coi_view(request): pprint(f"xxxx method = xxx {request.method}") if request.method == "POST": if 'search_lot' in request.POST: lot_no = request.POST.get('lot_no', None) if lot_no: results = queryFromMaster(lot_no) first_result = results[0] if results else None try: pcs = int(first_result.PRO5) - int(first_result.PRO27) except: pcs = 0 size_str = f"{first_result.PRO10}x{first_result.PRO11}x{first_result.PRO12}"; spec = f"{first_result.PRO13} {first_result.PRO14} {first_result.PRO15} {first_result.PRO16} {first_result.PRO17} {first_result.PRO18}" return render(request, 'report/coi.html', {'result': first_result, 'pcs':pcs, 'size_str': size_str, 'spec': spec}) exports = request.POST.getlist("exports") # Retrieve the list of selected values pprint(f"Selected Export Options: {exports}") messages.success(request, "Request Sent") return redirect(request.path_info) return render(request, 'report/coi.html')