Skip to content

Commit 1c28ab6

Browse files
committed
m
1 parent a7cea5f commit 1c28ab6

File tree

4 files changed

+83
-2
lines changed

4 files changed

+83
-2
lines changed

server/djangoapp/.env

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
backend_url =your backend url
2-
sentiment_analyzer_url=your code engine deployment url
2+
sentiment_analyzer_url=https://sentianalyzer.1y32t94nuhbv.us-south.codeengine.appdomain.cloud/
3+
backend_url = https://brody8991-3030.theiadockernext-1-labs-prod-theiak8s-4-tor01.proxy.cognitiveclass.ai/

server/djangoapp/restapis.py

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Uncomment the imports below before you add the function code
2-
# import requests
2+
import requests
33
import os
44
from dotenv import load_dotenv
55

@@ -13,10 +13,44 @@
1313

1414
# def get_request(endpoint, **kwargs):
1515
# Add code for get requests to back end
16+
def get_request(endpoint, **kwargs):
17+
params = ""
18+
if(kwargs):
19+
for key,value in kwargs.items():
20+
params=params+key+"="+value+"&"
21+
22+
request_url = backend_url+endpoint+"?"+params
23+
24+
print("GET from {} ".format(request_url))
25+
try:
26+
# Call get method of requests library with URL and parameters
27+
response = requests.get(request_url)
28+
return response.json()
29+
except:
30+
# If any error occurs
31+
print("Network exception occurred")
1632

1733
# def analyze_review_sentiments(text):
1834
# request_url = sentiment_analyzer_url+"analyze/"+text
1935
# Add code for retrieving sentiments
2036

37+
def analyze_review_sentiments(text):
38+
request_url = sentiment_analyzer_url+"analyze/"+text
39+
try:
40+
# Call get method of requests library with URL and parameters
41+
response = requests.get(request_url)
42+
return response.json()
43+
except Exception as err:
44+
print(f"Unexpected {err=}, {type(err)=}")
45+
print("Network exception occurred")
46+
2147
# def post_review(data_dict):
48+
def post_review(data_dict):
49+
request_url = backend_url+"/insert_review"
50+
try:
51+
response = requests.post(request_url,json=data_dict)
52+
print(response.json())
53+
return response.json()
54+
except:
55+
print("Network exception occurred")
2256
# Add code for posting review

server/djangoapp/urls.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
# path(route='login', view=views.login_user, name='login'),
1313

1414
# path for dealer reviews view
15+
path(route='get_dealers', view=views.get_dealerships, name='get_dealers'),
16+
path(route='get_dealers/<str:state>', view=views.get_dealerships, name='get_dealers_by_state'),
17+
path(route='dealer/<int:dealer_id>', view=views.get_dealer_details, name='dealer_details'),
18+
path(route='reviews/dealer/<int:dealer_id>', view=views.get_dealer_reviews, name='dealer_details'),
19+
path(route='add_review', view=views.add_review, name='add_review'),
1520

1621
# path for add a review view
1722
path(route='get_cars', view=views.get_cars, name ='getcars'),

server/djangoapp/views.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from django.views.decorators.csrf import csrf_exempt
1616
from .populate import initiate
1717
from .models import CarMake, CarModel
18+
from .restapis import get_request, analyze_review_sentiments, post_review
1819

1920

2021
# Get an instance of a logger
@@ -75,3 +76,43 @@ def get_cars(request):
7576
for car_model in car_models:
7677
cars.append({"CarModel": car_model.name, "CarMake": car_model.car_make.name})
7778
return JsonResponse({"CarModels":cars})
79+
#Update the `get_dealerships` render list of dealerships all by default, particular state if state is passed
80+
def get_dealerships(request, state="All"):
81+
if(state == "All"):
82+
endpoint = "/fetchDealers"
83+
else:
84+
endpoint = "/fetchDealers/"+state
85+
dealerships = get_request(endpoint)
86+
return JsonResponse({"status":200,"dealers":dealerships})
87+
88+
def get_dealer_details(request, dealer_id):
89+
if(dealer_id):
90+
endpoint = "/fetchDealer/"+str(dealer_id)
91+
dealership = get_request(endpoint)
92+
return JsonResponse({"status":200,"dealer":dealership})
93+
else:
94+
return JsonResponse({"status":400,"message":"Bad Request"})
95+
96+
def get_dealer_reviews(request, dealer_id):
97+
# if dealer id has been provided
98+
if(dealer_id):
99+
endpoint = "/fetchReviews/dealer/"+str(dealer_id)
100+
reviews = get_request(endpoint)
101+
for review_detail in reviews:
102+
response = analyze_review_sentiments(review_detail['review'])
103+
print(response)
104+
review_detail['sentiment'] = response['sentiment']
105+
return JsonResponse({"status":200,"reviews":reviews})
106+
else:
107+
return JsonResponse({"status":400,"message":"Bad Request"})
108+
109+
def add_review(request):
110+
if(request.user.is_anonymous == False):
111+
data = json.loads(request.body)
112+
try:
113+
response = post_review(data)
114+
return JsonResponse({"status":200})
115+
except:
116+
return JsonResponse({"status":401,"message":"Error in posting review"})
117+
else:
118+
return JsonResponse({"status":403,"message":"Unauthorized"})

0 commit comments

Comments
 (0)