Sin descripción

views.py 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  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.models import VMasterView, MgMasterView, BelMasterView, EMasterView
  19. from core.filters import VMasterViewFilter, MgMasterViewFilter, BelMasterViewFilter, EMasterViewFilter
  20. from core.utils import ConfigurableCRUDView
  21. class DataListView(FilterView, ListView):
  22. model = Data
  23. template_name = 'legacy/data_list.html'
  24. # context_object_name = 'data_list'
  25. paginate_by = 10 # Enable pagination
  26. # Specify the filter class
  27. filterset_class = DataFilter
  28. def get_context_data(self, **kwargs):
  29. context = super().get_context_data(**kwargs)
  30. # Pass model fields to the template
  31. context['fields'] = [field for field in self.model._meta.get_fields()]
  32. context['bs'] = [
  33. {'label': 'Dashboard', 'url': reverse('dashboard:index')},
  34. {'label': 'Data', 'url': reverse('legacy:data-list')},
  35. ]
  36. return context
  37. # Read (detail view)
  38. class DataDetailView(DetailView):
  39. model = Data
  40. template_name = 'data_detail.html'
  41. context_object_name = 'data' # Use this name in templates
  42. # Create
  43. class DataCreateView(CreateView):
  44. model = Data
  45. template_name = 'legacy/data_form.html'
  46. fields = '__all__' # Use all fields or specify a list of fields
  47. def form_valid(self, form):
  48. response = super().form_valid(form)
  49. messages.success(self.request, "Data has been successfully created!")
  50. return response
  51. def get_success_url(self):
  52. # Redirect to the edit page of the newly created object
  53. return reverse('legacy:data-update', kwargs={'pk': self.object.pk})
  54. def get_context_data(self, **kwargs):
  55. context = super().get_context_data(**kwargs)
  56. # Pass model fields to the template
  57. context['bs'] = [
  58. {'label': 'Dashboard', 'url': reverse('dashboard:index')},
  59. {'label': 'Data', 'url': reverse('legacy:data-list')},
  60. {'label': 'Data Create', 'url': reverse('legacy:data-create')},
  61. ]
  62. return context
  63. # Update
  64. class DataUpdateView(UpdateView):
  65. model = Data
  66. template_name = 'legacy/data_form.html'
  67. fields = '__all__' # Use all fields or specify a list of fields
  68. def get_success_url(self):
  69. # Redirect to the edit page of the newly created object
  70. return reverse('legacy:data-update', kwargs={'pk': self.object.pk})
  71. def form_valid(self, form):
  72. response = super().form_valid(form)
  73. messages.success(self.request, "Data has been successfully updated!")
  74. return response
  75. def get_context_data(self, **kwargs):
  76. context = super().get_context_data(**kwargs)
  77. # Pass model fields to the template
  78. context['bs'] = [
  79. {'label': 'Dashboard', 'url': reverse('dashboard:index')},
  80. {'label': 'Data', 'url': reverse('legacy:data-list')},
  81. {'label': self.object, 'url': reverse('legacy:data-update', kwargs={'pk':self.object.pk})},
  82. ]
  83. return context
  84. # Delete
  85. class DataDeleteView(DeleteView):
  86. model = Data
  87. template_name = 'legacy/data_confirm_delete.html'
  88. success_url = reverse_lazy('legacy:data-list') # Redirect after deletion
  89. def get_context_data(self, **kwargs):
  90. context = super().get_context_data(**kwargs)
  91. # Pass model fields to the template
  92. context['bs'] = [
  93. {'label': 'Dashboard', 'url': reverse('dashboard:index')},
  94. {'label': 'Data', 'url': reverse('legacy:data-list')},
  95. {'label': self.object, 'url': reverse('legacy:data-update', kwargs={'pk':self.object.pk})},
  96. ]
  97. return context
  98. class DataMsCRUDView(ConfigurableCRUDView):
  99. model = DataMs
  100. list_template_name = 'legacy/datacrud_list.html'
  101. detail_template_name = 'legacy/datacrud_detail.html'
  102. form_template_name = 'legacy/datacrud_form.html'
  103. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  104. filterset_class = DataMsFilter
  105. page_title = "Data Measurement"
  106. # URL name mappings
  107. list_url_name = 'legacy:datams-list'
  108. create_url_name = 'legacy:datams-create'
  109. update_url_name = 'legacy:datams-update'
  110. delete_url_name = 'legacy:datams-delete'
  111. excludes = ["splitdata"]
  112. config_field_orders = ["id", "lot_no", "code"] # Display these fields first
  113. class TbFgPressInfoLotListCRUDView(ConfigurableCRUDView):
  114. model = TbFgPressinfoLotlist
  115. list_template_name = 'legacy/datacrud_list.html'
  116. detail_template_name = 'legacy/datacrud_detail.html'
  117. form_template_name = 'legacy/datacrud_form.html'
  118. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  119. filterset_class = TbFgPressFilter
  120. page_title = "Fg Press"
  121. # URL name mappings
  122. list_url_name = 'legacy:fg-list'
  123. create_url_name = 'legacy:fg-create'
  124. update_url_name = 'legacy:fg-update'
  125. delete_url_name = 'legacy:fg-delete'
  126. config_field_orders = ["productcode", "product_year"] # Display these fields first
  127. class LotSummaryCRUDView(ConfigurableCRUDView):
  128. model = LotSummary
  129. list_template_name = 'legacy/datacrud_list.html'
  130. detail_template_name = 'legacy/datacrud_detail.html'
  131. form_template_name = 'legacy/datacrud_form.html'
  132. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  133. filterset_class = DataMsFilter
  134. page_title = "Lot Summary"
  135. # URL name mappings
  136. list_url_name = 'legacy:ls-list'
  137. create_url_name = 'legacy:ls-create'
  138. update_url_name = 'legacy:ls-update'
  139. delete_url_name = 'legacy:ls-delete'
  140. config_fields = ["id", "lot_no", "code", "avg", "start_time", "end_time", "grade", "created_at"] # Display these fields first
  141. config_field_orders = ["id", "lot_no", "code", "avg", "start_time", "end_time", "grade", "created_at"] # Display these fields first
  142. config_readonly_fields = ["lot_no"]
  143. # config_edit_fields = ["lot_no", "code"]
  144. ordering = ["-created_at", "-id",]
  145. class VMasterViewCRUDView(ConfigurableCRUDView):
  146. """
  147. CRUD view for managing VMasterView objects.
  148. """
  149. model = VMasterView
  150. list_template_name = 'legacy/datacrud_list.html'
  151. detail_template_name = 'legacy/datacrud_detail.html'
  152. form_template_name = 'legacy/datacrud_form.html'
  153. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  154. filterset_class = VMasterViewFilter # Replace with the appropriate filter class if needed
  155. # Page title and URL mappings
  156. page_title = "VMaster View"
  157. list_url_name = 'legacy:vm-list'
  158. create_url_name = 'legacy:vm-create'
  159. update_url_name = 'legacy:vm-update'
  160. delete_url_name = 'legacy:vm-delete'
  161. # Configuration for fields
  162. # config_fields = ["id", "code", "description", "created_at", "updated_at"]
  163. # config_field_orders = ["id", "code", "description", "created_at", "updated_at"]
  164. # config_readonly_fields = ["id", "created_at"]
  165. # Default ordering
  166. # ordering = ["-created_at", "-id"]
  167. class MgMasterViewCRUDView(ConfigurableCRUDView):
  168. """
  169. CRUD view for managing MgMasterView objects.
  170. """
  171. model = MgMasterView
  172. list_template_name = 'legacy/datacrud_list.html'
  173. detail_template_name = 'legacy/datacrud_detail.html'
  174. form_template_name = 'legacy/datacrud_form.html'
  175. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  176. filterset_class = MgMasterViewFilter # Replace with the appropriate filter class if needed
  177. # Page title and URL mappings
  178. page_title = "MgMaster View"
  179. list_url_name = 'legacy:mg-list'
  180. create_url_name = 'legacy:mg-create'
  181. update_url_name = 'legacy:mg-update'
  182. delete_url_name = 'legacy:mg-delete'
  183. # Configuration for fields
  184. # config_fields = [
  185. # "id", "PRO0", "PRO1", "PRO1C", "PRO2", "PRO5",
  186. # "PRO8", "PRO9", "PRO10", "PRO11", "PRO12"
  187. # ]
  188. # config_field_orders = [
  189. # "id", "PRO0", "PRO1", "PRO1C", "PRO2", "PRO5",
  190. # "PRO8", "PRO9", "PRO10", "PRO11", "PRO12"
  191. # ]
  192. # config_readonly_fields = ["id"]
  193. # Default ordering
  194. # ordering = ["-id", "PRO2"]
  195. class BelMasterViewCRUDView(ConfigurableCRUDView):
  196. """
  197. CRUD view for managing BelMasterView objects.
  198. """
  199. model = BelMasterView
  200. list_template_name = 'legacy/datacrud_list.html'
  201. detail_template_name = 'legacy/datacrud_detail.html'
  202. form_template_name = 'legacy/datacrud_form.html'
  203. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  204. filterset_class = BelMasterViewFilter # Replace with the appropriate filter class if needed
  205. # Page title and URL mappings
  206. page_title = "BelMaster View"
  207. list_url_name = 'legacy:bel-list'
  208. create_url_name = 'legacy:bel-create'
  209. update_url_name = 'legacy:bel-update'
  210. delete_url_name = 'legacy:bel-delete'
  211. # Configuration for fields
  212. # config_fields = [
  213. # "id", "PRO0", "PRO1", "PRO1C", "PRO2", "PRO5",
  214. # "PRO8", "PRO9", "PRO10", "PRO11", "PRO12", "MC11",
  215. # "MC12", "MC14", "MC15", "MC16", "MC19", "MC20", "MC21"
  216. # ]
  217. # config_field_orders = [
  218. # "id", "PRO0", "PRO1", "PRO1C", "PRO2", "PRO5",
  219. # "PRO8", "PRO9", "PRO10", "PRO11", "PRO12", "MC11",
  220. # "MC12", "MC14", "MC15", "MC16", "MC19", "MC20", "MC21"
  221. # ]
  222. # config_readonly_fields = ["id"]
  223. # Default ordering
  224. # ordering = ["-id", "PRO2"]
  225. class EMasterViewCRUDView(ConfigurableCRUDView):
  226. """
  227. CRUD view for managing EMasterView objects.
  228. """
  229. model = EMasterView
  230. list_template_name = 'legacy/datacrud_list.html'
  231. detail_template_name = 'legacy/datacrud_detail.html'
  232. form_template_name = 'legacy/datacrud_form.html'
  233. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  234. filterset_class = EMasterViewFilter # Replace with the appropriate filter class
  235. # Page title and URL mappings
  236. page_title = "EMaster View"
  237. list_url_name = 'legacy:em-list'
  238. create_url_name = 'legacy:em-create'
  239. update_url_name = 'legacy:em-update'
  240. delete_url_name = 'legacy:em-delete'
  241. # Configuration for fields
  242. # config_fields = [
  243. # "id", "PRO0", "PRO1", "PRO1C", "PRO2", "PRO5",
  244. # "PRO8", "PRO9", "PRO10", "PRO11", "PRO12", "PRO13",
  245. # "PRO14", "PRO15", "PRO16", "PRO17", "PRO18", "PRO21",
  246. # "PRO25", "PRO27"
  247. # ]
  248. # config_field_orders = [
  249. # "id", "PRO0", "PRO1", "PRO1C", "PRO2", "PRO5",
  250. # "PRO8", "PRO9", "PRO10", "PRO11", "PRO12", "PRO13",
  251. # "PRO14", "PRO15", "PRO16", "PRO17", "PRO18", "PRO21",
  252. # "PRO25", "PRO27"
  253. # ]
  254. # config_readonly_fields = ["id"]
  255. # Default ordering
  256. # ordering = ["-id", "PRO2"]