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
9bae7a9f
Commit
9bae7a9f
authored
Jul 05, 2024
by
impfundev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: pagination
parent
97794f84
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
235 additions
and
126 deletions
+235
-126
book_loan_table_data.html
book_loans/templates/book_loan_table_data.html
+53
-54
views.py
book_loans/views.py
+26
-4
book_table_data.html
books/templates/book_table_data.html
+1
-0
urls.py
books/urls.py
+6
-5
views.py
books/views.py
+24
-2
pagination.html
dashboards/templates/pagination.html
+25
-5
librarians_table_data.html
librarians/templates/librarians_table_data.html
+1
-0
views.py
librarians/views.py
+25
-3
members_table_data.html
members/templates/members_table_data.html
+50
-51
views.py
members/views.py
+24
-2
No files found.
book_loans/templates/book_loan_table_data.html
View file @
9bae7a9f
<div
class=
"table-responsive"
>
<table
class=
"table table-hover"
>
<table
class=
"table table-hover"
>
<thead>
<thead>
<tr
class=
"table-primary"
>
<tr
class=
"table-primary"
>
<th
scope=
"col"
>
Book
</th>
<th
scope=
"col"
>
Book
</th>
...
@@ -50,5 +49,5 @@
...
@@ -50,5 +49,5 @@
</tr>
</tr>
{% endif %}
{% endif %}
</tbody>
</tbody>
</table>
</table>
</div>
{% include "pagination.html" %}
book_loans/views.py
View file @
9bae7a9f
...
@@ -9,19 +9,41 @@ from django.shortcuts import render, get_object_or_404
...
@@ -9,19 +9,41 @@ from django.shortcuts import render, get_object_or_404
from
book_loans.models
import
Book
,
BookLoans
from
book_loans.models
import
Book
,
BookLoans
from
members.models
import
Members
from
members.models
import
Members
from
book_loans.forms
import
BookLoanForm
from
book_loans.forms
import
BookLoanForm
from
django.core.paginator
import
Paginator
,
PageNotAnInteger
,
EmptyPage
def
index
(
request
):
def
index
(
request
):
latest_book_loan_list
=
BookLoans
.
objects
.
order_by
(
"-created_at"
)[:
10
]
book_loan_lists
=
BookLoans
.
objects
.
all
()
books
=
Book
.
objects
.
all
()
books
=
Book
.
objects
.
all
()
member
=
Members
.
objects
.
all
()
member
=
Members
.
objects
.
all
()
context
=
{
context
=
{
"book_loans"
:
latest_book_loan_list
,
"book_loans"
:
book_loan_lists
,
"form"
:
BookLoanForm
(),
"form"
:
BookLoanForm
(),
"books"
:
books
,
"books"
:
books
,
"members"
:
member
,
"members"
:
member
,
}
}
default_page
=
1
page
=
request
.
GET
.
get
(
"page"
,
default_page
)
items_per_page
=
5
paginator
=
Paginator
(
book_loan_lists
,
items_per_page
)
try
:
page_obj
=
paginator
.
page
(
page
)
context
[
"page_obj"
]
=
page_obj
context
[
"book_loans"
]
=
page_obj
cache
.
clear
()
except
PageNotAnInteger
:
page_obj
=
paginator
.
page
(
default_page
)
context
[
"page_obj"
]
=
page_obj
context
[
"book_loans"
]
=
page_obj
cache
.
clear
()
except
EmptyPage
:
page_obj
=
paginator
.
page
(
paginator
.
num_pages
)
context
[
"page_obj"
]
=
page_obj
context
[
"book_loans"
]
=
page_obj
cache
.
clear
()
if
request
.
method
==
"POST"
:
if
request
.
method
==
"POST"
:
form
=
BookLoanForm
(
request
.
POST
)
form
=
BookLoanForm
(
request
.
POST
)
if
form
.
is_valid
:
if
form
.
is_valid
:
...
@@ -74,12 +96,12 @@ def index(request):
...
@@ -74,12 +96,12 @@ def index(request):
def
update
(
request
,
id
):
def
update
(
request
,
id
):
latest_book_loan_list
=
BookLoans
.
objects
.
order_by
(
"created_at"
)[:
10
]
book_loans
=
BookLoans
.
objects
.
order_by
(
"created_at"
)[:
10
]
loan
=
get_object_or_404
(
BookLoans
,
id
=
id
)
loan
=
get_object_or_404
(
BookLoans
,
id
=
id
)
books
=
Book
.
objects
.
all
()
books
=
Book
.
objects
.
all
()
member
=
Members
.
objects
.
all
()
member
=
Members
.
objects
.
all
()
context
=
{
context
=
{
"book_loans"
:
latest_book_loan_list
,
"book_loans"
:
book_loans
,
"loan"
:
loan
,
"loan"
:
loan
,
"books"
:
books
,
"books"
:
books
,
"members"
:
member
,
"members"
:
member
,
...
...
books/templates/book_table_data.html
View file @
9bae7a9f
...
@@ -46,3 +46,4 @@
...
@@ -46,3 +46,4 @@
{% endif %}
{% endif %}
</tbody>
</tbody>
</table>
</table>
{% include "pagination.html" %}
books/urls.py
View file @
9bae7a9f
...
@@ -4,11 +4,12 @@ from django.views.decorators.cache import cache_page
...
@@ -4,11 +4,12 @@ from django.views.decorators.cache import cache_page
from
django.conf
import
settings
from
django.conf
import
settings
urlpatterns
=
[
urlpatterns
=
[
path
(
# path(
""
,
# "",
cache_page
(
settings
.
CACHE_TTL
,
key_prefix
=
"books"
)(
index
),
# cache_page(settings.CACHE_TTL, key_prefix="books")(index),
name
=
"book_list"
,
# name="book_list",
),
# ),
path
(
""
,
index
,
name
=
"book_list"
),
path
(
"<int:id>/update/"
,
update
,
name
=
"book_update"
),
path
(
"<int:id>/update/"
,
update
,
name
=
"book_update"
),
path
(
"<int:id>/delete/"
,
delete
,
name
=
"book_delete"
),
path
(
"<int:id>/delete/"
,
delete
,
name
=
"book_delete"
),
]
]
books/views.py
View file @
9bae7a9f
from
django.shortcuts
import
get_object_or_404
,
render
from
django.shortcuts
import
get_object_or_404
,
render
from
django.core.cache
import
cache
from
django.core.cache
import
cache
from
django.http
import
HttpResponseRedirect
from
django.http
import
HttpResponseRedirect
from
datetime
import
datetime
from
datetime
import
datetime
from
django.db.models
import
Q
from
django.db.models
import
Q
from
books.models
import
Book
from
books.models
import
Book
from
books.forms
import
BookForm
from
books.forms
import
BookForm
from
django.core.paginator
import
Paginator
,
PageNotAnInteger
,
EmptyPage
def
index
(
request
):
def
index
(
request
):
context
=
{
"form"
:
BookForm
()}
context
=
{
"form"
:
BookForm
()}
latest_book_list
=
Book
.
objects
.
order_by
(
"-created_at"
)[:
10
]
books
=
Book
.
objects
.
all
()
context
[
"books"
]
=
latest_book_list
default_page
=
1
page
=
request
.
GET
.
get
(
"page"
,
default_page
)
items_per_page
=
5
paginator
=
Paginator
(
books
,
items_per_page
)
try
:
page_obj
=
paginator
.
page
(
page
)
context
[
"page_obj"
]
=
page_obj
context
[
"books"
]
=
page_obj
cache
.
clear
()
except
PageNotAnInteger
:
page_obj
=
paginator
.
page
(
default_page
)
context
[
"page_obj"
]
=
page_obj
context
[
"books"
]
=
page_obj
cache
.
clear
()
except
EmptyPage
:
page_obj
=
paginator
.
page
(
paginator
.
num_pages
)
context
[
"page_obj"
]
=
page_obj
context
[
"books"
]
=
page_obj
cache
.
clear
()
if
request
.
method
==
"POST"
:
if
request
.
method
==
"POST"
:
form
=
BookForm
(
request
.
POST
)
form
=
BookForm
(
request
.
POST
)
...
...
dashboards/templates/pagination.html
View file @
9bae7a9f
<nav
aria-label=
"Page navigation example"
>
<nav
aria-label=
"Page navigation example"
>
<ul
class=
"pagination"
>
<ul
class=
"pagination"
>
<li
class=
"page-item"
><a
class=
"page-link"
href=
"#"
>
Previous
</a></li>
{% if page_obj.has_previous %}
<li
class=
"page-item"
><a
class=
"page-link"
href=
"#"
>
1
</a></li>
<li
class=
"page-item"
>
<li
class=
"page-item"
><a
class=
"page-link"
href=
"#"
>
2
</a></li>
<a
class=
"page-link"
href=
"?page={{ page_obj.previous_page_number }}"
<li
class=
"page-item"
><a
class=
"page-link"
href=
"#"
>
3
</a></li>
>
Previous
</a
<li
class=
"page-item"
><a
class=
"page-link"
href=
"#"
>
Next
</a></li>
>
</li>
{% else %}
<li
class=
"page-item"
>
<a
class=
"page-link disabled"
href=
"#"
>
Previous
</a>
</li>
{% endif %} {% for index in page_obj.paginator.page_range %}
<li
class=
"page-item {% if page_obj.number == index %}active{% endif %}"
>
<a
class=
"page-link"
href=
"?page={{ index }}"
>
{{ index }}
</a>
</li>
{% endfor %} {% if page_obj.has_next %}
<li
class=
"page-item"
>
<a
class=
"page-link"
href=
"?page={{ page_obj.next_page_number }}"
>
Next
</a
>
</li>
{% else %}
<li
class=
"page-item"
>
<a
class=
"page-link disabled"
href=
"#"
>
Next
</a>
</li>
{% endif %}
</ul>
</ul>
</nav>
</nav>
librarians/templates/librarians_table_data.html
View file @
9bae7a9f
...
@@ -44,3 +44,4 @@
...
@@ -44,3 +44,4 @@
{% endif %}
{% endif %}
</tbody>
</tbody>
</table>
</table>
{% include "pagination.html" %}
librarians/views.py
View file @
9bae7a9f
from
authentications.utils
import
create_auth_session
,
Hasher
from
authentications.utils
import
Hasher
from
django.shortcuts
import
get_object_or_404
,
render
from
django.shortcuts
import
get_object_or_404
,
render
from
django.core.cache
import
cache
from
django.core.cache
import
cache
from
django.http
import
HttpResponseRedirect
from
django.http
import
HttpResponseRedirect
...
@@ -7,11 +7,33 @@ from datetime import datetime
...
@@ -7,11 +7,33 @@ from datetime import datetime
from
librarians.models
import
Librarians
from
librarians.models
import
Librarians
from
librarians.forms
import
LibrarianForm
from
librarians.forms
import
LibrarianForm
from
django.core.paginator
import
Paginator
,
PageNotAnInteger
,
EmptyPage
def
index
(
request
):
def
index
(
request
):
latest_librarian_list
=
Librarians
.
objects
.
order_by
(
"created_at"
)[:
10
]
librarians
=
Librarians
.
objects
.
all
()
context
=
{
"librarians"
:
latest_librarian_list
,
"form"
:
LibrarianForm
()}
context
=
{
"librarians"
:
librarians
,
"form"
:
LibrarianForm
()}
default_page
=
1
page
=
request
.
GET
.
get
(
"page"
,
default_page
)
items_per_page
=
5
paginator
=
Paginator
(
librarians
,
items_per_page
)
try
:
page_obj
=
paginator
.
page
(
page
)
context
[
"page_obj"
]
=
page_obj
context
[
"librarians"
]
=
page_obj
cache
.
clear
()
except
PageNotAnInteger
:
page_obj
=
paginator
.
page
(
default_page
)
context
[
"page_obj"
]
=
page_obj
context
[
"librarians"
]
=
page_obj
cache
.
clear
()
except
EmptyPage
:
page_obj
=
paginator
.
page
(
paginator
.
num_pages
)
context
[
"page_obj"
]
=
page_obj
context
[
"librarians"
]
=
page_obj
cache
.
clear
()
if
request
.
method
==
"POST"
:
if
request
.
method
==
"POST"
:
form
=
LibrarianForm
(
request
.
POST
)
form
=
LibrarianForm
(
request
.
POST
)
...
...
members/templates/members_table_data.html
View file @
9bae7a9f
<table
class=
"table table-hover"
>
<table
class=
"table table-hover"
>
<thead>
<thead>
<tr
class=
"table-primary"
>
<tr
class=
"table-primary"
>
<th
scope=
"col"
>
Name
</th>
<th
scope=
"col"
>
Name
</th>
...
@@ -47,5 +46,5 @@
...
@@ -47,5 +46,5 @@
</tr>
</tr>
{% endif %}
{% endif %}
</tbody>
</tbody>
</table>
</table>
</div>
{% include "pagination.html" %}
members/views.py
View file @
9bae7a9f
...
@@ -6,11 +6,33 @@ from datetime import datetime
...
@@ -6,11 +6,33 @@ from datetime import datetime
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
):
def
index
(
request
):
latest_memeber_list
=
Members
.
objects
.
order_by
(
"created_at"
)[:
10
]
members
=
Members
.
objects
.
order_by
(
"created_at"
)[:
10
]
context
=
{
"members"
:
latest_memeber_list
,
"form"
:
MemberForm
()}
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
cache
.
clear
()
except
PageNotAnInteger
:
page_obj
=
paginator
.
page
(
default_page
)
context
[
"page_obj"
]
=
page_obj
context
[
"members"
]
=
page_obj
cache
.
clear
()
except
EmptyPage
:
page_obj
=
paginator
.
page
(
paginator
.
num_pages
)
context
[
"page_obj"
]
=
page_obj
context
[
"members"
]
=
page_obj
cache
.
clear
()
if
request
.
method
==
"POST"
:
if
request
.
method
==
"POST"
:
form
=
MemberForm
(
request
.
POST
)
form
=
MemberForm
(
request
.
POST
)
...
...
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