Keine Beschreibung

views.py 6.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. from django.shortcuts import render
  2. # Create your views here.
  3. from django_filters.views import FilterView
  4. from django.urls import reverse_lazy, reverse
  5. from django.views.generic import (
  6. ListView,
  7. DetailView,
  8. CreateView,
  9. UpdateView,
  10. DeleteView,
  11. )
  12. from django.core.paginator import Paginator
  13. from .models import Data, DataMs, TbFgPressinfoLotlist, LotSummary
  14. from .filters import DataFilter, DataMsFilter, TbFgPressFilter, LotSummaryFilter
  15. from django.urls import reverse
  16. from django.contrib import messages
  17. from pprint import pprint
  18. from core.utils import ConfigurableCRUDView
  19. class DataListView(FilterView, ListView):
  20. model = Data
  21. template_name = 'legacy/data_list.html'
  22. # context_object_name = 'data_list'
  23. paginate_by = 10 # Enable pagination
  24. # Specify the filter class
  25. filterset_class = DataFilter
  26. def get_context_data(self, **kwargs):
  27. context = super().get_context_data(**kwargs)
  28. # Pass model fields to the template
  29. context['fields'] = [field for field in self.model._meta.get_fields()]
  30. context['bs'] = [
  31. {'label': 'Dashboard', 'url': reverse('dashboard:index')},
  32. {'label': 'Data', 'url': reverse('legacy:data-list')},
  33. ]
  34. return context
  35. # Read (detail view)
  36. class DataDetailView(DetailView):
  37. model = Data
  38. template_name = 'data_detail.html'
  39. context_object_name = 'data' # Use this name in templates
  40. # Create
  41. class DataCreateView(CreateView):
  42. model = Data
  43. template_name = 'legacy/data_form.html'
  44. fields = '__all__' # Use all fields or specify a list of fields
  45. def form_valid(self, form):
  46. response = super().form_valid(form)
  47. messages.success(self.request, "Data has been successfully created!")
  48. return response
  49. def get_success_url(self):
  50. # Redirect to the edit page of the newly created object
  51. return reverse('legacy:data-update', kwargs={'pk': self.object.pk})
  52. def get_context_data(self, **kwargs):
  53. context = super().get_context_data(**kwargs)
  54. # Pass model fields to the template
  55. context['bs'] = [
  56. {'label': 'Dashboard', 'url': reverse('dashboard:index')},
  57. {'label': 'Data', 'url': reverse('legacy:data-list')},
  58. {'label': 'Data Create', 'url': reverse('legacy:data-create')},
  59. ]
  60. return context
  61. # Update
  62. class DataUpdateView(UpdateView):
  63. model = Data
  64. template_name = 'legacy/data_form.html'
  65. fields = '__all__' # Use all fields or specify a list of fields
  66. def get_success_url(self):
  67. # Redirect to the edit page of the newly created object
  68. return reverse('legacy:data-update', kwargs={'pk': self.object.pk})
  69. def form_valid(self, form):
  70. response = super().form_valid(form)
  71. messages.success(self.request, "Data has been successfully updated!")
  72. return response
  73. def get_context_data(self, **kwargs):
  74. context = super().get_context_data(**kwargs)
  75. # Pass model fields to the template
  76. context['bs'] = [
  77. {'label': 'Dashboard', 'url': reverse('dashboard:index')},
  78. {'label': 'Data', 'url': reverse('legacy:data-list')},
  79. {'label': self.object, 'url': reverse('legacy:data-update', kwargs={'pk':self.object.pk})},
  80. ]
  81. return context
  82. # Delete
  83. class DataDeleteView(DeleteView):
  84. model = Data
  85. template_name = 'legacy/data_confirm_delete.html'
  86. success_url = reverse_lazy('legacy:data-list') # Redirect after deletion
  87. def get_context_data(self, **kwargs):
  88. context = super().get_context_data(**kwargs)
  89. # Pass model fields to the template
  90. context['bs'] = [
  91. {'label': 'Dashboard', 'url': reverse('dashboard:index')},
  92. {'label': 'Data', 'url': reverse('legacy:data-list')},
  93. {'label': self.object, 'url': reverse('legacy:data-update', kwargs={'pk':self.object.pk})},
  94. ]
  95. return context
  96. class DataMsCRUDView(ConfigurableCRUDView):
  97. model = DataMs
  98. list_template_name = 'legacy/datacrud_list.html'
  99. detail_template_name = 'legacy/datacrud_detail.html'
  100. form_template_name = 'legacy/datacrud_form.html'
  101. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  102. filterset_class = DataMsFilter
  103. page_title = "Data Measurement"
  104. # URL name mappings
  105. list_url_name = 'legacy:datams-list'
  106. create_url_name = 'legacy:datams-create'
  107. update_url_name = 'legacy:datams-update'
  108. delete_url_name = 'legacy:datams-delete'
  109. excludes = ["splitdata"]
  110. config_field_orders = ["id", "lot_no", "code"] # Display these fields first
  111. class TbFgPressInfoLotListCRUDView(ConfigurableCRUDView):
  112. model = TbFgPressinfoLotlist
  113. list_template_name = 'legacy/datacrud_list.html'
  114. detail_template_name = 'legacy/datacrud_detail.html'
  115. form_template_name = 'legacy/datacrud_form.html'
  116. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  117. filterset_class = TbFgPressFilter
  118. page_title = "Fg Press"
  119. # URL name mappings
  120. list_url_name = 'legacy:fg-list'
  121. create_url_name = 'legacy:fg-create'
  122. update_url_name = 'legacy:fg-update'
  123. delete_url_name = 'legacy:fg-delete'
  124. config_field_orders = ["productcode", "product_year"] # Display these fields first
  125. class LotSummaryCRUDView(ConfigurableCRUDView):
  126. model = LotSummary
  127. list_template_name = 'legacy/datacrud_list.html'
  128. detail_template_name = 'legacy/datacrud_detail.html'
  129. form_template_name = 'legacy/datacrud_form.html'
  130. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  131. filterset_class = DataMsFilter
  132. page_title = "Lot Summary"
  133. # URL name mappings
  134. list_url_name = 'legacy:ls-list'
  135. create_url_name = 'legacy:ls-create'
  136. update_url_name = 'legacy:ls-update'
  137. delete_url_name = 'legacy:ls-delete'
  138. config_fields = ["id", "lot_no", "code", "avg", "start_time", "end_time", "grade", "created_at"] # Display these fields first
  139. config_field_orders = ["id", "lot_no", "code", "avg", "start_time", "end_time", "grade", "created_at"] # Display these fields first
  140. config_readonly_fields = ["lot_no"]
  141. # config_edit_fields = ["lot_no", "code"]
  142. ordering = ["-created_at", "-id",]