Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New branch #169

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added server/db.sqlite3
Binary file not shown.
5 changes: 5 additions & 0 deletions server/djangoapp/templates/djangoapp/about.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<html>
<h1>
Welcome to Best Cars dealership, home to the best cars in North America. We sell domestic and imported cars at reasonable prices.
</h1>
</html>
4 changes: 4 additions & 0 deletions server/djangoapp/templates/djangoapp/contact.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<html>
<h3>email: [email protected]</h3>
<h3>phone: +1 985 2236 145</h3>
</html>
30 changes: 28 additions & 2 deletions server/djangoapp/templates/djangoapp/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,35 @@
</head>

<body>
<!-- Remove this line the first time you edit this file -->
This is the index page of your Django app!
<!--Add a nav bar here -->
<nav class="navbar navbar-light bg-light">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="./about">Dealership</a>
<a class="navbar-brand" href="./contact">Review</a>
</div>
<ul class="nav navbar-nav navbar-right">
{% if user.is_authenticated %}
<li>
<a class="btn btn-link" href="#">{{ user.first_name }}({{ user.username }})</a>
<a class="btn btn-link" href="{% url 'djangoapp:logout' %}">Logout</a>
</li>
{% else %}
<li>
<form class="form-inline" action="{% url 'djangoapp:login' %}" method="post">
{% csrf_token %}
<div class="input-group">
<input type="text" class="form-control" placeholder="Username" name="username" >
<input type="password" class="form-control" placeholder="Password" name="psw" >
<button class="btn btn-primary" type="submit">Login</button>
<a class="btn btn-link" href="{% url 'djangoapp:registration' %}">Sign Up</a>
</div>
</form>
</li>
{% endif %}
</ul>
</div>
</nav>

<!--Add a dealer table here -->

Expand Down
18 changes: 17 additions & 1 deletion server/djangoapp/templates/djangoapp/registration.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,22 @@
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
<!--Add a registration form here -->
<form action="{% url 'djangoapp:registration' %}" method="post">
<div class="container">
<h1>Sign Up</h1>
<hr>
<label for="username"><b>User Name</b></label>
<input class="form-control" type="text" placeholder="Enter User Name: " name="username" required>
<label for="firstname"><b>First Name</b></label>
<input class="form-control" type="text" placeholder="Enter First Name: " name="firstname" required>
<label for="lastname"><b>Last Name</b></label>
<input class="form-control" type="text" placeholder="Enter Last Name: " name="lastname" required>
<label for="psw"><b>Password</b></label>
<input class="form-control" type="password" placeholder="Enter Password: " name="psw" required>
<div>
{% csrf_token %}
<button class="btn btn-primary mt-4" type="submit">Sign Up</button>
</div>
</div>
</body>
</html>
9 changes: 8 additions & 1 deletion server/djangoapp/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,25 @@
# name the URL

# path for about view
path(route='about', view=views.about, name='About Us'),


# path for contact us view
path(route='contact', view=views.contact, name='contact'),


# path for registration
path('registration/', views.registration_request, name='registration'),

# path for login
path('login/', views.login_request, name='login'),

# path for logout
path('logout/', views.logout_request, name='logout'),

# path for dealer reviews view
path(route='', view=views.get_dealerships, name='index'),

# path for dealer reviews view

# path for add a review view

Expand Down
67 changes: 63 additions & 4 deletions server/djangoapp/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,23 +19,82 @@

# Create an `about` view to render a static about page
# def about(request):
# ...
def about(request):
context = {}
if request.method == "GET":
return render(request, 'djangoapp/about.html', context)


# Create a `contact` view to return a static contact page
#def contact(request):
def contact(request):
context = {}
if request.method == "GET":
return render(request, 'djangoapp/contact.html', context)

# Create a `login_request` view to handle sign in request
# def login_request(request):
# ...
def login_request(request):
context = {}
# Handles POST request
if request.method == "POST":
# Get username and password from request.POST dictionary
username = request.POST['username']
password = request.POST['psw']
# Try to check if provide credential can be authenticated
user = authenticate(username=username, password=password)
if user is not None:
# If user is valid, call login method to login current user
login(request, user)
return redirect('djangoapp:contact')
else:
# If not, return to login page again
return render(request, 'djangoapp/index.html', context)
else:
return render(request, 'djangoapp/index.html', context)

# Create a `logout_request` view to handle sign out request
# def logout_request(request):
# ...
def logout_request(request):
# Get the user object based on session id in request
print("Log out the user `{}`".format(request.user.username))
# Logout user in the request
logout(request)
# Redirect user back to course list view
return redirect('djangoapp:index')

# Create a `registration_request` view to handle sign up request
# def registration_request(request):
# ...
def registration_request(request):
context = {}
# If it is a GET request, just render the registration page
if request.method == 'GET':
return render(request, 'djangoapp/registration.html', context)
# If it is a POST request
elif request.method == 'POST':
# Get user information from request.POST
username = request.POST['username']
password = request.POST['psw']
first_name = request.POST['firstname']
last_name = request.POST['lastname']
user_exist = False
try:
# Check if user already exists
User.objects.get(username=username)
user_exist = True
except:
# If not, simply log this is a new user
logger.debug("{} is new user".format(username))
# If it is a new user
if not user_exist:
# Create user in auth_user table
user = User.objects.create_user(username=username, first_name=first_name, last_name=last_name,
password=password)
# Login the user and redirect to course list page
login(request, user)
return redirect("djangoapp:popular_course_list")
else:
return render(request, 'djangoapp/user_registration.html', context)

# Update the `get_dealerships` view to render the index page with a list of dealerships
def get_dealerships(request):
Expand Down
1 change: 0 additions & 1 deletion server/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
requests
Django==3.1.3
Pillow==8.0.1
gunicorn==20.1.0
ibm-cloud-sdk-core==3.10.0
ibm-watson==5.2.2
Expand Down