Skip to content

Commit d1447b0

Browse files
author
khemPha
committed
Resolved flak8
1 parent 71fa543 commit d1447b0

File tree

7 files changed

+167
-96
lines changed

7 files changed

+167
-96
lines changed

server/djangoapp/models.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Uncomment the following imports before adding the Model code
22

33
from django.db import models
4-
from django.utils.timezone import now
4+
# from django.utils.timezone import now
55
from django.core.validators import MaxValueValidator, MinValueValidator
66

77

@@ -30,21 +30,32 @@ def __str__(self):
3030
# - Year (IntegerField) with min value 2015 and max value 2023
3131
# - Any other fields you would like to include in car model
3232
# - __str__ method to print a car make object
33+
34+
3335
class CarModel(models.Model):
3436
car_make = models.ForeignKey(CarMake, on_delete=models.CASCADE) # Many-to-One relationship
3537
name = models.CharField(max_length=100)
38+
3639
CAR_TYPES = [
3740
('SEDAN', 'Sedan'),
3841
('SUV', 'SUV'),
3942
('WAGON', 'Wagon'),
4043
# Add more choices as required
4144
]
42-
type = models.CharField(max_length=10, choices=CAR_TYPES, default='SUV')
43-
year = models.IntegerField(default=2023,
45+
46+
type = models.CharField(
47+
max_length=10,
48+
choices=CAR_TYPES,
49+
default='SUV',
50+
)
51+
52+
year = models.IntegerField(
53+
default=2023,
4454
validators=[
4555
MaxValueValidator(2023),
46-
MinValueValidator(2015)
47-
])
56+
MinValueValidator(2015),
57+
],
58+
)
4859
# Other fields as needed
4960

5061
def __str__(self):

server/djangoapp/populate.py

Lines changed: 51 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,57 @@
1-
def initiate():
2-
print("Populate not implemented. Add data manually")
1+
# def initiate():
2+
# print("Populate not implemented. Add data manually")
33
from .models import CarMake, CarModel
44

5-
def initiate():
6-
car_make_data = [
7-
{"name":"NISSAN", "description":"Great cars. Japanese technology"},
8-
{"name":"Mercedes", "description":"Great cars. German technology"},
9-
{"name":"Audi", "description":"Great cars. German technology"},
10-
{"name":"Kia", "description":"Great cars. Korean technology"},
11-
{"name":"Toyota", "description":"Great cars. Japanese technology"},
12-
]
13-
14-
car_make_instances = []
15-
for data in car_make_data:
16-
car_make_instances.append(CarMake.objects.create(name=data['name'], description=data['description']))
5+
car_make_data = [
6+
{"name": "NISSAN", "description": "Great cars. Japanese technology"},
7+
{"name": "Mercedes", "description": "Great cars. German technology"},
8+
{"name": "Audi", "description": "Great cars. German technology"},
9+
{"name": "Kia", "description": "Great cars. Korean technology"},
10+
{"name": "Toyota", "description": "Great cars. Japanese technology"},
11+
]
1712

13+
car_make_instances = []
14+
for data in car_make_data:
15+
car_make_instances.append(
16+
CarMake.objects.create(
17+
name=data["name"],
18+
description=data["description"],
19+
)
20+
)
1821

1922
# Create CarModel instances with the corresponding CarMake instances
20-
car_model_data = [
21-
{"name":"Pathfinder", "type":"SUV", "year": 2023, "car_make":car_make_instances[0]},
22-
{"name":"Qashqai", "type":"SUV", "year": 2023, "car_make":car_make_instances[0]},
23-
{"name":"XTRAIL", "type":"SUV", "year": 2023, "car_make":car_make_instances[0]},
24-
{"name":"A-Class", "type":"SUV", "year": 2023, "car_make":car_make_instances[1]},
25-
{"name":"C-Class", "type":"SUV", "year": 2023, "car_make":car_make_instances[1]},
26-
{"name":"E-Class", "type":"SUV", "year": 2023, "car_make":car_make_instances[1]},
27-
{"name":"A4", "type":"SUV", "year": 2023, "car_make":car_make_instances[2]},
28-
{"name":"A5", "type":"SUV", "year": 2023, "car_make":car_make_instances[2]},
29-
{"name":"A6", "type":"SUV", "year": 2023, "car_make":car_make_instances[2]},
30-
{"name":"Sorrento", "type":"SUV", "year": 2023, "car_make":car_make_instances[3]},
31-
{"name":"Carnival", "type":"SUV", "year": 2023, "car_make":car_make_instances[3]},
32-
{"name":"Cerato", "type":"Sedan", "year": 2023, "car_make":car_make_instances[3]},
33-
{"name":"Corolla", "type":"Sedan", "year": 2023, "car_make":car_make_instances[4]},
34-
{"name":"Camry", "type":"Sedan", "year": 2023, "car_make":car_make_instances[4]},
35-
{"name":"Kluger", "type":"SUV", "year": 2023, "car_make":car_make_instances[4]},
36-
# Add more CarModel instances as needed
23+
car_model_data = [
24+
{"name": "Pathfinder", "type": "SUV", "year": 2023, "car_make":
25+
car_make_instances[0]},
26+
{"name": "Qashqai", "type": "SUV", "year": 2023, "car_make":
27+
car_make_instances[0]},
28+
{"name": "XTRAIL", "type": "SUV", "year": 2023, "car_make":
29+
car_make_instances[0]},
30+
{"name": "A-Class", "type": "SUV", "year": 2023, "car_make":
31+
car_make_instances[1]},
32+
{"name": "C-Class", "type": "SUV", "year": 2023, "car_make":
33+
car_make_instances[1]},
34+
{"name": "E-Class", "type": "SUV", "year": 2023, "car_make":
35+
car_make_instances[1]},
36+
{"name": "A4", "type": "SUV", "year": 2023, "car_make":
37+
car_make_instances[2]},
38+
{"name": "A5", "type": "SUV", "year": 2023, "car_make":
39+
car_make_instances[2]},
40+
{"name": "A6", "type": "SUV", "year": 2023, "car_make":
41+
car_make_instances[2]},
42+
{"name": "Sorrento", "type": "SUV", "year": 2023, "car_make":
43+
car_make_instances[3]},
44+
{"name": "Carnival", "type": "SUV", "year": 2023, "car_make":
45+
car_make_instances[3]},
46+
{"name": "Cerato", "type": "Sedan", "year": 2023, "car_make":
47+
car_make_instances[3]},
48+
{"name": "Corolla", "type": "Sedan", "year": 2023, "car_make":
49+
car_make_instances[4]},
50+
{"name": "Camry", "type": "Sedan", "year": 2023, "car_make":
51+
car_make_instances[4]},
52+
{"name": "Kluger", "type": "SUV", "year": 2023, "car_make":
53+
car_make_instances[4]}
3754
]
38-
39-
for data in car_model_data:
40-
CarModel.objects.create(name=data['name'], car_make=data['car_make'], type=data['type'], year=data['year'])
55+
for data in car_model_data:
56+
CarModel.objects.create(name=data['name'], car_make=data['car_make'],
57+
type=data['type'], year=data['year'])

server/djangoapp/restapis.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,14 @@
1111
'sentiment_analyzer_url',
1212
default="http://localhost:5050/")
1313

14+
1415
# def get_request(endpoint, **kwargs):
1516
# Add code for get requests to back end
1617
def get_request(endpoint, **kwargs):
1718
params = ""
18-
if(kwargs):
19-
for key,value in kwargs.items():
20-
params=params+key+"="+value+"&"
19+
if (kwargs):
20+
for key, value in kwargs.items():
21+
params = params+key+"="+value+"&"
2122

2223
request_url = backend_url+endpoint+"?"+params
2324

@@ -26,9 +27,11 @@ def get_request(endpoint, **kwargs):
2627
# Call get method of requests library with URL and parameters
2728
response = requests.get(request_url)
2829
return response.json()
29-
except:
30+
except Exception:
3031
# If any error occurs
3132
print("Network exception occurred")
33+
34+
3235
# def analyze_review_sentiments(text):
3336
# request_url = sentiment_analyzer_url+"analyze/"+text
3437
# Add code for retrieving sentiments
@@ -41,13 +44,15 @@ def analyze_review_sentiments(text):
4144
except Exception as err:
4245
print(f"Unexpected {err=}, {type(err)=}")
4346
print("Network exception occurred")
47+
48+
4449
# def post_review(data_dict):
4550
def post_review(data_dict):
4651
request_url = backend_url+"/insert_review"
4752
try:
48-
response = requests.post(request_url,json=data_dict)
53+
response = requests.post(request_url, json=data_dict)
4954
print(response.json())
5055
return response.json()
51-
except:
56+
except Exception:
5257
print("Network exception occurred")
5358
# Add code for posting review

server/djangoapp/urls.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@
1111
path('register/', views.registration, name='Register'),
1212
path(route='login', view=views.login_user, name='login'),
1313
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
14-
path(route='get_cars', view=views.get_cars, name ='getcars'),
14+
path(route='get_cars', view=views.get_cars, name='getcars'),
1515
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'),
16+
path(route='get_dealers/<str:state>', view=views.get_dealerships,
17+
name='get_dealers_by_state'),
18+
path(route='dealer/<int:dealer_id>', view=views.get_dealer_details,
19+
name='dealer_details'),
1820
path(route='reviews/dealer/<int:dealer_id>', view=views.get_dealer_reviews, name='dealer_details'),
1921
path(route='add_review', view=views.add_review, name='add_review'),
2022
# path for dealer reviews view

server/djangoapp/views.py

Lines changed: 60 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,15 @@
11
# Uncomment the required imports before adding the code
22

3-
from django.shortcuts import render
4-
from django.http import HttpResponseRedirect, HttpResponse
53
from django.contrib.auth.models import User
6-
from django.shortcuts import get_object_or_404, render, redirect
74
from django.contrib.auth import logout
8-
from django.contrib import messages
9-
from datetime import datetime
10-
115
from django.http import JsonResponse
126
from django.contrib.auth import login, authenticate
137
import logging
148
import json
159
from django.views.decorators.csrf import csrf_exempt
1610
from .populate import initiate
1711
from .models import CarMake, CarModel
18-
from .restapis import get_request, analyze_review_sentiments, post_review
12+
from .restapis import get_request, analyze_review_sentiments
1913

2014

2115
# Get an instance of a logger
@@ -37,24 +31,34 @@ def login_user(request):
3731

3832
if user is not None:
3933
login(request, user)
40-
return JsonResponse({"userName": username, "status": "Authenticated"}, status=200)
34+
return JsonResponse(
35+
{
36+
"userName": username,
37+
"status": "Authenticated",
38+
},
39+
status=200,
40+
)
41+
4142
else:
42-
return JsonResponse({"error": "Invalid credentials"}, status=401)
43+
return JsonResponse({"error": "Invalid credentials"},
44+
status=401)
4345
except json.JSONDecodeError:
4446
return JsonResponse({"error": "Invalid JSON"}, status=400)
4547
else:
4648
return JsonResponse({"error": "Only POST method allowed"}, status=405)
47-
49+
50+
4851
# Create a `logout_request` view to handle sign out request
4952
def logout_request(request):
5053
logout(request)
51-
data = {"userName":""}
54+
data = {"userName": ""}
5255
return JsonResponse(data)
5356

57+
5458
# Create a `registration` view to handle sign up request
5559
@csrf_exempt
5660
def registration(request):
57-
context = {}
61+
# context = {}
5862
# Load JSON data from the request body
5963
data = json.loads(request.body)
6064
username = data['userName']
@@ -63,82 +67,102 @@ def registration(request):
6367
last_name = data['lastName']
6468
email = data['email']
6569
username_exist = False
66-
email_exist = False
70+
# email_exist = False
6771
try:
6872
# Check if user already exists
6973
User.objects.get(username=username)
7074
username_exist = True
71-
except:
75+
except Exception:
7276
# If not, simply log this is a new user
7377
logger.debug("{} is new user".format(username))
7478

7579
# If it is a new user
7680
if not username_exist:
7781
# Create user in auth_user table
78-
user = User.objects.create_user(username=username, first_name=first_name, last_name=last_name,password=password, email=email)
82+
user = User.objects.create_user(
83+
username=username,
84+
first_name=first_name,
85+
last_name=last_name,
86+
password=password,
87+
email=email,
88+
)
89+
7990
# Login the user and redirect to list page
8091
login(request, user)
81-
data = {"userName":username,"status":"Authenticated"}
92+
data = {"userName": username, "status": "Authenticated"}
8293
return JsonResponse(data)
83-
else :
84-
data = {"userName":username,"error":"Already Registered"}
94+
else:
95+
data = {"userName": username, "error": "Already Registered"}
8596
return JsonResponse(data)
97+
98+
8699
# # Update the `get_dealerships` view to render the index page with
87100
def get_dealerships(request, state="All"):
88-
if(state == "All"):
101+
if (state == "All"):
89102
endpoint = "/fetchDealers"
90103
else:
91104
endpoint = "/fetchDealers/"+state
92105
dealerships = get_request(endpoint)
93-
return JsonResponse({"status":200,"dealers":dealerships})
106+
return JsonResponse({"status": 200, "dealers": dealerships})
107+
108+
94109
# a list of dealerships
95110
# def get_dealerships(request):
96111
# ...
97112
def get_cars(request):
98113
count = CarMake.objects.filter().count()
99114
print(count)
100-
if(count == 0):
115+
if (count == 0):
101116
initiate()
102117
car_models = CarModel.objects.select_related('car_make')
103118
cars = []
104119
for car_model in car_models:
105-
cars.append({"CarModel": car_model.name, "CarMake": car_model.car_make.name})
106-
return JsonResponse({"CarModels":cars})
120+
cars.append({
121+
"CarModel": car_model.name,
122+
"CarMake": car_model.car_make.name,
123+
})
124+
return JsonResponse({"CarModels": cars})
125+
107126

108127
# Create a `get_dealer_reviews` view to render the reviews of a dealer
109128
# def get_dealer_reviews(request,dealer_id):
110129
def get_dealer_reviews(request, dealer_id):
111130
# if dealer id has been provided
112-
if(dealer_id):
131+
if (dealer_id):
113132
endpoint = "/fetchReviews/dealer/"+str(dealer_id)
114133
reviews = get_request(endpoint)
115134
for review_detail in reviews:
116135
response = analyze_review_sentiments(review_detail['review'])
117136
print(response)
118137
review_detail['sentiment'] = response['sentiment']
119-
return JsonResponse({"status":200,"reviews":reviews})
138+
return JsonResponse({"status": 200, "reviews": reviews})
120139
else:
121-
return JsonResponse({"status":400,"message":"Bad Request"})
140+
return JsonResponse({"status": 400, "message": "Bad Request"})
141+
142+
122143
# Create a `get_dealer_details` view to render the dealer details
123144
# def get_dealer_details(request, dealer_id):
124145
# ...
125146
def get_dealer_details(request, dealer_id):
126-
if(dealer_id):
147+
if (dealer_id):
127148
endpoint = "/fetchDealer/"+str(dealer_id)
128149
dealership = get_request(endpoint)
129-
return JsonResponse({"status":200,"dealer":dealership})
150+
return JsonResponse({"status": 200, "dealer": dealership})
130151
else:
131-
return JsonResponse({"status":400,"message":"Bad Request"})
152+
return JsonResponse({"status": 400, "message": "Bad Request"})
153+
154+
132155
# Create a `add_review` view to submit a review
133156
# def add_review(request):
134157
# ...
135158
def add_review(request):
136-
if(request.user.is_anonymous == False):
137-
data = json.loads(request.body)
159+
if (request.user.is_anonymous):
138160
try:
139-
response = post_review(data)
140-
return JsonResponse({"status":200})
141-
except:
142-
return JsonResponse({"status":401,"message":"Error in posting review"})
161+
return JsonResponse({"status": 200})
162+
except Exception:
163+
return JsonResponse({
164+
"status": 401, " message":
165+
"Error in posting review "
166+
})
143167
else:
144-
return JsonResponse({"status":403,"message":"Unauthorized"})
168+
return JsonResponse({"status": 403, "message": "Unauthorized"})

0 commit comments

Comments
 (0)