Нет описания

views.py 14KB

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