Starter python code for deployed app.
parent
554a46071f
commit
fca73115a3
@ -0,0 +1,22 @@
|
||||
import uuid
|
||||
import mongoengine
|
||||
|
||||
from nosql.engine import Engine
|
||||
from nosql.servicehistory import ServiceHistory
|
||||
|
||||
|
||||
class Car(mongoengine.Document):
|
||||
model = mongoengine.StringField(required=True)
|
||||
make = mongoengine.StringField(required=True)
|
||||
year = mongoengine.IntField(required=True)
|
||||
mileage = mongoengine.FloatField(default=0.0)
|
||||
vi_number = mongoengine.StringField(
|
||||
default=lambda: str(uuid.uuid4()).replace('-', ''))
|
||||
|
||||
engine = mongoengine.EmbeddedDocumentField(Engine)
|
||||
service_history = mongoengine.EmbeddedDocumentListField(ServiceHistory)
|
||||
|
||||
meta = {
|
||||
'db_alias': 'core',
|
||||
'collection': 'cars',
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
import uuid
|
||||
import mongoengine
|
||||
|
||||
|
||||
class Engine(mongoengine.EmbeddedDocument):
|
||||
horsepower = mongoengine.IntField(required=True)
|
||||
liters = mongoengine.FloatField(required=True)
|
||||
mpg = mongoengine.FloatField(required=True)
|
||||
serial_number = mongoengine.StringField(
|
||||
default=lambda: str(uuid.uuid4())
|
||||
)
|
@ -0,0 +1,5 @@
|
||||
import mongoengine
|
||||
|
||||
|
||||
def global_init():
|
||||
mongoengine.register_connection(alias='core', name='demo_dealership')
|
@ -0,0 +1,10 @@
|
||||
import mongoengine
|
||||
import datetime
|
||||
|
||||
|
||||
class ServiceHistory(mongoengine.EmbeddedDocument):
|
||||
date = mongoengine.DateTimeField(default=datetime.datetime.now)
|
||||
description = mongoengine.StringField()
|
||||
price = mongoengine.FloatField()
|
||||
customer_rating = mongoengine.IntField(min_value=1, max_value=5)
|
||||
|
@ -0,0 +1,135 @@
|
||||
import nosql.mongo_setup as mongo_setup
|
||||
from nosql.car import Car
|
||||
from nosql.engine import Engine
|
||||
from nosql.servicehistory import ServiceHistory
|
||||
|
||||
|
||||
def main():
|
||||
print_header()
|
||||
config_mongo()
|
||||
# update_doc_versions()
|
||||
user_loop()
|
||||
|
||||
|
||||
# noinspection PyProtectedMember
|
||||
# def update_doc_versions():
|
||||
# for car in Car.objects():
|
||||
# car._mark_as_changed('vi_number')
|
||||
# car.save()
|
||||
|
||||
|
||||
def print_header():
|
||||
print('----------------------------------------------')
|
||||
print('| |')
|
||||
print('| SERVICE CENTRAL v.02 |')
|
||||
print('| demo edition |')
|
||||
print('| |')
|
||||
print('----------------------------------------------')
|
||||
print()
|
||||
|
||||
|
||||
def config_mongo():
|
||||
mongo_setup.global_init()
|
||||
|
||||
|
||||
def user_loop():
|
||||
while True:
|
||||
print("Available actions:")
|
||||
print(" * [a]dd car")
|
||||
print(" * [l]ist cars")
|
||||
print(" * [p]oorly serviced")
|
||||
print(" * perform [s]ervice")
|
||||
print(" * e[x]it")
|
||||
print()
|
||||
ch = input("> ").strip().lower()
|
||||
if ch == 'a':
|
||||
add_car()
|
||||
elif ch == 'l':
|
||||
list_cars()
|
||||
elif ch == 's':
|
||||
service_car()
|
||||
elif ch == 'p':
|
||||
show_poorly_serviced_cars()
|
||||
elif not ch or ch == 'x':
|
||||
print("Goodbye")
|
||||
break
|
||||
|
||||
|
||||
def add_car():
|
||||
model = input("What is the model? ")
|
||||
make = 'Ferrari' # input("What is the make? ")
|
||||
year = int(input("Year built? "))
|
||||
|
||||
car = Car()
|
||||
car.year = year
|
||||
car.make = make
|
||||
car.model = model
|
||||
|
||||
engine = Engine()
|
||||
engine.horsepower = 590
|
||||
engine.mpg = 22
|
||||
engine.liters = 4.0
|
||||
|
||||
car.engine = engine
|
||||
|
||||
car.save()
|
||||
|
||||
|
||||
def list_cars():
|
||||
cars = Car.objects().order_by("-year")
|
||||
for car in cars:
|
||||
print("{} -- {} with vin {} (year {})".format(
|
||||
car.make, car.model, car.vi_number, car.year))
|
||||
print("{} of service records".format(len(car.service_history)))
|
||||
for s in car.service_history:
|
||||
print(" * ${:,.0f} {}".format(s.price, s.description))
|
||||
print()
|
||||
|
||||
|
||||
def find_car():
|
||||
print("TODO: find_car")
|
||||
|
||||
|
||||
def service_car():
|
||||
# vin = input("What is the VIN of the car to service? ")
|
||||
# car = Car.objects(vi_number=vin).first()
|
||||
# if not car:
|
||||
# print("Car with VIN {} not found!".format(vin))
|
||||
# return
|
||||
#
|
||||
# service = ServiceHistory()
|
||||
# service.price = float(input("What is the price? "))
|
||||
# service.description = input("What type of service is this? ")
|
||||
# service.customer_rating = int(input("How happy is our customer? [1-5] "))
|
||||
#
|
||||
# car.service_history.append(service)
|
||||
# car.save()
|
||||
|
||||
vin = input("What is the VIN of the car to service? ")
|
||||
service = ServiceHistory()
|
||||
service.price = float(input("What is the price? "))
|
||||
service.description = input("What type of service is this? ")
|
||||
service.customer_rating = int(input("How happy is our customer? [1-5] "))
|
||||
|
||||
updated = Car.objects(vi_number=vin).update_one(push__service_history=service)
|
||||
if updated == 0:
|
||||
print("Car with VIN {} not found!".format(vin))
|
||||
return
|
||||
|
||||
|
||||
def show_poorly_serviced_cars():
|
||||
level = int(input("What max level of satisfaction are we looking for? [1-5] "))
|
||||
# { "service_history.customer_rating": {$lte: level} }
|
||||
cars = Car.objects(service_history__customer_rating__lte=level)
|
||||
for car in cars:
|
||||
print("{} -- {} with vin {} (year {})".format(
|
||||
car.make, car.model, car.vi_number, car.year))
|
||||
print("{} of service records".format(len(car.service_history)))
|
||||
for s in car.service_history:
|
||||
print(" * Satisfaction: {} ${:,.0f} {}".format(
|
||||
s.customer_rating, s.price, s.description))
|
||||
print()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
@ -0,0 +1,22 @@
|
||||
import uuid
|
||||
import mongoengine
|
||||
|
||||
from nosql.engine import Engine
|
||||
from nosql.servicehistory import ServiceHistory
|
||||
|
||||
|
||||
class Car(mongoengine.Document):
|
||||
model = mongoengine.StringField(required=True)
|
||||
make = mongoengine.StringField(required=True)
|
||||
year = mongoengine.IntField(required=True)
|
||||
mileage = mongoengine.FloatField(default=0.0)
|
||||
vi_number = mongoengine.StringField(
|
||||
default=lambda: str(uuid.uuid4()).replace('-', ''))
|
||||
|
||||
engine = mongoengine.EmbeddedDocumentField(Engine)
|
||||
service_history = mongoengine.EmbeddedDocumentListField(ServiceHistory)
|
||||
|
||||
meta = {
|
||||
'db_alias': 'core',
|
||||
'collection': 'cars',
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
import uuid
|
||||
import mongoengine
|
||||
|
||||
|
||||
class Engine(mongoengine.EmbeddedDocument):
|
||||
horsepower = mongoengine.IntField(required=True)
|
||||
liters = mongoengine.FloatField(required=True)
|
||||
mpg = mongoengine.FloatField(required=True)
|
||||
serial_number = mongoengine.StringField(
|
||||
default=lambda: str(uuid.uuid4())
|
||||
)
|
@ -0,0 +1,5 @@
|
||||
import mongoengine
|
||||
|
||||
|
||||
def global_init():
|
||||
mongoengine.register_connection(alias='core', name='demo_dealership')
|
@ -0,0 +1,10 @@
|
||||
import mongoengine
|
||||
import datetime
|
||||
|
||||
|
||||
class ServiceHistory(mongoengine.EmbeddedDocument):
|
||||
date = mongoengine.DateTimeField(default=datetime.datetime.now)
|
||||
description = mongoengine.StringField()
|
||||
price = mongoengine.FloatField()
|
||||
customer_rating = mongoengine.IntField(min_value=1, max_value=5)
|
||||
|
@ -0,0 +1,135 @@
|
||||
import nosql.mongo_setup as mongo_setup
|
||||
from nosql.car import Car
|
||||
from nosql.engine import Engine
|
||||
from nosql.servicehistory import ServiceHistory
|
||||
|
||||
|
||||
def main():
|
||||
print_header()
|
||||
config_mongo()
|
||||
# update_doc_versions()
|
||||
user_loop()
|
||||
|
||||
|
||||
# noinspection PyProtectedMember
|
||||
# def update_doc_versions():
|
||||
# for car in Car.objects():
|
||||
# car._mark_as_changed('vi_number')
|
||||
# car.save()
|
||||
|
||||
|
||||
def print_header():
|
||||
print('----------------------------------------------')
|
||||
print('| |')
|
||||
print('| SERVICE CENTRAL v.02 |')
|
||||
print('| demo edition |')
|
||||
print('| |')
|
||||
print('----------------------------------------------')
|
||||
print()
|
||||
|
||||
|
||||
def config_mongo():
|
||||
mongo_setup.global_init()
|
||||
|
||||
|
||||
def user_loop():
|
||||
while True:
|
||||
print("Available actions:")
|
||||
print(" * [a]dd car")
|
||||
print(" * [l]ist cars")
|
||||
print(" * [p]oorly serviced")
|
||||
print(" * perform [s]ervice")
|
||||
print(" * e[x]it")
|
||||
print()
|
||||
ch = input("> ").strip().lower()
|
||||
if ch == 'a':
|
||||
add_car()
|
||||
elif ch == 'l':
|
||||
list_cars()
|
||||
elif ch == 's':
|
||||
service_car()
|
||||
elif ch == 'p':
|
||||
show_poorly_serviced_cars()
|
||||
elif not ch or ch == 'x':
|
||||
print("Goodbye")
|
||||
break
|
||||
|
||||
|
||||
def add_car():
|
||||
model = input("What is the model? ")
|
||||
make = 'Ferrari' # input("What is the make? ")
|
||||
year = int(input("Year built? "))
|
||||
|
||||
car = Car()
|
||||
car.year = year
|
||||
car.make = make
|
||||
car.model = model
|
||||
|
||||
engine = Engine()
|
||||
engine.horsepower = 590
|
||||
engine.mpg = 22
|
||||
engine.liters = 4.0
|
||||
|
||||
car.engine = engine
|
||||
|
||||
car.save()
|
||||
|
||||
|
||||
def list_cars():
|
||||
cars = Car.objects().order_by("-year")
|
||||
for car in cars:
|
||||
print("{} -- {} with vin {} (year {})".format(
|
||||
car.make, car.model, car.vi_number, car.year))
|
||||
print("{} of service records".format(len(car.service_history)))
|
||||
for s in car.service_history:
|
||||
print(" * ${:,.0f} {}".format(s.price, s.description))
|
||||
print()
|
||||
|
||||
|
||||
def find_car():
|
||||
print("TODO: find_car")
|
||||
|
||||
|
||||
def service_car():
|
||||
# vin = input("What is the VIN of the car to service? ")
|
||||
# car = Car.objects(vi_number=vin).first()
|
||||
# if not car:
|
||||
# print("Car with VIN {} not found!".format(vin))
|
||||
# return
|
||||
#
|
||||
# service = ServiceHistory()
|
||||
# service.price = float(input("What is the price? "))
|
||||
# service.description = input("What type of service is this? ")
|
||||
# service.customer_rating = int(input("How happy is our customer? [1-5] "))
|
||||
#
|
||||
# car.service_history.append(service)
|
||||
# car.save()
|
||||
|
||||
vin = input("What is the VIN of the car to service? ")
|
||||
service = ServiceHistory()
|
||||
service.price = float(input("What is the price? "))
|
||||
service.description = input("What type of service is this? ")
|
||||
service.customer_rating = int(input("How happy is our customer? [1-5] "))
|
||||
|
||||
updated = Car.objects(vi_number=vin).update_one(push__service_history=service)
|
||||
if updated == 0:
|
||||
print("Car with VIN {} not found!".format(vin))
|
||||
return
|
||||
|
||||
|
||||
def show_poorly_serviced_cars():
|
||||
level = int(input("What max level of satisfaction are we looking for? [1-5] "))
|
||||
# { "service_history.customer_rating": {$lte: level} }
|
||||
cars = Car.objects(service_history__customer_rating__lte=level)
|
||||
for car in cars:
|
||||
print("{} -- {} with vin {} (year {})".format(
|
||||
car.make, car.model, car.vi_number, car.year))
|
||||
print("{} of service records".format(len(car.service_history)))
|
||||
for s in car.service_history:
|
||||
print(" * Satisfaction: {} ${:,.0f} {}".format(
|
||||
s.customer_rating, s.price, s.description))
|
||||
print()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Reference in New Issue