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