Ei kuvausta

views.py 14KB

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