Skip to content

Commit 9177e56

Browse files
committed
make django models initial commit
1 parent c8628e9 commit 9177e56

File tree

6 files changed

+84
-10
lines changed

6 files changed

+84
-10
lines changed

server/djangoapp/admin.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
# from django.contrib import admin
2-
# from .models import related models
1+
from django.contrib import admin
2+
from .models import CarModel, CarMake
33

44

55
# Register your models here.
6-
6+
admin.site.register(CarMake)
7+
admin.site.register(CarModel)
78
# CarModelInline class
89

910
# CarModelAdmin class

server/djangoapp/models.py

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

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

77

88
# Create your models here.
@@ -12,6 +12,13 @@
1212
# - Description
1313
# - Any other fields you would like to include in car make model
1414
# - __str__ method to print a car make object
15+
class CarMake(models.Model):
16+
name = models.CharField(max_length=100)
17+
description = models.TextField()
18+
# Other fields as needed
19+
20+
def __str__(self):
21+
return self.name # Return the name as the string representation
1522

1623

1724
# <HINT> Create a Car Model model `class CarModel(models.Model):`:
@@ -23,3 +30,22 @@
2330
# - Year (IntegerField) with min value 2015 and max value 2023
2431
# - Any other fields you would like to include in car model
2532
# - __str__ method to print a car make object
33+
class CarModel(models.Model):
34+
car_make = models.ForeignKey(CarMake, on_delete=models.CASCADE) # Many-to-One relationship
35+
name = models.CharField(max_length=100)
36+
CAR_TYPES = [
37+
('SEDAN', 'Sedan'),
38+
('SUV', 'SUV'),
39+
('WAGON', 'Wagon'),
40+
# Add more choices as required
41+
]
42+
type = models.CharField(max_length=10, choices=CAR_TYPES, default='SUV')
43+
year = models.IntegerField(default=2023,
44+
validators=[
45+
MaxValueValidator(2023),
46+
MinValueValidator(2015)
47+
])
48+
# Other fields as needed
49+
50+
def __str__(self):
51+
return self.name # Return the name as the string representation

server/djangoapp/populate.py

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,38 @@
1+
from .models import CarMake, CarModel
2+
13
def initiate():
2-
print("Populate not implemented. Add data manually")
4+
car_make_data = [
5+
{"name":"NISSAN", "description":"Great cars. Japanese technology"},
6+
{"name":"Mercedes", "description":"Great cars. German technology"},
7+
{"name":"Audi", "description":"Great cars. German technology"},
8+
{"name":"Kia", "description":"Great cars. Korean technology"},
9+
{"name":"Toyota", "description":"Great cars. Japanese technology"},
10+
]
11+
12+
car_make_instances = []
13+
for data in car_make_data:
14+
car_make_instances.append(CarMake.objects.create(name=data['name'], description=data['description']))
15+
16+
17+
# Create CarModel instances with the corresponding CarMake instances
18+
car_model_data = [
19+
{"name":"Pathfinder", "type":"SUV", "year": 2023, "car_make":car_make_instances[0]},
20+
{"name":"Qashqai", "type":"SUV", "year": 2023, "car_make":car_make_instances[0]},
21+
{"name":"XTRAIL", "type":"SUV", "year": 2023, "car_make":car_make_instances[0]},
22+
{"name":"A-Class", "type":"SUV", "year": 2023, "car_make":car_make_instances[1]},
23+
{"name":"C-Class", "type":"SUV", "year": 2023, "car_make":car_make_instances[1]},
24+
{"name":"E-Class", "type":"SUV", "year": 2023, "car_make":car_make_instances[1]},
25+
{"name":"A4", "type":"SUV", "year": 2023, "car_make":car_make_instances[2]},
26+
{"name":"A5", "type":"SUV", "year": 2023, "car_make":car_make_instances[2]},
27+
{"name":"A6", "type":"SUV", "year": 2023, "car_make":car_make_instances[2]},
28+
{"name":"Sorrento", "type":"SUV", "year": 2023, "car_make":car_make_instances[3]},
29+
{"name":"Carnival", "type":"SUV", "year": 2023, "car_make":car_make_instances[3]},
30+
{"name":"Cerato", "type":"Sedan", "year": 2023, "car_make":car_make_instances[3]},
31+
{"name":"Corolla", "type":"Sedan", "year": 2023, "car_make":car_make_instances[4]},
32+
{"name":"Camry", "type":"Sedan", "year": 2023, "car_make":car_make_instances[4]},
33+
{"name":"Kluger", "type":"SUV", "year": 2023, "car_make":car_make_instances[4]},
34+
# Add more CarModel instances as needed
35+
]
36+
37+
for data in car_model_data:
38+
CarModel.objects.create(name=data['name'], car_make=data['car_make'], type=data['type'], year=data['year'])

server/djangoapp/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
path(route='login', view=views.login_user, name='login'),
1414
# path for logout
1515
path(route='logout', view=views.logout_request, name='logout'),
16+
path(route='get_cars', view=views.get_cars, name ='getcars'),
1617

1718
# path for dealer reviews view
1819

server/djangoapp/views.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import json
1515
from django.views.decorators.csrf import csrf_exempt
1616
from .populate import initiate
17+
from .models import CarMake, CarModel
1718

1819

1920
# Get an instance of a logger
@@ -82,7 +83,16 @@ def registration(request):
8283
return JsonResponse(data)
8384

8485
# ...
85-
86+
def get_cars(request):
87+
count = CarMake.objects.filter().count()
88+
print(count)
89+
if(count == 0):
90+
initiate()
91+
car_models = CarModel.objects.select_related('car_make')
92+
cars = []
93+
for car_model in car_models:
94+
cars.append({"CarModel": car_model.name, "CarMake": car_model.car_make.name})
95+
return JsonResponse({"CarModels":cars})
8696
# # Update the `get_dealerships` view to render the index page with
8797
# a list of dealerships
8898
# def get_dealerships(request):

server/djangoproj/settings.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
DEBUG = True
3030

3131
ALLOWED_HOSTS = ['localhost','https://drun16info-8000.theianext-0-labs-prod-misc-tools-us-east-0.proxy.cognitiveclass.ai',
32-
'127.0.0.1','https://drun16info-3030.theiadockernext-0-labs-prod-theiak8s-4-tor01.proxy.cognitiveclass.ai/']
33-
CSRF_TRUSTED_ORIGINS = ['https://drun16info-8000.theianext-0-labs-prod-misc-tools-us-east-0.proxy.cognitiveclass.ai']
32+
'127.0.0.1','https://drun16info-3030.theiadockernext-0-labs-prod-theiak8s-4-tor01.proxy.cognitiveclass.ai']
33+
CSRF_TRUSTED_ORIGINS = ['https://drun16info-3030.theiadockernext-0-labs-prod-theiak8s-4-tor01.proxy.cognitiveclass.ai']
3434

3535
REST_FRAMEWORK = {
3636
'DEFAULT_AUTHENTICATION_CLASSES': [],

0 commit comments

Comments
 (0)