Nav apraksta

views.py 15KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396
  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
  15. from .filters import DataFilter, DataMsFilter, TbFgPressFilter, LotSummaryFilter, \
  16. DataRlFilter, DataWbFilter, LotSummaryRlFilter, LotSummaryWbFilter, RotateDataFilter
  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. class TbFgPressInfoLotListCRUDView(ConfigurableCRUDView):
  117. model = TbFgPressinfoLotlist
  118. list_template_name = 'legacy/datacrud_list.html'
  119. detail_template_name = 'legacy/datacrud_detail.html'
  120. form_template_name = 'legacy/datacrud_form.html'
  121. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  122. filterset_class = TbFgPressFilter
  123. page_title = "Fg Press"
  124. # URL name mappings
  125. list_url_name = 'legacy:fg-list'
  126. create_url_name = 'legacy:fg-create'
  127. update_url_name = 'legacy:fg-update'
  128. delete_url_name = 'legacy:fg-delete'
  129. config_field_orders = ["productcode", "product_year"] # Display these fields first
  130. class LotSummaryCRUDView(ConfigurableCRUDView):
  131. model = LotSummary
  132. list_template_name = 'legacy/datacrud_list.html'
  133. detail_template_name = 'legacy/datacrud_detail.html'
  134. form_template_name = 'legacy/datacrud_form.html'
  135. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  136. filterset_class = LotSummaryFilter
  137. page_title = "Lot Summary"
  138. # URL name mappings
  139. list_url_name = 'legacy:ls-list'
  140. create_url_name = 'legacy:ls-create'
  141. update_url_name = 'legacy:ls-update'
  142. delete_url_name = 'legacy:ls-delete'
  143. config_fields = ["id", "lot_no", "code", "avg", "start_time", "end_time", "grade", "created_at"] # Display these fields first
  144. config_field_orders = ["id", "lot_no", "code", "avg", "start_time", "end_time", "grade", "created_at"] # Display these fields first
  145. config_readonly_fields = ["lot_no"]
  146. # config_edit_fields = ["lot_no", "code"]
  147. ordering = ["-created_at", "-id",]
  148. class VMasterViewCRUDView(ConfigurableCRUDView):
  149. """
  150. CRUD view for managing VMasterView objects.
  151. """
  152. model = VMasterView
  153. list_template_name = 'legacy/datacrud_list.html'
  154. detail_template_name = 'legacy/datacrud_detail.html'
  155. form_template_name = 'legacy/datacrud_form.html'
  156. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  157. filterset_class = VMasterViewFilter # Replace with the appropriate filter class if needed
  158. # Page title and URL mappings
  159. page_title = "VMaster View"
  160. list_url_name = 'legacy:vm-list'
  161. create_url_name = 'legacy:vm-create'
  162. update_url_name = 'legacy:vm-update'
  163. delete_url_name = 'legacy:vm-delete'
  164. # Configuration for fields
  165. # config_fields = ["id", "code", "description", "created_at", "updated_at"]
  166. # config_field_orders = ["id", "code", "description", "created_at", "updated_at"]
  167. # config_readonly_fields = ["id", "created_at"]
  168. # Default ordering
  169. # ordering = ["-created_at", "-id"]
  170. class MgMasterViewCRUDView(ConfigurableCRUDView):
  171. """
  172. CRUD view for managing MgMasterView objects.
  173. """
  174. model = MgMasterView
  175. list_template_name = 'legacy/datacrud_list.html'
  176. detail_template_name = 'legacy/datacrud_detail.html'
  177. form_template_name = 'legacy/datacrud_form.html'
  178. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  179. filterset_class = MgMasterViewFilter # Replace with the appropriate filter class if needed
  180. # Page title and URL mappings
  181. page_title = "MgMaster View"
  182. list_url_name = 'legacy:mg-list'
  183. create_url_name = 'legacy:mg-create'
  184. update_url_name = 'legacy:mg-update'
  185. delete_url_name = 'legacy:mg-delete'
  186. # Configuration for fields
  187. # config_fields = [
  188. # "id", "PRO0", "PRO1", "PRO1C", "PRO2", "PRO5",
  189. # "PRO8", "PRO9", "PRO10", "PRO11", "PRO12"
  190. # ]
  191. # config_field_orders = [
  192. # "id", "PRO0", "PRO1", "PRO1C", "PRO2", "PRO5",
  193. # "PRO8", "PRO9", "PRO10", "PRO11", "PRO12"
  194. # ]
  195. # config_readonly_fields = ["id"]
  196. # Default ordering
  197. # ordering = ["-id", "PRO2"]
  198. class BelMasterViewCRUDView(ConfigurableCRUDView):
  199. """
  200. CRUD view for managing BelMasterView objects.
  201. """
  202. model = BelMasterView
  203. list_template_name = 'legacy/datacrud_list.html'
  204. detail_template_name = 'legacy/datacrud_detail.html'
  205. form_template_name = 'legacy/datacrud_form.html'
  206. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  207. filterset_class = BelMasterViewFilter # Replace with the appropriate filter class if needed
  208. # Page title and URL mappings
  209. page_title = "BelMaster View"
  210. list_url_name = 'legacy:bel-list'
  211. create_url_name = 'legacy:bel-create'
  212. update_url_name = 'legacy:bel-update'
  213. delete_url_name = 'legacy:bel-delete'
  214. # Configuration for fields
  215. # config_fields = [
  216. # "id", "PRO0", "PRO1", "PRO1C", "PRO2", "PRO5",
  217. # "PRO8", "PRO9", "PRO10", "PRO11", "PRO12", "MC11",
  218. # "MC12", "MC14", "MC15", "MC16", "MC19", "MC20", "MC21"
  219. # ]
  220. # config_field_orders = [
  221. # "id", "PRO0", "PRO1", "PRO1C", "PRO2", "PRO5",
  222. # "PRO8", "PRO9", "PRO10", "PRO11", "PRO12", "MC11",
  223. # "MC12", "MC14", "MC15", "MC16", "MC19", "MC20", "MC21"
  224. # ]
  225. # config_readonly_fields = ["id"]
  226. # Default ordering
  227. # ordering = ["-id", "PRO2"]
  228. class EMasterViewCRUDView(ConfigurableCRUDView):
  229. """
  230. CRUD view for managing EMasterView objects.
  231. """
  232. model = EMasterView
  233. list_template_name = 'legacy/datacrud_list.html'
  234. detail_template_name = 'legacy/datacrud_detail.html'
  235. form_template_name = 'legacy/datacrud_form.html'
  236. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  237. filterset_class = EMasterViewFilter # Replace with the appropriate filter class
  238. # Page title and URL mappings
  239. page_title = "EMaster View"
  240. list_url_name = 'legacy:em-list'
  241. create_url_name = 'legacy:em-create'
  242. update_url_name = 'legacy:em-update'
  243. delete_url_name = 'legacy:em-delete'
  244. # Configuration for fields
  245. # config_fields = [
  246. # "id", "PRO0", "PRO1", "PRO1C", "PRO2", "PRO5",
  247. # "PRO8", "PRO9", "PRO10", "PRO11", "PRO12", "PRO13",
  248. # "PRO14", "PRO15", "PRO16", "PRO17", "PRO18", "PRO21",
  249. # "PRO25", "PRO27"
  250. # ]
  251. # config_field_orders = [
  252. # "id", "PRO0", "PRO1", "PRO1C", "PRO2", "PRO5",
  253. # "PRO8", "PRO9", "PRO10", "PRO11", "PRO12", "PRO13",
  254. # "PRO14", "PRO15", "PRO16", "PRO17", "PRO18", "PRO21",
  255. # "PRO25", "PRO27"
  256. # ]
  257. # config_readonly_fields = ["id"]
  258. # Default ordering
  259. # ordering = ["-id", "PRO2"]
  260. class DataRLCRUDView(ConfigurableCRUDView):
  261. model = DataRl
  262. list_template_name = 'legacy/datacrud_list.html'
  263. detail_template_name = 'legacy/datacrud_detail.html'
  264. form_template_name = 'legacy/datacrud_form.html'
  265. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  266. filterset_class = DataRlFilter
  267. page_title = "Data RL"
  268. # URL name mappings
  269. list_url_name = 'legacy:datarl-list'
  270. create_url_name = 'legacy:datarl-create'
  271. update_url_name = 'legacy:datarl-update'
  272. delete_url_name = 'legacy:datarl-delete'
  273. # excludes = ["splitdata"]
  274. config_field_orders = ["id", "lot_no", "code"] # Display these fields first
  275. class DataWbCRUDView(ConfigurableCRUDView):
  276. model = DataWb
  277. list_template_name = 'legacy/datacrud_list.html'
  278. detail_template_name = 'legacy/datacrud_detail.html'
  279. form_template_name = 'legacy/datacrud_form.html'
  280. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  281. filterset_class = DataWbFilter
  282. page_title = "Data WB"
  283. # URL name mappings
  284. list_url_name = 'legacy:datawb-list'
  285. create_url_name = 'legacy:datawb-create'
  286. update_url_name = 'legacy:datawb-update'
  287. delete_url_name = 'legacy:datawb-delete'
  288. # excludes = ["splitdata"]
  289. config_field_orders = ["id", "lot_no", "code"] # Display these fields first
  290. class LotSummaryRlCRUDView(ConfigurableCRUDView):
  291. model = LotSummaryRl
  292. list_template_name = 'legacy/datacrud_list.html'
  293. detail_template_name = 'legacy/datacrud_detail.html'
  294. form_template_name = 'legacy/datacrud_form.html'
  295. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  296. filterset_class = LotSummaryRlFilter
  297. page_title = "Lot Summary RL"
  298. # URL name mappings
  299. list_url_name = 'legacy:lsrl-list'
  300. create_url_name = 'legacy:lsrl-create'
  301. update_url_name = 'legacy:lsrl-update'
  302. delete_url_name = 'legacy:lsrl-delete'
  303. # excludes = ["splitdata"]
  304. config_field_orders = ["id", "lot_no", "code"] # Display these fields first
  305. class LotSummaryWbCRUDView(ConfigurableCRUDView):
  306. model = LotSummaryWb
  307. list_template_name = 'legacy/datacrud_list.html'
  308. detail_template_name = 'legacy/datacrud_detail.html'
  309. form_template_name = 'legacy/datacrud_form.html'
  310. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  311. filterset_class = LotSummaryWbFilter
  312. page_title = "Lot Summary WB"
  313. # URL name mappings
  314. list_url_name = 'legacy:lswb-list'
  315. create_url_name = 'legacy:lswb-create'
  316. update_url_name = 'legacy:lswb-update'
  317. delete_url_name = 'legacy:lswb-delete'
  318. # excludes = ["splitdata"]
  319. config_field_orders = ["id", "lot_no", "code"] # Display these fields first
  320. class RotateDataCRUDView(ConfigurableCRUDView):
  321. model = RotateData
  322. list_template_name = 'legacy/datacrud_list.html'
  323. detail_template_name = 'legacy/datacrud_detail.html'
  324. form_template_name = 'legacy/datacrud_form.html'
  325. confirm_delete_template_name = 'legacy/datacrud_confirm_delete.html'
  326. filterset_class = RotateDataFilter
  327. page_title = "Rotate Data"
  328. # URL name mappings
  329. list_url_name = 'legacy:rotate-list'
  330. create_url_name = 'legacy:rotate-create'
  331. update_url_name = 'legacy:rotate-update'
  332. delete_url_name = 'legacy:rotate-delete'
  333. # excludes = ["splitdata"]
  334. config_field_orders = ["id", "lot_no", "code"] # Display these fields first