| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- from django.shortcuts import render
- # Create your views here.
- from django_filters.views import FilterView
- from django.urls import reverse_lazy, reverse
- from django.views.generic import (
- ListView,
- DetailView,
- CreateView,
- UpdateView,
- DeleteView,
- )
- from django.core.paginator import Paginator
- from .models import Data
- from .filters import DataFilter
- from django.urls import reverse
- from django.contrib import messages
- class DataListView(FilterView, ListView):
- model = Data
- template_name = 'legacy/data_list.html'
- # context_object_name = 'data_list'
- paginate_by = 10 # Enable pagination
- # Specify the filter class
- filterset_class = DataFilter
- def get_context_data(self, **kwargs):
- context = super().get_context_data(**kwargs)
- # Pass model fields to the template
- context['fields'] = [field for field in self.model._meta.get_fields()]
- context['bs'] = [
- {'label': 'Dashboard', 'url': reverse('dashboard:index')},
- {'label': 'Data', 'url': reverse('legacy:data-list')},
- ]
- return context
- # Read (detail view)
- class DataDetailView(DetailView):
- model = Data
- template_name = 'data_detail.html'
- context_object_name = 'data' # Use this name in templates
- # Create
- class DataCreateView(CreateView):
- model = Data
- template_name = 'legacy/data_form.html'
- fields = '__all__' # Use all fields or specify a list of fields
- def form_valid(self, form):
- response = super().form_valid(form)
- messages.success(self.request, "Data has been successfully created!")
- return response
-
- def get_success_url(self):
- # Redirect to the edit page of the newly created object
- return reverse('legacy:data-update', kwargs={'pk': self.object.pk})
- def get_context_data(self, **kwargs):
- context = super().get_context_data(**kwargs)
- # Pass model fields to the template
- context['bs'] = [
- {'label': 'Dashboard', 'url': reverse('dashboard:index')},
- {'label': 'Data', 'url': reverse('legacy:data-list')},
- {'label': 'Data Create', 'url': reverse('legacy:data-create')},
- ]
- return context
- # Update
- class DataUpdateView(UpdateView):
- model = Data
- template_name = 'legacy/data_form.html'
- fields = '__all__' # Use all fields or specify a list of fields
-
- def get_success_url(self):
- # Redirect to the edit page of the newly created object
- return reverse('legacy:data-update', kwargs={'pk': self.object.pk})
- def form_valid(self, form):
- response = super().form_valid(form)
- messages.success(self.request, "Data has been successfully updated!")
- return response
- def get_context_data(self, **kwargs):
- context = super().get_context_data(**kwargs)
- # Pass model fields to the template
- context['bs'] = [
- {'label': 'Dashboard', 'url': reverse('dashboard:index')},
- {'label': 'Data', 'url': reverse('legacy:data-list')},
- {'label': self.object, 'url': reverse('legacy:data-update', kwargs={'pk':self.object.pk})},
- ]
- return context
- # Delete
- class DataDeleteView(DeleteView):
- model = Data
- template_name = 'legacy/data_confirm_delete.html'
- success_url = reverse_lazy('legacy:data-list') # Redirect after deletion
- def get_context_data(self, **kwargs):
- context = super().get_context_data(**kwargs)
- # Pass model fields to the template
- context['bs'] = [
- {'label': 'Dashboard', 'url': reverse('dashboard:index')},
- {'label': 'Data', 'url': reverse('legacy:data-list')},
- {'label': self.object, 'url': reverse('legacy:data-update', kwargs={'pk':self.object.pk})},
- ]
- return context
|