Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
C
crud
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
Ernanda
crud
Commits
59a4e374
Commit
59a4e374
authored
Feb 04, 2022
by
valdi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pagination & authentication
parent
f2de5545
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
178 additions
and
8 deletions
+178
-8
forms.py
masterdata/forms.py
+10
-0
index.html
masterdata/templates/masterdata/index.html
+24
-3
login.html
masterdata/templates/masterdata/login.html
+28
-0
register.html
masterdata/templates/masterdata/register.html
+43
-0
search.html
masterdata/templates/masterdata/search.html
+14
-1
urls.py
masterdata/urls.py
+3
-0
views.py
masterdata/views.py
+56
-4
No files found.
masterdata/forms.py
0 → 100644
View file @
59a4e374
from
django.forms
import
ModelForm
from
.models
import
Product
,
Category
from
django.contrib.auth.forms
import
UserCreationForm
from
django
import
forms
from
django.contrib.auth.models
import
User
class
CreateUserForm
(
UserCreationForm
):
class
Meta
:
model
=
User
fields
=
[
'username'
,
'email'
,
'password1'
,
'password2'
]
\ No newline at end of file
masterdata/templates/masterdata/index.html
View file @
59a4e374
{% extends "base_template.html" %}
{% block content %}
<div
class=
"container"
>
{% if user.is_authenticated %}
<li>
Hello, {{ user.username }}
</li>
<a
href=
"signout"
class=
"btn btn-info"
>
Logout
</a>
{% else %}
<a
href=
"register"
class=
"btn btn-info"
>
Register
</a>
<a
href=
"login"
class=
"btn btn-info"
>
Login
</a>
{% endif %}
<h1>
Daftar Product
</h1>
<div
class=
"row"
>
...
...
@@ -31,7 +38,7 @@
<tbody>
<!-- daftar category-->
{% if latest_product_list %}
{% for product in
latest_product_list
%}
{% for product in
products
%}
<tr>
<td>
{{ product.category.category_text }}
</td>
<td>
{{ product.product_text }}
</td>
...
...
@@ -49,11 +56,11 @@
<div
class=
"modal-dialog"
>
<div
class=
"modal-content"
>
<div
class=
"modal-header"
>
<h5
class=
"modal-title"
id=
"exampleModalLabel"
>
Modal title
</h5>
<h5
class=
"modal-title"
id=
"exampleModalLabel"
>
Delete {{ product.product_text }}
</h5>
<button
type=
"button"
class=
"btn-close"
data-bs-dismiss=
"modal"
aria-label=
"Close"
></button>
</div>
<div
class=
"modal-body"
>
Are u sure to delete?
Are u sure to delete
{{ product.product_text }}
?
</div>
<div
class=
"modal-footer"
>
<button
type=
"button"
class=
"btn btn-secondary"
data-bs-dismiss=
"modal"
>
Close
</button>
...
...
@@ -73,5 +80,19 @@
{% endif %}
</tbody>
</table>
<br><br>
{% if products.has_other_pages %}
<ul
class=
"pagination"
>
{% for i in products.paginator.page_range %}
{% if products.number == i %}
<li
class=
"active"
><span>
{{ i }}
</span></li>
{% else %}
<li><a
href=
"?page={{ i }}"
>
{{ i }}
</a>
</li>
{% endif %}
{% endfor %}
</ul>
{% endif %}
</div>
{% endblock %}
masterdata/templates/masterdata/login.html
0 → 100644
View file @
59a4e374
{% extends "base_template.html" %}
{% block content %}
<div
class=
"container"
>
<h3>
Login form
</h3>
<br><br>
<form
method=
"POST"
action=
""
>
{% csrf_token %}
<div
class=
"input-group mb-3"
>
<input
type=
"text"
name=
"username"
placeholder=
"Username..."
class=
"form-control"
>
</div>
<div
class=
"input-group mb-2"
>
<input
type=
"password"
name=
"password"
placeholder=
"Password..."
class=
"form-control"
>
</div>
<div
class=
"d-flex justify-content-center login_container"
>
<input
class=
"btn login_btn"
type=
"submit"
value=
"Login"
>
</div>
</form>
{% for message in messages %}
<p
id=
"messages"
>
{{ message }}
</p>
{% endfor %}
</div>
{% endblock %}
masterdata/templates/masterdata/register.html
0 → 100644
View file @
59a4e374
{% extends "base_template.html" %}
{% block content %}
<div
class=
"container"
>
<h3>
Register form
</h3>
<br><br>
<form
method=
"post"
action=
""
>
{% csrf_token %}
{{ form.username.label }}
{{ form.username }}
<br><br>
{{ form.email.label }}
{{ form.email }}
<br><br>
<!-- {{ form.firstname.label }}-->
<!-- {{ form.firstname }}-->
<!-- <br><br>-->
<!-- {{ form.lastname.label }}-->
<!-- {{ form.lastname }}-->
<!-- <br><br>-->
{{ form.password1.label }}
{{ form.password1 }}
<br><br>
{{ form.password2.label }}
{{ form.password2 }}
<br><br>
<input
type=
"submit"
name=
"create"
>
{{ forms.errors }}
<br><br>
<div
class=
"d-flex"
>
Already have an account?
<a
href=
"{% url 'masterdata:login' %}"
class=
"ml-2"
>
Login
</a>
</div>
</form>
</div>
{% endblock %}
masterdata/templates/masterdata/search.html
View file @
59a4e374
...
...
@@ -6,7 +6,7 @@
<div
class=
"row"
>
<div
class=
"col-md-3"
>
<a
href=
"{% url 'masterdata:add' %}"
class=
"btn btn-success"
>
Add
</a><div
class=
"input-group rounded"
>
</div>
</div>
<br>
<form
action=
"{% url 'masterdata:search' %}"
method=
"get"
>
<input
type=
"search"
name=
"p"
class=
"form-control rounded"
placeholder=
"Search"
aria-label=
"Search"
aria-describedby=
"search-addon"
/>
<span
class=
"input-group-text border-0"
id=
"search-addon"
>
...
...
@@ -72,5 +72,18 @@
{% endif %}
</tbody>
</table>
<br><br>
{% if products.has_other_pages %}
<ul
class=
"pagination"
>
{% for i in products.paginator.page_range %}
{% if products.number == i %}
<li
class=
"active"
><span>
{{ i }}
<span
class=
"sr-only"
>
(current)
</span>
</span></li>
{% else %}
<li><a
href=
"?page={{ i }}"
>
{{ i }}
</a>
</li>
{% endif %}
{% endfor %}
</ul>
{% endif %}
</div>
{% endblock %}
masterdata/urls.py
View file @
59a4e374
...
...
@@ -13,4 +13,7 @@ urlpatterns = [
path
(
'addData'
,
views
.
addData
,
name
=
'addData'
),
path
(
'<int:product_id>/delete'
,
views
.
delete
,
name
=
'delete'
),
path
(
'search'
,
views
.
search
,
name
=
"search"
),
path
(
'register/'
,
views
.
register
,
name
=
'register'
),
path
(
'login'
,
views
.
login
,
name
=
'login'
),
path
(
'signout'
,
views
.
logoutView
,
name
=
'signout'
),
]
\ No newline at end of file
masterdata/views.py
View file @
59a4e374
...
...
@@ -7,16 +7,37 @@ from django.http import HttpResponse
from
django.template
import
loader
from
django.shortcuts
import
get_object_or_404
,
render
from
django.views
import
generic
from
django.core.paginator
import
Paginator
,
EmptyPage
,
PageNotAnInteger
from
django.contrib.auth.forms
import
UserCreationForm
from
.forms
import
CreateUserForm
from
django.contrib
import
messages
from
django.contrib.auth
import
authenticate
,
logout
from
django.contrib.auth
import
login
as
auth_login
def
index
(
request
):
latest_product_list
=
Product
.
objects
.
all
()
.
order_by
(
'category_id'
,
'product_text'
)
context
=
{
'latest_product_list'
:
latest_product_list
,
}
return
render
(
request
,
'masterdata/index.html'
,
context
)
# # set up pagination
page
=
request
.
GET
.
get
(
'page'
,
1
)
paginator
=
Paginator
(
latest_product_list
,
4
)
try
:
products
=
paginator
.
page
(
page
)
except
PageNotAnInteger
:
products
=
paginator
.
page
(
1
)
except
EmptyPage
:
products
=
paginator
.
page
(
paginator
.
num_pages
)
# context = {
# 'latest_product_list': latest_product_list,
# }
return
render
(
request
,
'masterdata/index.html'
,
{
'latest_product_list'
:
latest_product_list
,
'products'
:
products
}
)
def
edit
(
request
,
product_id
):
product_detail
=
Product
.
objects
.
get
(
pk
=
product_id
)
...
...
@@ -69,3 +90,34 @@ def search(request):
search
=
Product
.
objects
.
filter
(
product_text__icontains
=
getSearch
)
context
=
{
'search'
:
search
}
return
render
(
request
,
'masterdata/search.html'
,
context
)
def
register
(
request
):
form
=
CreateUserForm
()
if
request
.
method
==
'POST'
:
form
=
CreateUserForm
(
request
.
POST
)
if
form
.
is_valid
():
form
.
save
()
user
=
form
.
cleaned_data
.
get
(
'username'
)
messages
.
success
(
request
,
'Account was created for '
+
user
)
return
redirect
(
'masterdata:login'
)
context
=
{
'form'
:
form
}
return
render
(
request
,
'masterdata/register.html'
,
context
)
def
login
(
request
):
if
request
.
method
==
'POST'
:
username
=
request
.
POST
[
'username'
]
password
=
request
.
POST
[
'password'
]
user
=
authenticate
(
request
,
username
=
username
,
password
=
password
)
if
user
is
not
None
:
auth_login
(
request
,
user
)
return
redirect
(
'masterdata:index'
)
else
:
return
render
(
request
,
'masterdata/login.html'
)
def
logoutView
(
request
):
logout
(
request
)
return
redirect
(
'masterdata:index'
)
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