Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
L
library-app-django
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ilham Maulana
library-app-django
Commits
318b3079
Commit
318b3079
authored
Jul 05, 2024
by
impfundev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: implement cache framework with redis
parent
51b012d8
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
73 additions
and
7 deletions
+73
-7
urls.py
book_loans/urls.py
+7
-1
views.py
book_loans/views.py
+8
-1
urls.py
books/urls.py
+7
-1
views.py
books/views.py
+7
-0
settings.py
config/settings.py
+2
-0
urls.py
config/urls.py
+7
-1
urls.py
dashboards/urls.py
+7
-1
urls.py
librarians/urls.py
+7
-1
views.py
librarians/views.py
+7
-0
urls.py
members/urls.py
+7
-1
views.py
members/views.py
+7
-0
requirements.txt
requirements.txt
+0
-0
No files found.
book_loans/urls.py
View file @
318b3079
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"
),
]
book_loans/views.py
View file @
318b3079
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"
)
...
...
books/urls.py
View file @
318b3079
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"
),
]
books/views.py
View file @
318b3079
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
)
config/settings.py
View file @
318b3079
...
...
@@ -174,6 +174,8 @@ CACHES = {
},
}
CACHE_TTL
=
60
*
15
# 15 Minute
SESSION_ENGINE
=
"django.contrib.sessions.backends.cached_db"
# Default primary key field type
...
...
config/urls.py
View file @
318b3079
...
...
@@ -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"
)),
...
...
dashboards/urls.py
View file @
318b3079
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"
)),
...
...
librarians/urls.py
View file @
318b3079
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"
),
]
librarians/views.py
View file @
318b3079
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
)
members/urls.py
View file @
318b3079
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"
),
]
members/views.py
View file @
318b3079
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
)
requirements.txt
View file @
318b3079
B
asgiref
==3.8.1
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment