def manufacture_shoe(request): ''' Check user login Check plantId, playerId, sole, body, color, sellprice, qty exist in querydict (request.GET) Check plantId belongs to account Check shoeId belongs to plant Get plant by plantId ''' if request.session.__contains__('account'): args = request.GET if args.__contains__('sole') and args.__contains__('body') and args.__contains__('color') and args.__contains__('playerId') and args.__contains__('plantId') and args.__contains__('sellprice') and args.__contains__('qty'): _sole = int(args.__getitem__('sole')) _body = int(args.__getitem__('body')) _color= int(args.__getitem__('color')) _qty= int(args.__getitem__('qty')) _sellprice = float(args.__getitem__('sellprice')) _plantId = int(args.__getitem__('plantId')) _playerId = int(args.__getitem__('playerId')) plant = Plant.get_by_id(_plantId) if plant != None and plant.playerId == _playerId: if _body < 10 or _sole < 10 or _color < 10: return HttpResponse("Minimum shoe body, sole and color is 10") player = Player.get_by_id(_playerId) _costPrice = _body * shoeMatCost['body'] + _sole * shoeMatCost['sole'] + _color * shoeMatCost['color'] _totalCost = _costPrice * _qty ##check if player has money hasMoney = (_totalCost <= player.money) ##has enough capacity hasCapacity = (_qty+plant.currentCapacity <= plant.productionLimit) if hasMoney == True and hasCapacity == True: shoe = Shoe(plantId = _plantId, sole = _sole, body = _body, color = _color, price = _sellprice, qty = _qty, costPrice = _costPrice) shoe.put() player.money -= _totalCost player.money_spent += _totalCost player.networth = player.money + player.money_spent player.put() plant.currentCapacity += _qty plant.put() supTrxn = SupplyTransaction(shoeId = shoe.key().id(), costPerUnit = _costPrice, qty = _qty, totalCost = _totalCost, trxnDate = datetime.datetime.now()) supTrxn.put() return redirect("/app/main.html#/theworld") elif hasMoney == False: return HttpResponse("not enough money") else: return HttpResponse("insufficient factory capacity") else: return HttpResponse("plant does not belong to player") else: return HttpResponse("value missing") else: return HttpResponse("Please Login.")
def hire_worker(request): ''' Check user login Check plantId, numWorker, playerId exist in querydict (request.GET) Check plantId belongs to account Get plant by plantId ''' if request.session.__contains__('account'): args = request.GET if args.__contains__('numWorker') and args.__contains__('plantId') and args.__contains__('playerId'): try: playerId = int(args.__getitem__('playerId')) plantId = int(args.__getitem__('plantId')) numWorker = int(args.__getitem__('numWorker')) plant = Plant.get_by_id(plantId) if plant != None and plant.playerId == playerId: player = Player.get_by_id(playerId) region = plant.region workerCost = worker[region][0] totalHireCost = workerCost * numWorker if totalHireCost <= player.money: plant.numOfWorkers += numWorker capProd = int((1*plant.workerHealth) + (0.5*plant.workerSkills) + (0.75 * plant.workerProductivity) * 10 * plant.numOfWorkers) if capProd > plant.capacity: capProd = plant.capacity plant.productionLimit = capProd player.money = player.money - totalHireCost player.money_spent = player.money_spent + totalHireCost player.networth = player.money + player.money_spent plant.put() player.put() else: return redirect("/app/error.html?error=NotEnoughMoney") else: return redirect("/app/error.htmlerror=InvalidPlant") except ValueError: return redirect("/app/error.html?error=ValueError") else: return redirect("/app/error.html?error=NotEnoughArguments") else: return redirect("/") return redirect("/app/main.html#/theworld")