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
c9731bfc
Commit
c9731bfc
authored
Aug 06, 2024
by
Ilham Maulana
💻
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: pagination
parent
895ae970
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
31 additions
and
5 deletions
+31
-5
views.py
api/book/views.py
+16
-3
views.py
api/loans/views.py
+15
-2
No files found.
api/book/views.py
View file @
c9731bfc
from
django.http
import
JsonResponse
from
django.http
import
JsonResponse
from
django.core.paginator
import
Paginator
from
django.views.decorators.csrf
import
csrf_exempt
from
django.views.decorators.csrf
import
csrf_exempt
from
book.models
import
Book
,
Category
from
book.models
import
Book
,
Category
...
@@ -10,6 +10,7 @@ def bookView(request):
...
@@ -10,6 +10,7 @@ def bookView(request):
books
=
Book
.
objects
.
all
()
.
order_by
(
"created_at"
)
books
=
Book
.
objects
.
all
()
.
order_by
(
"created_at"
)
category
=
request
.
GET
.
get
(
"category"
)
category
=
request
.
GET
.
get
(
"category"
)
keyword
=
request
.
GET
.
get
(
"search"
)
keyword
=
request
.
GET
.
get
(
"search"
)
page_number
=
request
.
GET
.
get
(
"page"
,
1
)
if
request
.
method
==
"GET"
:
if
request
.
method
==
"GET"
:
if
category
:
if
category
:
...
@@ -18,8 +19,11 @@ def bookView(request):
...
@@ -18,8 +19,11 @@ def bookView(request):
if
keyword
and
len
(
keyword
)
>=
3
:
if
keyword
and
len
(
keyword
)
>=
3
:
books
=
books
.
filter
(
title__icontains
=
keyword
)
books
=
books
.
filter
(
title__icontains
=
keyword
)
paginator
=
Paginator
(
books
,
10
)
page_obj
=
paginator
.
get_page
(
page_number
)
data
=
[]
data
=
[]
for
book_item
in
books
:
for
book_item
in
page_obj
:
if
book_item
.
category
is
not
None
:
if
book_item
.
category
is
not
None
:
book
=
{
book
=
{
"id"
:
book_item
.
id
,
"id"
:
book_item
.
id
,
...
@@ -40,7 +44,16 @@ def bookView(request):
...
@@ -40,7 +44,16 @@ def bookView(request):
"cover_image"
:
"http://127.0.0.1:8000"
+
book_item
.
cover_image
.
url
,
"cover_image"
:
"http://127.0.0.1:8000"
+
book_item
.
cover_image
.
url
,
}
}
data
.
append
(
book
)
data
.
append
(
book
)
return
JsonResponse
(
data
,
status
=
200
,
safe
=
False
)
response_data
=
{
"data"
:
data
,
"has_next"
:
page_obj
.
has_next
(),
"has_prev"
:
page_obj
.
has_previous
(),
"page_number"
:
page_obj
.
number
,
"total_pages"
:
paginator
.
num_pages
,
}
return
JsonResponse
(
response_data
,
status
=
200
,
safe
=
False
)
return
JsonResponse
({
"message"
:
"Invalid request method"
},
status
=
405
)
return
JsonResponse
({
"message"
:
"Invalid request method"
},
status
=
405
)
...
...
api/loans/views.py
View file @
c9731bfc
import
jwt
import
jwt
from
django.utils
import
timezone
from
django.utils
import
timezone
from
django.http
import
JsonResponse
from
django.http
import
JsonResponse
from
django.core.paginator
import
Paginator
from
django.views.decorators.csrf
import
csrf_exempt
from
django.views.decorators.csrf
import
csrf_exempt
from
loans.models
import
BookLoan
from
loans.models
import
BookLoan
...
@@ -16,6 +17,7 @@ def bookLoanView(request):
...
@@ -16,6 +17,7 @@ def bookLoanView(request):
loans
=
BookLoan
.
objects
.
all
()
.
order_by
(
"loan_date"
)
loans
=
BookLoan
.
objects
.
all
()
.
order_by
(
"loan_date"
)
near_outstanding
=
request
.
GET
.
get
(
"near_outstanding"
)
near_outstanding
=
request
.
GET
.
get
(
"near_outstanding"
)
overdue
=
request
.
GET
.
get
(
"overdue"
)
overdue
=
request
.
GET
.
get
(
"overdue"
)
page_number
=
request
.
GET
.
get
(
"page"
,
1
)
try
:
try
:
token
=
header_authorization
.
split
(
" "
)[
1
]
token
=
header_authorization
.
split
(
" "
)[
1
]
...
@@ -32,8 +34,11 @@ def bookLoanView(request):
...
@@ -32,8 +34,11 @@ def bookLoanView(request):
"loan_date"
"loan_date"
)
)
paginator
=
Paginator
(
loans
,
10
)
page_obj
=
paginator
.
get_page
(
page_number
)
data
=
[]
data
=
[]
for
loan_item
in
loans
:
for
loan_item
in
page_obj
:
remaining_loan_time
=
(
remaining_loan_time
=
(
str
(
loan_item
.
due_date
.
day
-
now
.
day
)
+
" days left"
str
(
loan_item
.
due_date
.
day
-
now
.
day
)
+
" days left"
)
)
...
@@ -61,7 +66,15 @@ def bookLoanView(request):
...
@@ -61,7 +66,15 @@ def bookLoanView(request):
}
}
data
.
append
(
loan_obj
)
data
.
append
(
loan_obj
)
return
JsonResponse
(
data
,
safe
=
False
,
status
=
200
)
response_data
=
{
"data"
:
data
,
"has_next"
:
page_obj
.
has_next
(),
"has_prev"
:
page_obj
.
has_previous
(),
"page_number"
:
page_obj
.
number
,
"total_pages"
:
paginator
.
num_pages
,
}
return
JsonResponse
(
response_data
,
safe
=
False
,
status
=
200
)
except
jwt
.
exceptions
.
InvalidTokenError
:
except
jwt
.
exceptions
.
InvalidTokenError
:
return
JsonResponse
({
"message"
:
"Unauthorized"
},
status
=
401
)
return
JsonResponse
({
"message"
:
"Unauthorized"
},
status
=
401
)
...
...
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