Starter python code for deployed app.

master
Michael Kennedy 8 years ago
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…
Cancel
Save