Нет описания

views.py 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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
  14. from .filters import DataFilter
  15. from django.urls import reverse
  16. from django.contrib import messages
  17. class DataListView(FilterView, ListView):
  18. model = Data
  19. template_name = 'legacy/data_list.html'
  20. # context_object_name = 'data_list'
  21. paginate_by = 10 # Enable pagination
  22. # Specify the filter class
  23. filterset_class = DataFilter
  24. def get_context_data(self, **kwargs):
  25. context = super().get_context_data(**kwargs)
  26. # Pass model fields to the template
  27. context['fields'] = [field for field in self.model._meta.get_fields()]
  28. context['bs'] = [
  29. {'label': 'Dashboard', 'url': reverse('dashboard:index')},
  30. {'label': 'Data', 'url': reverse('legacy:data-list')},
  31. ]
  32. return context
  33. # Read (detail view)
  34. class DataDetailView(DetailView):
  35. model = Data
  36. template_name = 'data_detail.html'
  37. context_object_name = 'data' # Use this name in templates
  38. # Create
  39. class DataCreateView(CreateView):
  40. model = Data
  41. template_name = 'legacy/data_form.html'
  42. fields = '__all__' # Use all fields or specify a list of fields
  43. def form_valid(self, form):
  44. response = super().form_valid(form)
  45. messages.success(self.request, "Data has been successfully created!")
  46. return response
  47. def get_success_url(self):
  48. # Redirect to the edit page of the newly created object
  49. return reverse('legacy:data-update', kwargs={'pk': self.object.pk})
  50. def get_context_data(self, **kwargs):
  51. context = super().get_context_data(**kwargs)
  52. # Pass model fields to the template
  53. context['bs'] = [
  54. {'label': 'Dashboard', 'url': reverse('dashboard:index')},
  55. {'label': 'Data', 'url': reverse('legacy:data-list')},
  56. {'label': 'Data Create', 'url': reverse('legacy:data-create')},
  57. ]
  58. return context
  59. # Update
  60. class DataUpdateView(UpdateView):
  61. model = Data
  62. template_name = 'legacy/data_form.html'
  63. fields = '__all__' # Use all fields or specify a list of fields
  64. def get_success_url(self):
  65. # Redirect to the edit page of the newly created object
  66. return reverse('legacy:data-update', kwargs={'pk': self.object.pk})
  67. def form_valid(self, form):
  68. response = super().form_valid(form)
  69. messages.success(self.request, "Data has been successfully updated!")
  70. return response
  71. def get_context_data(self, **kwargs):
  72. context = super().get_context_data(**kwargs)
  73. # Pass model fields to the template
  74. context['bs'] = [
  75. {'label': 'Dashboard', 'url': reverse('dashboard:index')},
  76. {'label': 'Data', 'url': reverse('legacy:data-list')},
  77. {'label': self.object, 'url': reverse('legacy:data-update', kwargs={'pk':self.object.pk})},
  78. ]
  79. return context
  80. # Delete
  81. class DataDeleteView(DeleteView):
  82. model = Data
  83. template_name = 'legacy/data_confirm_delete.html'
  84. success_url = reverse_lazy('legacy:data-list') # Redirect after deletion
  85. def get_context_data(self, **kwargs):
  86. context = super().get_context_data(**kwargs)
  87. # Pass model fields to the template
  88. context['bs'] = [
  89. {'label': 'Dashboard', 'url': reverse('dashboard:index')},
  90. {'label': 'Data', 'url': reverse('legacy:data-list')},
  91. {'label': self.object, 'url': reverse('legacy:data-update', kwargs={'pk':self.object.pk})},
  92. ]
  93. return context