暫無描述

views.py 17KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465
  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, DataRl, DataWb, LotSummaryRl, \
  14. RotateData, LotSummaryWb, Manualsize
  15. from .filters import DataFilter, DataMsFilter, TbFgPressFilter, LotSummaryFilter, \
  16. DataRlFilter, DataWbFilter, LotSummaryRlFilter, LotSummaryWbFilter, RotateDataFilter, ManualsizeFilter
  17. from django.urls import reverse
  18. from django.contrib import messages
  19. from pprint import pprint
  20. from core.models import VMasterView, MgMasterView, BelMasterView, EMasterView, \
  21. AllProductDimensionForInsProcess, RotateBrokenTest
  22. from core.filters import VMasterViewFilter, MgMasterViewFilter, BelMasterViewFilter, EMasterViewFilter,\
  23. AllProductDimensionForInsProcessFilter, RotateBrokenTestFilter
  24. from core.utils import ConfigurableCRUDView
  25. class DataListView(FilterView, ListView):
  26. model = Data
  27. template_name = 'legacy/data_list.html'
  28. ordering = ['-id', 'row_no'] # Order by id (ascending), then row_no (ascending)
  29. # context_object_name = 'data_list'
  30. paginate_by = 50 # Enable pagination
  31. # Specify the filter class
  32. filterset_class = DataFilter
  33. def get_context_data(self, **kwargs):
  34. context = super().get_context_data(**kwargs)
  35. # Pass model fields to the template
  36. context['fields'] = [field for field in self.model._meta.get_fields()]
  37. context['bs'] = [
  38. {'label': 'Dashboard', 'url': reverse('dashboard:index')},
  39. {'label': 'Data', 'url': reverse('legacy:data-list')},
  40. ]
  41. return context
  42. # Read (detail view)
  43. class DataDetailView(DetailView):
  44. model = Data
  45. template_name = 'data_detail.html'
  46. context_object_name = 'data' # Use this name in templates
  47. # Create
  48. class DataCreateView(CreateView):
  49. model = Data
  50. template_name = 'legacy/data_form.html'
  51. fields = '__all__' # Use all fields or specify a list of fields
  52. def form_valid(self, form):
  53. response = super().form_valid(form)
  54. messages.success(self.request, "Data has been successfully created!")
  55. return response
  56. def get_success_url(self):
  57. # Redirect to the edit page of the newly created object
  58. return reverse('legacy:data-update', kwargs={'pk': self.object.pk})
  59. def get_context_data(self, **kwargs):
  60. context = super().get_context_data(**kwargs)
  61. # Pass model fields to the template
  62. context['bs'] = [
  63. {'label': 'Dashboard', 'url': reverse('dashboard:index')},
  64. {'label': 'Data', 'url': reverse('legacy:data-list')},
  65. {'label': 'Data Create', 'url': reverse('legacy:data-create')},
  66. ]
  67. return context
  68. # Update
  69. class DataUpdateView(UpdateView):
  70. model = Data
  71. template_name = 'legacy/data_form.html'
  72. fields = '__all__' # Use all fields or specify a list of fields
  73. def get_success_url(self):
  74. # Redirect to the edit page of the newly created object
  75. return reverse('legacy:data-update', kwargs={'pk': self.object.pk})
  76. def form_valid(self, form):
  77. response = super().form_valid(form)
  78. messages.success(self.request, "Data has been successfully updated!")
  79. return response
  80. def get_context_data(self, **kwargs):
  81. context = super().get_context_data(**kwargs)
  82. # Pass model fields to the template
  83. context['bs'] = [
  84. {'label': 'Dashboard', 'url': reverse('dashboard:index')},
  85. {'label': 'Data', 'url': reverse('legacy:data-list')},
  86. {'label': self.object, 'url': reverse('legacy:data-update', kwargs={'pk':self.object.pk})},
  87. ]
  88. return context
  89. # Delete
  90. class DataDeleteView(DeleteView):
  91. model = Data
  92. template_name = 'legacy/data_confirm_delete.html'
  93. success_url = reverse_lazy('legacy:data-list') # Redirect after deletion
  94. def get_context_data(self, **kwargs):
  95. context = super().get_context_data(**kwargs)
  96. # Pass model fields to the template
  97. context['bs'] = [
  98. {'label': 'Dashboard', 'url': reverse('dashboard:index')},
  99. {'label': 'Data', 'url': reverse('legacy:data-list')},
  100. {'label': self.object, 'url': reverse('legacy:data-update', kwargs={'pk':self.object.pk})},
  101. ]
  102. return context
  103. class DataMsCRUDView(ConfigurableCRUDView):
  104. model = DataMs
  105. list_template_name = 'legacy/datacrud_list.html'
  106. detail_template_name = 'legacy/datacrud_detail.html'
  107. form_template_name = 'legacy/datacrud_form.html'
  108. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  109. filterset_class = DataMsFilter
  110. page_title = "Data Measurement"
  111. # URL name mappings
  112. list_url_name = 'legacy:datams-list'
  113. create_url_name = 'legacy:datams-create'
  114. update_url_name = 'legacy:datams-update'
  115. delete_url_name = 'legacy:datams-delete'
  116. excludes = ["splitdata"]
  117. config_field_orders = ["id", "lot_no", "code"] # Display these fields first
  118. ordering = ['-id',]
  119. class TbFgPressInfoLotListCRUDView(ConfigurableCRUDView):
  120. model = TbFgPressinfoLotlist
  121. list_template_name = 'legacy/datacrud_list.html'
  122. detail_template_name = 'legacy/datacrud_detail.html'
  123. form_template_name = 'legacy/datacrud_form.html'
  124. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  125. filterset_class = TbFgPressFilter
  126. page_title = "Fg Press"
  127. # URL name mappings
  128. list_url_name = 'legacy:fg-list'
  129. create_url_name = 'legacy:fg-create'
  130. update_url_name = 'legacy:fg-update'
  131. delete_url_name = 'legacy:fg-delete'
  132. config_field_orders = ["productcode", "product_year"] # Display these fields first
  133. class LotSummaryCRUDView(ConfigurableCRUDView):
  134. model = LotSummary
  135. list_template_name = 'legacy/datacrud_list.html'
  136. detail_template_name = 'legacy/datacrud_detail.html'
  137. form_template_name = 'legacy/datacrud_form.html'
  138. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  139. filterset_class = LotSummaryFilter
  140. page_title = "Lot Summary"
  141. # URL name mappings
  142. list_url_name = 'legacy:ls-list'
  143. create_url_name = 'legacy:ls-create'
  144. update_url_name = 'legacy:ls-update'
  145. delete_url_name = 'legacy:ls-delete'
  146. config_fields = ["id", "lot_no", "code", "avg", "start_time", "end_time", "grade", "created_at"] # Display these fields first
  147. config_field_orders = ["id", "lot_no", "code", "avg", "start_time", "end_time", "grade", "created_at"] # Display these fields first
  148. config_readonly_fields = ["lot_no"]
  149. # config_edit_fields = ["lot_no", "code"]
  150. ordering = ["-created_at", "-id",]
  151. class VMasterViewCRUDView(ConfigurableCRUDView):
  152. """
  153. CRUD view for managing VMasterView objects.
  154. """
  155. model = VMasterView
  156. list_template_name = 'legacy/datacrud_list.html'
  157. detail_template_name = 'legacy/datacrud_detail.html'
  158. form_template_name = 'legacy/datacrud_form.html'
  159. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  160. filterset_class = VMasterViewFilter # Replace with the appropriate filter class if needed
  161. # Page title and URL mappings
  162. page_title = "VMaster View"
  163. list_url_name = 'legacy:vm-list'
  164. create_url_name = 'legacy:vm-create'
  165. update_url_name = 'legacy:vm-update'
  166. delete_url_name = 'legacy:vm-delete'
  167. # Configuration for fields
  168. # config_fields = ["id", "code", "description", "created_at", "updated_at"]
  169. # config_field_orders = ["id", "code", "description", "created_at", "updated_at"]
  170. # config_readonly_fields = ["id", "created_at"]
  171. # Default ordering
  172. # ordering = ["-created_at", "-id"]
  173. class MgMasterViewCRUDView(ConfigurableCRUDView):
  174. """
  175. CRUD view for managing MgMasterView objects.
  176. """
  177. model = MgMasterView
  178. list_template_name = 'legacy/datacrud_list.html'
  179. detail_template_name = 'legacy/datacrud_detail.html'
  180. form_template_name = 'legacy/datacrud_form.html'
  181. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  182. filterset_class = MgMasterViewFilter # Replace with the appropriate filter class if needed
  183. # Page title and URL mappings
  184. page_title = "MgMaster View"
  185. list_url_name = 'legacy:mg-list'
  186. create_url_name = 'legacy:mg-create'
  187. update_url_name = 'legacy:mg-update'
  188. delete_url_name = 'legacy:mg-delete'
  189. # Configuration for fields
  190. # config_fields = [
  191. # "id", "PRO0", "PRO1", "PRO1C", "PRO2", "PRO5",
  192. # "PRO8", "PRO9", "PRO10", "PRO11", "PRO12"
  193. # ]
  194. # config_field_orders = [
  195. # "id", "PRO0", "PRO1", "PRO1C", "PRO2", "PRO5",
  196. # "PRO8", "PRO9", "PRO10", "PRO11", "PRO12"
  197. # ]
  198. # config_readonly_fields = ["id"]
  199. # Default ordering
  200. # ordering = ["-id", "PRO2"]
  201. class BelMasterViewCRUDView(ConfigurableCRUDView):
  202. """
  203. CRUD view for managing BelMasterView objects.
  204. """
  205. model = BelMasterView
  206. list_template_name = 'legacy/datacrud_list.html'
  207. detail_template_name = 'legacy/datacrud_detail.html'
  208. form_template_name = 'legacy/datacrud_form.html'
  209. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  210. filterset_class = BelMasterViewFilter # Replace with the appropriate filter class if needed
  211. # Page title and URL mappings
  212. page_title = "BelMaster View"
  213. list_url_name = 'legacy:bel-list'
  214. create_url_name = 'legacy:bel-create'
  215. update_url_name = 'legacy:bel-update'
  216. delete_url_name = 'legacy:bel-delete'
  217. # Configuration for fields
  218. # config_fields = [
  219. # "id", "PRO0", "PRO1", "PRO1C", "PRO2", "PRO5",
  220. # "PRO8", "PRO9", "PRO10", "PRO11", "PRO12", "MC11",
  221. # "MC12", "MC14", "MC15", "MC16", "MC19", "MC20", "MC21"
  222. # ]
  223. # config_field_orders = [
  224. # "id", "PRO0", "PRO1", "PRO1C", "PRO2", "PRO5",
  225. # "PRO8", "PRO9", "PRO10", "PRO11", "PRO12", "MC11",
  226. # "MC12", "MC14", "MC15", "MC16", "MC19", "MC20", "MC21"
  227. # ]
  228. # config_readonly_fields = ["id"]
  229. # Default ordering
  230. # ordering = ["-id", "PRO2"]
  231. class EMasterViewCRUDView(ConfigurableCRUDView):
  232. """
  233. CRUD view for managing EMasterView objects.
  234. """
  235. model = EMasterView
  236. list_template_name = 'legacy/datacrud_list.html'
  237. detail_template_name = 'legacy/datacrud_detail.html'
  238. form_template_name = 'legacy/datacrud_form.html'
  239. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  240. filterset_class = EMasterViewFilter # Replace with the appropriate filter class
  241. # Page title and URL mappings
  242. page_title = "EMaster View"
  243. list_url_name = 'legacy:em-list'
  244. create_url_name = 'legacy:em-create'
  245. update_url_name = 'legacy:em-update'
  246. delete_url_name = 'legacy:em-delete'
  247. # Configuration for fields
  248. # config_fields = [
  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_field_orders = [
  255. # "id", "PRO0", "PRO1", "PRO1C", "PRO2", "PRO5",
  256. # "PRO8", "PRO9", "PRO10", "PRO11", "PRO12", "PRO13",
  257. # "PRO14", "PRO15", "PRO16", "PRO17", "PRO18", "PRO21",
  258. # "PRO25", "PRO27"
  259. # ]
  260. # config_readonly_fields = ["id"]
  261. # Default ordering
  262. # ordering = ["-id", "PRO2"]
  263. class DataRLCRUDView(ConfigurableCRUDView):
  264. model = DataRl
  265. list_template_name = 'legacy/datacrud_list.html'
  266. detail_template_name = 'legacy/datacrud_detail.html'
  267. form_template_name = 'legacy/datacrud_form.html'
  268. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  269. filterset_class = DataRlFilter
  270. page_title = "Data RL"
  271. # URL name mappings
  272. list_url_name = 'legacy:datarl-list'
  273. create_url_name = 'legacy:datarl-create'
  274. update_url_name = 'legacy:datarl-update'
  275. delete_url_name = 'legacy:datarl-delete'
  276. # excludes = ["splitdata"]
  277. config_field_orders = ["id", "lot_no", "code"] # Display these fields first
  278. ordering = ["-id"]
  279. class DataWbCRUDView(ConfigurableCRUDView):
  280. model = DataWb
  281. list_template_name = 'legacy/datacrud_list.html'
  282. detail_template_name = 'legacy/datacrud_detail.html'
  283. form_template_name = 'legacy/datacrud_form.html'
  284. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  285. filterset_class = DataWbFilter
  286. page_title = "Data WB"
  287. # URL name mappings
  288. list_url_name = 'legacy:datawb-list'
  289. create_url_name = 'legacy:datawb-create'
  290. update_url_name = 'legacy:datawb-update'
  291. delete_url_name = 'legacy:datawb-delete'
  292. # excludes = ["splitdata"]
  293. config_field_orders = ["id", "lot_no", "code"] # Display these fields first
  294. ordering = ["-id"]
  295. class LotSummaryRlCRUDView(ConfigurableCRUDView):
  296. model = LotSummaryRl
  297. list_template_name = 'legacy/datacrud_list.html'
  298. detail_template_name = 'legacy/datacrud_detail.html'
  299. form_template_name = 'legacy/datacrud_form.html'
  300. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  301. filterset_class = LotSummaryRlFilter
  302. page_title = "Lot Summary RL"
  303. # URL name mappings
  304. list_url_name = 'legacy:lsrl-list'
  305. create_url_name = 'legacy:lsrl-create'
  306. update_url_name = 'legacy:lsrl-update'
  307. delete_url_name = 'legacy:lsrl-delete'
  308. # excludes = ["splitdata"]
  309. config_field_orders = ["id", "lot_no", "code"] # Display these fields first
  310. class LotSummaryWbCRUDView(ConfigurableCRUDView):
  311. model = LotSummaryWb
  312. list_template_name = 'legacy/datacrud_list.html'
  313. detail_template_name = 'legacy/datacrud_detail.html'
  314. form_template_name = 'legacy/datacrud_form.html'
  315. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  316. filterset_class = LotSummaryWbFilter
  317. page_title = "Lot Summary WB"
  318. # URL name mappings
  319. list_url_name = 'legacy:lswb-list'
  320. create_url_name = 'legacy:lswb-create'
  321. update_url_name = 'legacy:lswb-update'
  322. delete_url_name = 'legacy:lswb-delete'
  323. # excludes = ["splitdata"]
  324. config_field_orders = ["id", "lot_no", "code"] # Display these fields first
  325. class RotateDataCRUDView(ConfigurableCRUDView):
  326. model = RotateData
  327. list_template_name = 'legacy/datacrud_list.html'
  328. detail_template_name = 'legacy/datacrud_detail.html'
  329. form_template_name = 'legacy/datacrud_form.html'
  330. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  331. filterset_class = RotateDataFilter
  332. page_title = "Rotate Data"
  333. # URL name mappings
  334. list_url_name = 'legacy:rotate-list'
  335. create_url_name = 'legacy:rotate-create'
  336. update_url_name = 'legacy:rotate-update'
  337. delete_url_name = 'legacy:rotate-delete'
  338. # excludes = ["splitdata"]
  339. config_field_orders = ["id", "lot_no", "code"] # Display these fields first
  340. class ManualsizeCRUDView(ConfigurableCRUDView):
  341. model = Manualsize
  342. list_template_name = 'legacy/datacrud_list.html'
  343. detail_template_name = 'legacy/datacrud_detail.html'
  344. form_template_name = 'legacy/datacrud_form.html'
  345. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  346. filterset_class = ManualsizeFilter # If you have a filter for this model
  347. page_title = "Manual Size Data"
  348. # URL name mappings
  349. list_url_name = 'legacy:manualsize-list'
  350. create_url_name = 'legacy:manualsize-create'
  351. update_url_name = 'legacy:manualsize-update'
  352. delete_url_name = 'legacy:manualsize-delete'
  353. # Define the order of fields to be displayed
  354. config_field_orders = ["lotno", "size_name", "std", "tolun", "tolup", "created_at", "productcode"]
  355. class AllProductDimensionForInsProcessCRUDView(ConfigurableCRUDView):
  356. model = AllProductDimensionForInsProcess
  357. list_template_name = 'legacy/datacrud_list.html'
  358. detail_template_name = 'legacy/datacrud_detail.html'
  359. form_template_name = 'legacy/datacrud_form.html'
  360. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  361. filterset_class = AllProductDimensionForInsProcessFilter # If a filter is needed
  362. page_title = "All Product Dimension for Inspection Process"
  363. # URL name mappings
  364. list_url_name = 'legacy:allproductdimension-list'
  365. create_url_name = 'legacy:allproductdimension-create'
  366. update_url_name = 'legacy:allproductdimension-update'
  367. delete_url_name = 'legacy:allproductdimension-delete'
  368. # Define the order of fields to be displayed
  369. # config_field_orders = ["ProdType", "ProductCode", "Size_Id", "Size_Name", "Std", "TolUn", "TolUp"]
  370. # Exclude fields if necessary
  371. class RotateBrokenTestCRUDView(ConfigurableCRUDView):
  372. model = RotateBrokenTest
  373. list_template_name = 'legacy/datacrud_list.html'
  374. detail_template_name = 'legacy/datacrud_detail.html'
  375. form_template_name = 'legacy/datacrud_form.html'
  376. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  377. filterset_class = RotateBrokenTestFilter # If a filter is needed, else remove this line
  378. page_title = "Rotate Broken Test Data"
  379. # URL name mappings
  380. list_url_name = 'legacy:rotatebrokentest-list'
  381. create_url_name = 'legacy:rotatebrokentest-create'
  382. update_url_name = 'legacy:rotatebrokentest-update'
  383. delete_url_name = 'legacy:rotatebrokentest-delete'
  384. # Define the order of fields to be displayed
  385. config_field_orders = ["id", "lot_no", "code", "row_no", "speed_spec", "speed_test", "speedOk",
  386. "qty", "station_no", "created_at", "updated_at",
  387. "machine_id", "emp_id", "devid", "mode", "cal_mode"]
  388. ordering = ['-id',]