Nessuna descrizione

views.py 15KB

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