Commit 318b3079 authored by impfundev's avatar impfundev

feat: implement cache framework with redis

parent 51b012d8
from django.urls import path
from book_loans.views import index, update, delete
from django.views.decorators.cache import cache_page
from django.conf import settings
urlpatterns = [
path("", index, name="book_loan_lists"),
path(
"",
cache_page(settings.CACHE_TTL, key_prefix="book_loans")(index),
name="book_loan_lists",
),
path("<id>/update/", update, name="update_book"),
path("<id>/delete/", delete, name="delete_book_loan"),
]
import jwt
from django.conf import settings
from django.core.cache import cache
from datetime import datetime
from django.db.models import Q
# from django.db.models import Q
from django.http import HttpResponseRedirect
from django.shortcuts import render, get_object_or_404
from book_loans.models import Book, BookLoans
......@@ -49,6 +51,7 @@ def index(request):
librarians_id=librarians_id,
return_date=return_date,
)
cache.clear()
if request.method == "GET":
# query = request.GET.get("q")
......@@ -61,8 +64,10 @@ def index(request):
# context["book_loans"] = filtered_book_list
if order == "new":
cache.clear()
context["book_loans"] = BookLoans.objects.all().order_by("-created_at")[:10]
elif order == "old":
cache.clear()
context["book_loans"] = BookLoans.objects.all().order_by("created_at")[:10]
return render(request, "loans.html", context)
......@@ -121,6 +126,7 @@ def update(request, id):
if updated_loan.return_date is not None and book.stock < new_stock:
Book.objects.filter(id=book_id).update(stock_in=new_stock)
cache.clear()
return HttpResponseRedirect("/dashboard/book-loans")
context["form"] = form
......@@ -142,6 +148,7 @@ def delete(request, id):
books.filter(id=book_id).update(stock=new_stock)
book_loan.delete()
cache.clear()
return HttpResponseRedirect("/dashboard/book-loans")
......
from django.urls import path
from .views import index, update, delete
from django.views.decorators.cache import cache_page
from django.conf import settings
urlpatterns = [
path("", index, name="book_list"),
path(
"",
cache_page(settings.CACHE_TTL, key_prefix="books")(index),
name="book_list",
),
path("<int:id>/update/", update, name="book_update"),
path("<int:id>/delete/", delete, name="book_delete"),
]
from django.shortcuts import get_object_or_404, render
from django.core.cache import cache
from django.http import HttpResponseRedirect
from datetime import datetime
from django.db.models import Q
......@@ -20,20 +21,24 @@ def index(request):
description = form.data["description"]
Book.objects.create(title=title, stock=stock, description=description)
cache.clear()
if request.method == "GET":
query = request.GET.get("q")
order = request.GET.get("o")
if query is not None:
cache.clear()
filtered_book_list = Book.objects.filter(
Q(title__icontains=query) | Q(description__icontains=query)
).order_by("-created_at")[:10]
context["books"] = filtered_book_list
if order == "new":
cache.clear()
context["books"] = Book.objects.all().order_by("-updated_at")[:10]
elif order == "old":
cache.clear()
context["books"] = Book.objects.all().order_by("updated_at")[:10]
return render(request, "book.html", context)
......@@ -64,6 +69,7 @@ def update(request, id):
description=description,
updated_at=datetime.now(),
)
cache.clear()
return HttpResponseRedirect("/dashboard/books")
context["form"] = form
......@@ -77,6 +83,7 @@ def delete(request, id):
if request.method == "POST":
book.delete()
cache.clear()
return HttpResponseRedirect("/dashboard/books")
return render(request, "book.html", context)
......@@ -174,6 +174,8 @@ CACHES = {
},
}
CACHE_TTL = 60 * 15 # 15 Minute
SESSION_ENGINE = "django.contrib.sessions.backends.cached_db"
# Default primary key field type
......
......@@ -19,9 +19,15 @@ from django.contrib import admin
from django.urls import path
from django.conf.urls import include
from dashboards.views import home
from django.views.decorators.cache import cache_page
from django.conf import settings
urlpatterns = [
path("", home, name="homepage"),
path(
"",
cache_page(settings.CACHE_TTL, key_prefix="homepage")(home),
name="homepage",
),
path("dashboard/", include("dashboards.urls")),
path("admin/", admin.site.urls),
path("auth/", include("authentications.urls")),
......
from django.urls import path, include
from dashboards.views import index
from django.views.decorators.cache import cache_page
from django.conf import settings
urlpatterns = [
path("", index, name="dashboard"),
path(
"",
cache_page(settings.CACHE_TTL, key_prefix="dashboard")(index),
name="dashboard",
),
path("books/", include("books.urls")),
path("members/", include("members.urls")),
path("book-loans/", include("book_loans.urls")),
......
from django.urls import path
from librarians.views import index, update, delete
from django.views.decorators.cache import cache_page
from django.conf import settings
urlpatterns = [
path("", index, name="librarian_lists"),
path(
"",
cache_page(settings.CACHE_TTL, key_prefix="librarians")(index),
name="librarian_lists",
),
path("<id>/update/", update, name="update_librarian"),
path("<id>/delete/", delete, name="delete_librarian"),
]
from django.shortcuts import get_object_or_404, render
from django.core.cache import cache
from django.http import HttpResponseRedirect
from django.db.models import Q
from datetime import datetime
......@@ -19,22 +20,26 @@ def index(request):
password = form.data["password"]
Librarians.objects.create(name=name, email=email, password=password)
cache.clear()
if request.method == "GET":
query = request.GET.get("q")
order = request.GET.get("o")
if query is not None:
cache.clear()
filtered_book_list = Librarians.objects.filter(
Q(name__icontains=query) | Q(email__icontains=query)
).order_by("-created_at")[:10]
context["librarians"] = filtered_book_list
if order == "new":
cache.clear()
context["librarians"] = Librarians.objects.all().order_by("-updated_at")[
:10
]
elif order == "old":
cache.clear()
context["librarians"] = Librarians.objects.all().order_by("updated_at")[:10]
return render(request, "librarians.html", context)
......@@ -61,6 +66,7 @@ def update(request, id):
librarian.update(
name=name, email=email, password=password, updated_at=datetime.now()
)
cache.clear()
return HttpResponseRedirect("/dashboard/librarians")
context["form"] = form
......@@ -74,6 +80,7 @@ def delete(request, id):
if request.method == "POST":
librarian.delete()
cache.clear()
return HttpResponseRedirect("/dashboard/librarians")
return render(request, "librarians.html", context)
from django.urls import path
from members.views import index, update, delete
from django.views.decorators.cache import cache_page
from django.conf import settings
urlpatterns = [
path("", index, name="member_lists"),
path(
"",
cache_page(settings.CACHE_TTL, key_prefix="members")(index),
name="member_lists",
),
path("<id>/update/", update, name="update_member"),
path("<id>/delete/", delete, name="delete_member"),
]
from django.shortcuts import get_object_or_404, render
from django.core.cache import cache
from django.http import HttpResponseRedirect
from django.db.models import Q
from datetime import datetime
......@@ -19,20 +20,24 @@ def index(request):
password = form.data["password"]
Members.objects.create(name=name, email=email, password=password)
cache.clear()
if request.method == "GET":
query = request.GET.get("q")
order = request.GET.get("o")
if query is not None:
cache.clear()
filtered_book_list = Members.objects.filter(
Q(name__icontains=query) | Q(email__icontains=query)
).order_by("-created_at")[:10]
context["members"] = filtered_book_list
if order == "new":
cache.clear()
context["members"] = Members.objects.all().order_by("-updated_at")[:10]
elif order == "old":
cache.clear()
context["members"] = Members.objects.all().order_by("updated_at")[:10]
return render(request, "members.html", context)
......@@ -59,6 +64,7 @@ def update(request, id):
member.update(
name=name, email=email, password=password, updated_at=datetime.now()
)
cache.clear()
return HttpResponseRedirect("/dashboard/members")
context["form"] = form
......@@ -72,6 +78,7 @@ def delete(request, id):
if request.method == "POST":
member.delete()
cache.clear()
return HttpResponseRedirect("/dashboard/members")
return render(request, "members.html", context)
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