Commit 45dab188 authored by impfundev's avatar impfundev

fix: shifting member from function based to class based view

parent b2feee12
...@@ -25,7 +25,7 @@ class LibrarianListView(generic.ListView): ...@@ -25,7 +25,7 @@ class LibrarianListView(generic.ListView):
elif order == "old": elif order == "old":
queryset = queryset.order_by("created_at") queryset = queryset.order_by("created_at")
return queryset return queryset.order_by("-updated_at")
class LibrarianCreateView(generic.edit.CreateView): class LibrarianCreateView(generic.edit.CreateView):
......
...@@ -20,7 +20,7 @@ class MemberForm(forms.ModelForm): ...@@ -20,7 +20,7 @@ class MemberForm(forms.ModelForm):
"class": "form-control", "class": "form-control",
} }
), ),
"password": forms.TextInput( "password": forms.PasswordInput(
attrs={ attrs={
"placeholder": "Password", "placeholder": "Password",
"class": "form-control", "class": "form-control",
......
from django.urls import path from django.urls import path
from members.views import index, update, delete from members.views import (
MemberListView,
MemberUpdateView,
MemberCreateView,
MemberDeleteView,
)
urlpatterns = [ urlpatterns = [
path("", index, name="member_lists"), path("", MemberListView.as_view(), name="member_lists"),
path("<id>/update/", update, name="update_member"), path("add/", MemberCreateView.as_view(), name="add_member"),
path("<id>/delete/", delete, name="delete_member"), path("<int:pk>/", MemberUpdateView.as_view(), name="update_member"),
path("<int:pk>/delete/", MemberDeleteView.as_view(), name="delete_member"),
] ]
from django.shortcuts import get_object_or_404, render
from django.http import HttpResponseRedirect
from django.db.models import Q from django.db.models import Q
from datetime import datetime from django.views import generic
from members.models import Members from members.models import Members
from members.forms import MemberForm from members.forms import MemberForm
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
def index(request):
members = Members.objects.order_by("created_at")
context = {"members": members, "form": MemberForm()}
default_page = 1
page = request.GET.get("page", default_page)
items_per_page = 5
paginator = Paginator(members, items_per_page)
try:
page_obj = paginator.page(page)
context["page_obj"] = page_obj
context["members"] = page_obj
except PageNotAnInteger:
page_obj = paginator.page(default_page)
context["page_obj"] = page_obj
context["members"] = page_obj
except EmptyPage:
page_obj = paginator.page(paginator.num_pages)
context["page_obj"] = page_obj
context["members"] = page_obj
if request.method == "POST":
form = MemberForm(request.POST)
if form.is_valid:
name = form.data["name"]
email = form.data["email"]
password = form.data["password"]
Members.objects.create(name=name, email=email, password=password)
if request.method == "GET": class MemberListView(generic.ListView):
keyword = request.GET.get("q") model = Members
order = request.GET.get("o") template_name = "members.html"
paginate_by = 5
if keyword is not None: def get_queryset(self):
queryset = super().get_queryset()
keyword = self.request.GET.get("q")
order = self.request.GET.get("o")
filtered_book_list = Members.objects.filter( if keyword:
queryset = queryset.filter(
Q(name__icontains=keyword) | Q(email__icontains=keyword) Q(name__icontains=keyword) | Q(email__icontains=keyword)
).order_by("-created_at") ).order_by("-created_at")
context["members"] = filtered_book_list
if order:
if order == "new": if order == "new":
queryset = queryset.order_by("-created_at")
context["members"] = Members.objects.all().order_by("-updated_at")
elif order == "old": elif order == "old":
queryset = queryset.order_by("created_at")
context["members"] = Members.objects.all().order_by("updated_at") return queryset.order_by("-updated_at")
return render(request, "members.html", context)
def update(request, id):
latest_member_list = Members.objects.order_by("created_at")
context = {"members": latest_member_list}
member = Members.objects.get(id=id)
initial = {
"name": member.name,
"email": member.email,
"password": member.password,
}
form = MemberForm(request.POST or None, initial=initial)
if request.method == "POST":
if form.is_valid:
name = form.data["name"]
email = form.data["email"]
password = form.data["password"]
member = Members.objects.filter(id=id)
member.update(
name=name, email=email, password=password, updated_at=datetime.now()
)
return HttpResponseRedirect("/dashboard/members")
context["form"] = form
context["member_id"] = id
return render(request, "members_update_form.html", context)
class MemberCreateView(generic.edit.CreateView):
model = Members
form_class = MemberForm
success_url = "/dashboard/members/"
template_name = "form/create_form.html"
def delete(request, id):
context = {}
member = get_object_or_404(Members, id=id)
if request.method == "POST": class MemberUpdateView(generic.edit.UpdateView):
member.delete() model = Members
form_class = MemberForm
success_url = "/dashboard/members"
template_name = "form/update_form.html"
return HttpResponseRedirect("/dashboard/members")
return render(request, "members.html", context) class MemberDeleteView(generic.edit.DeleteView):
model = Members
success_url = "/dashboard/members"
template_name = "form/delete_form.html"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment