generated from ibm-developer-skills-network/coding-project-template
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
/
Copy pathviews.py
126 lines (109 loc) · 4.35 KB
/
views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# Uncomment the required imports before adding the code
from django.shortcuts import render
from django.http import HttpResponseRedirect, HttpResponse
from django.contrib.auth.models import User
from django.shortcuts import get_object_or_404, render, redirect
from django.contrib.auth import logout
from django.contrib import messages
from datetime import datetime
from django.http import JsonResponse
from django.contrib.auth import login, authenticate
import logging
import json
from django.views.decorators.csrf import csrf_exempt
# from .populate import initiate
# Get an instance of a logger
logger = logging.getLogger(__name__)
# Create your views here.
# Create a `login_request` view to handle sign in request
@csrf_exempt
def login_user(request):
# Get username and password from request.POST dictionary
data = json.loads(request.body)
username = data['userName']
password = data['password']
# Try to check if provide credential can be authenticated
user = authenticate(username=username, password=password)
data = {"userName": username}
if user is not None:
# If user is valid, call login method to login current user
login(request, user)
data = {"userName": username, "status": "Authenticated"}
return JsonResponse(data)
# Create a `logout_request` view to handle sign out request
def logout_request(request):
logout(request)
data = {"userName":""}
return JsonResponse(data)
# Create a `registration` view to handle sign up request
@csrf_exempt
def registration(request):
context = {}
data = json.loads(request.body)
username = data['userName']
password = data['password']
first_name = data['firstName']
last_name = data['lastName']
email = data['email']
username_exist = False
email_exist = False
try:
# Check if user already exists
User.objects.get(username=username)
username_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 username_exist:
# Create user in auth_user table
user = User.objects.create_user(username=username, first_name=first_name, last_name=last_name,password=password, email=email)
# Login the user and redirect to list page
login(request, user)
data = {"userName":username,"status":"Authenticated"}
return JsonResponse(data)
else :
data = {"userName":username,"error":"Already Registered"}
return JsonResponse(data)
# # Update the `get_dealerships` view to render the index page with
# a list of dealerships
#Update the `get_dealerships` render list of dealerships all by default, particular state if state is passed
def get_dealerships(request, state="All"):
if(state == "All"):
endpoint = "/fetchDealers"
else:
endpoint = "/fetchDealers/"+state
dealerships = get_request(endpoint)
return JsonResponse({"status":200,"dealers":dealerships})
# Create a `get_dealer_reviews` view to render the reviews of a dealer
def get_dealer_reviews(request,dealer_id):
if(dealer_id):
endpoint="/fetchDealer/"+str(dealer_id)
dealership=get_request(endpoint)
return JsonResponse({"status":200,"dealer":dealership})
else:
return JsonResponse({"status":400,"message":"Bad Request"})
# Create a `get_dealer_details` view to render the dealer details
def get_dealer_details(request, dealer_id):
# if dealer id has been provided
if(dealer_id):
endpoint = "/fetchReviews/dealer/"+str(dealer_id)
reviews = get_request(endpoint)
for review_detail in reviews:
response = analyze_review_sentiments(review_detail['review'])
print(response)
review_detail['sentiment'] = response['sentiment']
return JsonResponse({"status":200,"reviews":reviews})
else:
return JsonResponse({"status":400,"message":"Bad Request"})
# Create a `add_review` view to submit a review
def add_review(request):
if(request.user.is_anonymous == False):
data = json.loads(request.body)
try:
response = post_review(data)
return JsonResponse({"status":200})
except:
return JsonResponse({"status":401,"message":"Error in posting review"})
else:
return JsonResponse({"status":403,"message":"Unauthorized"})