Nessuna descrizione

views.py 3.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. from django.shortcuts import render, redirect, get_object_or_404
  2. from django.core.paginator import Paginator
  3. from django.contrib import messages
  4. from core.models import Report
  5. from core.forms import ReportForm
  6. from core.utils import ConfigurableCRUDView, queryFromMaster
  7. from .filters import ReportFilter
  8. from .forms import ExportOptionsForm
  9. from pprint import pprint
  10. def index(request):
  11. reports = Report.objects.all()
  12. report_filter = ReportFilter(request.GET, queryset=reports)
  13. # Paginate the filtered queryset
  14. paginator = Paginator(report_filter.qs, 10) # Show 10 reports per page
  15. page_number = request.GET.get('page')
  16. page_obj = paginator.get_page(page_number)
  17. context = {
  18. 'filter': report_filter,
  19. 'page_obj': page_obj,
  20. }
  21. return render(request, 'report/index.html', context)
  22. def report_create_view(request):
  23. if request.method == "POST":
  24. form = ReportForm(request.POST)
  25. if form.is_valid():
  26. form.save()
  27. messages.success(request, "Report created successfully!")
  28. return redirect("report:report_index") # Adjust with your report list view name
  29. else:
  30. form = ReportForm()
  31. return render(request, "report/create.html", {"form": form})
  32. class ReportCRUDView(ConfigurableCRUDView):
  33. model = Report
  34. list_template_name = 'legacy/datacrud_list.html'
  35. detail_template_name = 'legacy/datacrud_detail.html'
  36. form_template_name = 'report/report_form.html'
  37. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  38. filterset_class = ReportFilter
  39. page_title = "Reports"
  40. # URL name mappings
  41. list_url_name = 'report:report-list'
  42. create_url_name = 'report:report-create'
  43. update_url_name = 'report:report-update'
  44. delete_url_name = 'report:report-delete'
  45. config_fields = ["name", "file", "created_by", "created_at"]
  46. config_field_orders = ["id", "name", "created_by"]
  47. # config_readonly_fields = ["lot_no"]
  48. # config_edit_fields = ["lot_no", "code"]
  49. ordering = ["-created_at", "-id",]
  50. def coi_view(request):
  51. pprint(f"xxxx method = xxx {request.method}")
  52. if request.method == "POST":
  53. if 'search_lot' in request.POST:
  54. lot_no = request.POST.get('lot_no', None)
  55. lot_no = lot_no.strip()
  56. if lot_no:
  57. results = queryFromMaster(lot_no)
  58. first_result = results[0] if results else None
  59. try:
  60. pcs = int(first_result.PRO5) - int(first_result.PRO27)
  61. except:
  62. pcs = 0
  63. size_str = f"{first_result.PRO10}x{first_result.PRO11}x{first_result.PRO12}";
  64. spec = f"{first_result.PRO13} {first_result.PRO14} {first_result.PRO15} {first_result.PRO16} {first_result.PRO17} {first_result.PRO18}"
  65. return render(request, 'report/coi.html', {'result': first_result,
  66. 'pcs':pcs,
  67. 'size_str': size_str,
  68. 'spec': spec})
  69. exports = request.POST.getlist("exports") # Retrieve the list of selected values
  70. pprint(f"Selected Export Options: {exports}")
  71. messages.success(request, "Request Sent")
  72. return redirect(request.path_info)
  73. return render(request, 'report/coi.html')