Skip to content

Commit 1786dbe

Browse files
committed
t4
1 parent 8d7851f commit 1786dbe

File tree

6 files changed

+141
-220
lines changed

6 files changed

+141
-220
lines changed

server/djangoapp/models.py

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,52 @@
11
from django.db import models
2+
from django.core.validators import MinValueValidator, MaxValueValidator
3+
4+
5+
# Create your models here.
26

37
# Car Make model
48
class CarMake(models.Model):
59
name = models.CharField(max_length=100)
610
description = models.TextField()
7-
11+
812
def __str__(self):
913
return self.name
1014

15+
1116
# Car Model model
1217
class CarModel(models.Model):
13-
# Define a car make foreign key
1418
car_make = models.ForeignKey(CarMake, on_delete=models.CASCADE)
1519
name = models.CharField(max_length=100)
16-
# Define car model types
17-
SEDAN = 'sedan'
18-
SUV = 'suv'
19-
WAGON = 'wagon'
20-
TRUCK = 'truck'
21-
COUPE = 'coupe'
22-
CONVERTIBLE = 'convertible'
23-
VAN = 'van'
24-
SPORTS = 'sports'
25-
HYBRID = 'hybrid'
26-
ELECTRIC = 'electric'
20+
SEDAN = 'Sedan'
21+
SUV = 'SUV'
22+
WAGON = 'Wagon'
23+
SPORT = 'Sport'
24+
COUPE = 'Coupe'
25+
MINIVAN = 'Mini'
26+
VAN = 'Van'
27+
PICKUP = 'Pickup'
28+
TRUCK = 'Truck'
29+
BIKE = 'Bike'
30+
SCOOTER = 'Scooter'
2731

2832
CAR_TYPES = [
2933
(SEDAN, 'Sedan'),
3034
(SUV, 'SUV'),
31-
(WAGON, 'Wagon'),
32-
(TRUCK, 'Truck'),
35+
(WAGON, 'Station Wagon'),
36+
(SPORT, 'Sports Car'),
3337
(COUPE, 'Coupe'),
34-
(CONVERTIBLE, 'Convertible'),
38+
(MINIVAN, 'Mini Van'),
3539
(VAN, 'Van'),
36-
(SPORTS, 'Sports'),
37-
(HYBRID, 'Hybrid'),
38-
(ELECTRIC, 'Electric')
40+
(PICKUP, 'Pick-up Truck'),
41+
(TRUCK, 'Truck'),
42+
(BIKE, 'Bike'),
43+
(SCOOTER, 'Scooter')
3944
]
40-
41-
type = models.CharField(
42-
max_length=20,
43-
choices=CAR_TYPES,
44-
default=SEDAN
45+
car_type = models.CharField(max_length=15, choices=CAR_TYPES, default=SEDAN)
46+
year = models.IntegerField(
47+
default=2023,
48+
validators=[MinValueValidator(1900), MaxValueValidator(2023)]
4549
)
46-
year = models.IntegerField()
47-
50+
4851
def __str__(self):
49-
return f"{self.car_make.name} {self.name} {self.year}"
52+
return self.name

server/djangoapp/populate.py

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,31 @@
11
import os
2-
import django
32
import json
3+
from .models import CarMake, CarModel
44

5-
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoproj.settings')
6-
django.setup()
75

8-
from djangoapp.models import CarMake, CarModel
6+
def initiate():
7+
# Delete all data from tables
8+
CarModel.objects.all().delete()
9+
CarMake.objects.all().delete()
910

10-
# Load data from car_makes.json
11-
with open('djangoapp/data/car_makes.json') as file:
12-
car_makes_data = json.load(file)
13-
for make_data in car_makes_data['car_makes']:
14-
make = CarMake.objects.create(
15-
name=make_data['name'],
16-
description=make_data['description']
11+
# Load car makes and models from JSON file
12+
script_dir = os.path.dirname(__file__)
13+
with open(os.path.join(script_dir, 'car_models.json'), 'r') as file:
14+
car_data = json.load(file)
15+
16+
# Create car makes and models
17+
for make_name, models in car_data.items():
18+
# Create car make
19+
car_make = CarMake.objects.create(
20+
name=make_name,
21+
description=f"This is the {make_name} manufacturer"
1722
)
1823

19-
# Load data from car_models.json
20-
with open('djangoapp/data/car_models.json') as file:
21-
car_models_data = json.load(file)
22-
for model_data in car_models_data['car_models']:
23-
make = CarMake.objects.get(name=model_data['make'])
24-
CarModel.objects.create(
25-
car_make=make,
26-
name=model_data['name'],
27-
type=model_data['type'],
28-
year=model_data['year']
29-
)
24+
# Create car models for this make
25+
for model in models:
26+
CarModel.objects.create(
27+
car_make=car_make,
28+
name=model['name'],
29+
car_type=model['type'],
30+
year=model.get('year', 2023)
31+
)

server/djangoapp/restapis.py

Lines changed: 1 addition & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import requests
22
import json
3-
from .models import CarMake, CarModel
4-
from django.http import JsonResponse
3+
from .models import CarMake
54

65

76
# Create your tests here.
@@ -58,59 +57,3 @@ def post_review(review_json):
5857
print(f"Error: {response.status_code}")
5958
return {"status": "error"}
6059

61-
62-
# Create an API request to the dealership backend
63-
def get_dealers_from_cf(url, **kwargs):
64-
results = []
65-
try:
66-
# Call get dealers API endpoint from backend
67-
response = requests.get(
68-
url,
69-
headers={
70-
'Content-Type': 'application/json'
71-
},
72-
params=kwargs
73-
)
74-
return response.json()
75-
except:
76-
# If there is any error, return empty results
77-
return results
78-
79-
80-
# Create an API request to get dealer reviews from the backend
81-
def get_dealer_reviews_from_cf(url, dealer_id):
82-
results = []
83-
try:
84-
# Call get reviews API endpoint from backend
85-
response = requests.get(
86-
url,
87-
headers={
88-
'Content-Type': 'application/json'
89-
},
90-
params={
91-
'dealerId': dealer_id
92-
}
93-
)
94-
return response.json()
95-
except:
96-
# If there is any error, return empty results
97-
return results
98-
99-
100-
# Create an API request to post a review
101-
def post_request(url, payload, **kwargs):
102-
try:
103-
# Call post review API endpoint from backend
104-
response = requests.post(
105-
url,
106-
headers={
107-
'Content-Type': 'application/json'
108-
},
109-
params=kwargs,
110-
json=payload
111-
)
112-
return response.json()
113-
except:
114-
# If there is any error, return empty JSON
115-
return {}
116-

server/djangoapp/urls.py

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,29 @@
55

66
app_name = 'djangoapp'
77
urlpatterns = [
8-
# Route to home page
9-
path('', views.get_dealerships, name='index'),
8+
# route is a string contains a URL pattern
9+
# view refers to the view function
10+
# name the URL
11+
path('', views.registration, name='index'),
12+
13+
# path for registration
14+
path('registration/', views.registration, name='registration'),
1015

11-
# Route for dealer reviews
12-
path('dealer/<int:dealer_id>/', views.get_dealer_details, name='dealer_details'),
16+
# path for login
17+
path('login/', views.login_user, name='login'),
1318

14-
# Route for adding a review
15-
path('dealer/<int:dealer_id>/add_review/', views.add_review, name='add_review'),
19+
# path for logout
20+
path('logout/', views.logout_request, name='logout'),
21+
22+
path('get_cars/', views.get_cars, name='get_cars'),
1623

17-
# API routes
18-
path('api/v1/get_dealers', views.get_dealerships, name='get_dealerships'),
24+
# path for dealer reviews view
25+
path('dealer_details/<int:dealer_id>/', views.get_dealer_details, name='dealer_details'),
1926

20-
path(
21-
'api/v1/get_dealer_reviews/<int:dealer_id>/',
22-
views.get_dealer_reviews,
23-
name='dealer_reviews'
24-
),
27+
# path for dealers
28+
path('dealerships/', views.get_dealerships, name='dealerships'),
29+
path('dealerships/<str:state>/', views.get_dealerships, name='dealerships_st'),
2530

26-
path(
27-
'api/v1/post_review/<int:dealer_id>/',
28-
views.add_review,
29-
name='post_review'
30-
),
31-
]
32-
33-
# Serving static files in development
34-
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
31+
# path for dealer reviews view
32+
path('dealer_reviews/<int:dealer_id>/', views.get_dealer_reviews, name='dealer_reviews'),
33+
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

0 commit comments

Comments
 (0)