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):
elif order == "old":
queryset = queryset.order_by("created_at")
return queryset
return queryset.order_by("-updated_at")
class LibrarianCreateView(generic.edit.CreateView):
......
......@@ -20,7 +20,7 @@ class MemberForm(forms.ModelForm):
"class": "form-control",
}
),
"password": forms.TextInput(
"password": forms.PasswordInput(
attrs={
"placeholder": "Password",
"class": "form-control",
......
from django.urls import path
from members.views import index, update, delete
from members.views import (
MemberListView,
MemberUpdateView,
MemberCreateView,
MemberDeleteView,
)
urlpatterns = [
path("", index, name="member_lists"),
path("<id>/update/", update, name="update_member"),
path("<id>/delete/", delete, name="delete_member"),
path("", MemberListView.as_view(), name="member_lists"),
path("add/", MemberCreateView.as_view(), name="add_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 datetime import datetime
from django.views import generic
from members.models import Members
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":
keyword = request.GET.get("q")
order = request.GET.get("o")
class MemberListView(generic.ListView):
model = Members
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)
).order_by("-created_at")
context["members"] = filtered_book_list
if order == "new":
context["members"] = Members.objects.all().order_by("-updated_at")
elif order == "old":
context["members"] = Members.objects.all().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()
)
if order:
if order == "new":
queryset = queryset.order_by("-created_at")
elif order == "old":
queryset = queryset.order_by("created_at")
return HttpResponseRedirect("/dashboard/members")
return queryset.order_by("-updated_at")
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":
member.delete()
class MemberUpdateView(generic.edit.UpdateView):
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