Skip to content

Commit

Permalink
recipe materials amount
Browse files Browse the repository at this point in the history
  • Loading branch information
lucasbpro committed Feb 17, 2021
1 parent c831fc1 commit 943cfca
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 13 deletions.
Binary file modified data.db
Binary file not shown.
2 changes: 1 addition & 1 deletion models/raw_material.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,4 @@ def find_by_description(cls, name):

@classmethod
def find_by_id(cls, id):
return cls.query.filter_by(id_=id).first()
return cls.query.filter_by(id=id).first()
19 changes: 13 additions & 6 deletions models/recipe.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,19 @@ def __init__(self, description, labor_cost, supply_cost):
self.last_update = self.creation_date

def json(self):
materialList = {}
for material in self.materials:
recipeMaterialItem = RecipeMaterialAmountModel.find_by_map(self.id,material.id)
if recipeMaterialItem:
materialList[material.id] = recipeMaterialItem.amount

return {'id' : self.id,
'description' : self.description,
'creation_date' : self.creation_date,
'last_update' : self.last_update,
'labor_cost' : self.labor_cost,
'supply_cost' : self.supply_cost,
'materials' : [material.id for material in self.materials]
'materials' : materialList
}

def save_to_db(self):
Expand All @@ -55,8 +61,9 @@ def get_materials(self):
return [material.json() for material in self.materials]

def get_materials_amount(self):
return [ {
"material_id": material.id,
"amount": RecipeMaterialAmountModel.find_by_material_id(material.id).amount
}
for material in self.materials]
materialList = {}
for material in self.materials:
recipeMaterialItem = RecipeMaterialAmountModel.find_by_map(self.id,material.id)
if recipeMaterialItem:
materialList[material.id] = recipeMaterialItem.amount
return materialList
22 changes: 16 additions & 6 deletions resources/recipe.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
# import model
from models.recipe import RecipeModel
from models.raw_material import RawMaterialModel
from models.recipe_material_amt import RecipeMaterialAmountModel

class Recipe(Resource):

Expand All @@ -17,7 +18,7 @@ class Recipe(Resource):
parser.add_argument('description',type=str,required=False)
parser.add_argument('labor_cost',type=float,required=False)
parser.add_argument('supply_cost',type=float,required=False)
parser.add_argument('materials',type=int, action='append',required=False)
parser.add_argument('materials', type=dict, action="append",required=False)

# to handle HTTP GET /recipe?id=<int:id>
def get(self, id):
Expand Down Expand Up @@ -56,25 +57,34 @@ def put(self, id):
recipe.sell_by_date = data['sell_by_date']
if key=='materials':
recipe.materials.clear()
for id in data['materials']:
material = RawMaterialModel.find_by_id(id)
for item in data['materials']:
materialId = item.id
materialAmount = item.amount
material = RawMaterialModel.find_by_id(materialId)
if material:
recipe.materials.append(material)
print(recipe.id)
materialRecipeItem = RecipeMaterialAmountModel(recipe.id, materialId, materialAmount)

recipe.last_update = datetime.now().strftime("%d/%m/%Y %H:%M")

# in case not exist, creates a new item
else:
recipe = RecipeModel(data['description'],data['labor_cost'],data['supply_cost'])
for id in data['materials']:
material = RawMaterialModel.find_by_id(id)
materialsDict = data['materials'][0]
for key in materialsDict.keys():
materialId = int(key)
materialAmount = materialsDict[key]
material = RawMaterialModel.find_by_id(materialId)
if material:
recipe.materials.append(material)
materialRecipeItem = RecipeMaterialAmountModel(recipe.id, materialId, materialAmount)

# tries to insert in database
# returns 500 (internal server error) in case of database failure
try:
recipe.save_to_db()
materialRecipeItem.save_to_db()
except:
return {"message": constants['INSERT_FAIL']}, 500

Expand All @@ -88,7 +98,7 @@ class Recipes(Resource):
parser.add_argument('description',type=str,required=True)
parser.add_argument('labor_cost',type=float,required=False)
parser.add_argument('supply_cost',type=float,required=False)
parser.add_argument('materials',type=int, action='append',required=True)
parser.add_argument('materials',type=dict,action="append",required=True)

# handles HTTP request GET /recipes
def get(self):
Expand Down

0 comments on commit 943cfca

Please sign in to comment.