diff --git a/server/db.sqlite3 b/server/db.sqlite3 new file mode 100644 index 0000000000..e7a0a78162 Binary files /dev/null and b/server/db.sqlite3 differ diff --git a/server/djangoapp/templates/djangoapp/about.html b/server/djangoapp/templates/djangoapp/about.html new file mode 100644 index 0000000000..bb525d5275 --- /dev/null +++ b/server/djangoapp/templates/djangoapp/about.html @@ -0,0 +1,5 @@ + +

+Welcome to Best Cars dealership, home to the best cars in North America. We sell domestic and imported cars at reasonable prices. +

+ \ No newline at end of file diff --git a/server/djangoapp/templates/djangoapp/contact.html b/server/djangoapp/templates/djangoapp/contact.html new file mode 100644 index 0000000000..683cbf61a4 --- /dev/null +++ b/server/djangoapp/templates/djangoapp/contact.html @@ -0,0 +1,9 @@ + +

+Contact Us +

+
+

Address: IBM, final exam, congnitiveclass ai, North America

+

Contact: +01-12345689

+
+ \ No newline at end of file diff --git a/server/djangoapp/templates/djangoapp/index.html b/server/djangoapp/templates/djangoapp/index.html index 1a9ee6e39a..c593e85468 100644 --- a/server/djangoapp/templates/djangoapp/index.html +++ b/server/djangoapp/templates/djangoapp/index.html @@ -14,10 +14,33 @@ - - This is the index page of your Django app! - - + diff --git a/server/djangoapp/templates/djangoapp/login.html b/server/djangoapp/templates/djangoapp/login.html new file mode 100644 index 0000000000..79275ef33f --- /dev/null +++ b/server/djangoapp/templates/djangoapp/login.html @@ -0,0 +1,18 @@ +
+ {% csrf_token %} +
+

Login

+
+ + + + +
+ {% if message %} +
+ {{ message }} +
+ {% endif %} + +
+
\ No newline at end of file diff --git a/server/djangoapp/templates/djangoapp/registration.html b/server/djangoapp/templates/djangoapp/registration.html index ae11ea4b71..933bcd07ce 100644 --- a/server/djangoapp/templates/djangoapp/registration.html +++ b/server/djangoapp/templates/djangoapp/registration.html @@ -6,6 +6,28 @@ - +
+
+ {% csrf_token %} +

Sign Up

+
+
+ + + + + + + + + {% if message %} +
+ {{ message }} +
+ {% endif %} + +
+
+
\ No newline at end of file diff --git a/server/djangoapp/urls.py b/server/djangoapp/urls.py index 37b1c89d01..7abdd35d67 100644 --- a/server/djangoapp/urls.py +++ b/server/djangoapp/urls.py @@ -9,15 +9,14 @@ # view refers to the view function # name the URL - # path for about view + path(route='about', view=views.about, name='about'), - # 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 for logout + path('login/', views.login_request, name='login'), + path('logout/', views.logout_request, name='logout'), path(route='', view=views.get_dealerships, name='index'), diff --git a/server/djangoapp/views.py b/server/djangoapp/views.py index 61cc664da0..ad6399a76e 100644 --- a/server/djangoapp/views.py +++ b/server/djangoapp/views.py @@ -20,35 +20,100 @@ # Create an `about` view to render a static about page # def about(request): # ... +def about(request): + return render(request, 'djangoapp/about.html') # Create a `contact` view to return a static contact page -#def contact(request): +def contact(request): + return render(request,'djangoapp/contact.html') # Create a `login_request` view to handle sign in request -# def login_request(request): -# ... +def login_request(request): + context = {} + if request.method == "POST": + username = request.POST['username'] + password = request.POST['psw'] + user = authenticate(username=username, password=password) + if user is not None: + login(request, user) + return redirect('djangoapp:index') + else: + context['message'] = "Invalid username or password." + return render(request, 'djangoapp/login.html', context) + else: + return render(request, 'djangoapp/login.html', context) -# Create a `logout_request` view to handle sign out request -# def logout_request(request): -# ... +def logout_request(request): + logout(request) + return redirect('djangoapp:index') -# Create a `registration_request` view to handle sign up request -# def registration_request(request): -# ... +def registration_request(request): + context = {} + if request.method == 'GET': + return render(request, 'djangoapp/registration.html', context) + elif request.method == 'POST': + # Check if user exists + username = request.POST['username'] + password = request.POST['psw'] + first_name = request.POST['firstname'] + last_name = request.POST['lastname'] + user_exist = False + try: + User.objects.get(username=username) + user_exist = True + except: + logger.error("New user") + if not user_exist: + user = User.objects.create_user(username=username, first_name=first_name, last_name=last_name, + password=password) + login(request, user) + return redirect("djangoapp:index") + else: + context['message'] = "User already exists." + return render(request, 'djangoapp/registration.html', context) # Update the `get_dealerships` view to render the index page with a list of dealerships def get_dealerships(request): - context = {} if request.method == "GET": + context = {} + # url = "https://sankettikam1-8000.theiadockernext-1-labs-prod-theiak8s-4-tor01.proxy.cognitiveclass.ai/dealerships/get" + # dealerships = get_dealers_from_cf(url) + # context['dealerships'] = dealerships return render(request, 'djangoapp/index.html', context) +# Create a `get_dealer_details` view to render tdealershipshe reviews of a dealer +def get_dealer_details(request, dealer_id): + if request.method == "GET": + context = {} + # Get dealers from the URL + url = "https://sankettikam1-8000.theiadockernext-1-labs-prod-theiak8s-4-tor01.proxy.cognitiveclass.ai/dealerships/get" + dealer = get_dealer_by_id_from_cf(url, dealer_id) -# Create a `get_dealer_details` view to render the reviews of a dealer -# def get_dealer_details(request, dealer_id): -# ... + url = "https://sankettikam1-8000.theiadockernext-1-labs-prod-theiak8s-4-tor01.proxy.cognitiveclass.ai/reviews/get" + reviews = get_dealer_reviews_from_cf(url, dealer_id) + context['reviews'] = reviews + context['dealer'] = dealer + return render(request, 'djangoapp/dealer_details.html', context) + # Create a `add_review` view to submit a review -# def add_review(request, dealer_id): -# ... - +def add_review(request, dealer_id): + if request.method == "POST": + review = dict() + review["time"] = datetime.utcnow().isoformat() + review["dealership"] = dealer_id + review["review"] = request.POST.get('review', '') + review["purchase"] = request.POST.get('purchase', '') + review["purchase_date"] = request.POST.get('purchase_date') + review["name"] = request.POST.get('name', '') + review["car_make"] = request.POST.get('car_make') + review["car_model"] = request.POST.get('car_model') + review["car_year"] = request.POST.get('car_year') + url = "https://sankettikam1-8000.theiadockernext-1-labs-prod-theiak8s-4-tor01.proxy.cognitiveclass.ai/reviews/post" + res = post_request(url, review) + return redirect("djangoapp:dealer_details", dealer_id=dealer_id) + url = "https://sankettikam1-8000.theiadockernext-1-labs-prod-theiak8s-4-tor01.proxy.cognitiveclass.ai/dealerships/get" + dealer = get_dealer_by_id_from_cf(url, dealer_id) + cars = CarModel.objects.all() + return render(request, 'djangoapp/add_review.html', {"dealer": dealer, "cars": cars}) \ No newline at end of file