def jf_update(*args, **kwargs): contracts(*args, **kwargs)
def pilot(): # Reservation System capacity = 300000 optimize_route_list = [] optimize_start_list = [] optimize_end_list = [] run_optimize = False if request.method == "POST" and (request.form.get("add") or request.form.get("remove")): bulk_op = g.mongo.db.contracts.initialize_unordered_bulk_op() bulk_run = False if request.form.get("add"): bulk_run = True add_ids = [int(x) for x in request.form.get("add").split(",")] for db_id in add_ids: bulk_op.find({"_id.id": db_id}).update({"$set": {"reserved_by": session["CharacterName"]}}) elif request.form.get("remove"): bulk_run = True remove_ids = [int(x) for x in request.form.get("remove").split(",")] for db_id in remove_ids: bulk_op.find({"_id.id": db_id}).update({"$unset": {"reserved_by": session["CharacterName"]}}) if bulk_run: bulk_op.execute() elif request.method == "POST": run_optimize = True optimize_start_list = request.form.getlist("start") optimize_end_list = request.form.getlist("end") for optimize_start in optimize_start_list: for optimize_end in optimize_end_list: optimize_route_list.append("{0}{1}".format(optimize_start, optimize_end)) capacity = request.form.get("capacity", 300000) try: capacity = int(capacity) except ValueError: capacity = 300000 # JF Corporation Contracts jf_contracts = g.mongo.db.contracts.find({ "_id.service": "jf_service", "status": "Outstanding", "type": "Courier" }) contract_list = sorted(jf_contracts, key=itemgetter("volume"), reverse=True) total_volume = 0 optimized_run = [["Issuer", "Start Station", "End Station", "Date Issued", "Date Expired", "Days", "Reward", "Collateral", "Volume"]] reserved_contracts = [["Issuer", "Start Station", "End Station", "Date Issued", "Date Expired", "Days", "Reward", "Collateral", "Volume"]] all_history = [["Issuer", "Start Station", "End Station", "Date Issued", "Date Expired", "Days", "Reward", "Collateral", "Volume", "Reserved By"]] users_set = set() for contract in contract_list: users_set.update([contract["issuer_id"]]) caches.character(users_set) optimized_reward = 0 optimized_collateral = 0 optimized_volume = 0 optimized_ids = [] reserved_reward = 0 reserved_collateral = 0 reserved_volume = 0 reserved_ids = [] route_start_set = set() route_end_set = set() for contract in contract_list: # Check for non-static stations start_station = g.mongo.db.stations.find_one({"_id": contract["start_station_id"]})["name"] end_station = g.mongo.db.stations.find_one({"_id": contract["end_station_id"]})["name"] current_route = "{0}{1}".format(contract["start_station_id"], contract["end_station_id"]) route_start_set.add((contract["start_station_id"], start_station)) route_end_set.add((contract["end_station_id"], end_station)) issuer = conversions.character(contract["issuer_id"]) color = validator(contract) if (not contract.get("reserved_by") and total_volume + contract["volume"] <= capacity) and ( color not in ["active", "info"] and (run_optimize and current_route in optimize_route_list)): optimized_reward += contract["reward"] optimized_collateral += contract["collateral"] optimized_volume += contract["volume"] optimized_run.append([ color, issuer, start_station, end_station, contract["date_issued"], contract["date_expired"], contract["num_days"], "{:0,.2f}".format(contract["reward"]), "{:0,.2f}".format(contract["collateral"]), "{:0,.2f}".format(contract["volume"]) ]) total_volume += contract["volume"] optimized_ids.append(str(contract["_id"]["id"])) if contract.get("reserved_by") == session["CharacterName"]: reserved_reward += contract["reward"] reserved_collateral += contract["collateral"] reserved_volume += contract["volume"] reserved_contracts.append([ color, contract["_id"]["id"], issuer, start_station, end_station, contract["date_issued"], contract["date_expired"], contract["num_days"], "{:0,.2f}".format(contract["reward"]), "{:0,.2f}".format(contract["collateral"]), "{:0,.2f}".format(contract["volume"]) ]) reserved_ids.append(str(contract["_id"]["id"])) all_history.append([ color, contract["_id"]["id"], issuer, start_station, end_station, contract["date_issued"], contract["date_expired"], contract["num_days"], "{:0,.2f}".format(contract["reward"]), "{:0,.2f}".format(contract["collateral"]), "{:0,.2f}".format(contract["volume"]), contract.get("reserved_by") ]) # Formatting optimized_volume = "{:0,.2f}".format(optimized_volume) optimized_collateral = "{:0,.2f}".format(optimized_collateral) optimized_reward = "{:0,.2f}".format(optimized_reward) reserved_volume = "{:0,.2f}".format(reserved_volume) reserved_collateral = "{:0,.2f}".format(reserved_collateral) reserved_reward = "{:0,.2f}".format(reserved_reward) optimized_return = ",".join(optimized_ids) reserved_return = ",".join(reserved_ids) # Personal Contracts personal_history = [["Assignee", "Issuer", "Start Station", "End Station", "Date Issued", "Date Expired", "Days", "Reward", "Collateral", "Volume"]] personal_api_keys = g.mongo.db.api_keys.find_one({"_id": session["CharacterOwnerHash"]}) if personal_api_keys: invalid_apis = caches.contracts([("personal", api_key["key_id"], api_key["vcode"], api_key["character_id"]) for api_key in personal_api_keys["keys"] if api_key.get("valid", True)]) if invalid_apis: return redirect(url_for("account.home", keys=",".join([str(x) for x in invalid_apis]))) personal_character_ids = [x["character_id"] for x in personal_api_keys["keys"]] personal_contracts = g.mongo.db.contracts.find({ "_id.service": "personal", "status": "Outstanding", "type": "Courier", "assignee_id": {"$in": personal_character_ids} }) users_set = set() for contract in personal_contracts: users_set.update([contract["issuer_id"], contract["assignee_id"]]) caches.character(users_set) # Call db again because query has ended when updating cache personal_contracts = g.mongo.db.contracts.find({ "_id.service": "personal", "status": "Outstanding", "type": "Courier", "assignee_id": {"$in": personal_character_ids} }) for contract in personal_contracts: start_station = g.mongo.db.stations.find_one({"_id": contract["start_station_id"]})["name"] end_station = g.mongo.db.stations.find_one({"_id": contract["end_station_id"]})["name"] issuer = conversions.character(contract["issuer_id"]) assignee = conversions.character(contract["assignee_id"]) color = validator(contract) personal_history.append([ color, assignee, issuer, start_station, end_station, contract["date_issued"], contract["date_expired"], contract["num_days"], "{:0,.2f}".format(contract["reward"]), "{:0,.2f}".format(contract["collateral"]), "{:0,.2f}".format(contract["volume"]) ]) # Payment System jf_paid, jf_tax_total = jf_tax_calculator(session["CharacterOwnerHash"]) db_jf_reimbursement = g.mongo.db.preferences.find_one({"_id": "jf_reimbursement"}) if db_jf_reimbursement: jf_reimbursement = db_jf_reimbursement["amount"] jf_percent_paid = int(min(jf_paid / jf_reimbursement * 100, 100)) jf_percent_owed = max(int(min(jf_tax_total / jf_reimbursement * 100, 100)) - jf_percent_paid, 0) jf_paid = "{:,.02f}".format(jf_paid) jf_tax_total = "{:,.02f}".format(jf_tax_total) jf_reimbursement = "{:,.02f}".format(jf_reimbursement) else: jf_reimbursement = "0.00" jf_percent_paid = 0 jf_percent_owed = 0 jf_paid = "0.00" jf_tax_total = "0.00" return render_template("jf_pilot.html", contract_list=contract_list, optimized_run=optimized_run, reserved_contracts=reserved_contracts, all_history=all_history, optimized_reward=optimized_reward, optimized_collateral=optimized_collateral, optimized_volume=optimized_volume, optimized_return=optimized_return, reserved_reward=reserved_reward, reserved_collateral=reserved_collateral, reserved_volume=reserved_volume, reserved_return=reserved_return, personal_history=personal_history, jf_percent=[jf_percent_paid, jf_percent_owed], jf_reimbursement=jf_reimbursement, jf_taxes=[jf_paid, jf_tax_total], route_start_set=list(route_start_set), capacity=capacity, route_end_set=list(route_end_set), optimize_start_list=[int(x) for x in optimize_start_list], optimize_end_list=[int(y) for y in optimize_end_list])
def pilot(): # Reservation System capacity = 300000 optimize_route_list = [] optimize_start_list = [] optimize_end_list = [] run_optimize = False if request.method == "POST" and (request.form.get("add") or request.form.get("remove")): bulk_op = g.mongo.db.contracts.initialize_unordered_bulk_op() bulk_run = False if request.form.get("add"): bulk_run = True add_ids = [int(x) for x in request.form.get("add").split(",")] for db_id in add_ids: bulk_op.find({ "_id.id": db_id }).update({"$set": { "reserved_by": session["CharacterName"] }}) elif request.form.get("remove"): bulk_run = True remove_ids = [ int(x) for x in request.form.get("remove").split(",") ] for db_id in remove_ids: bulk_op.find({ "_id.id": db_id }).update( {"$unset": { "reserved_by": session["CharacterName"] }}) if bulk_run: bulk_op.execute() elif request.method == "POST": run_optimize = True optimize_start_list = request.form.getlist("start") optimize_end_list = request.form.getlist("end") for optimize_start in optimize_start_list: for optimize_end in optimize_end_list: optimize_route_list.append("{0}{1}".format( optimize_start, optimize_end)) capacity = request.form.get("capacity", 300000) try: capacity = int(capacity) except ValueError: capacity = 300000 # JF Corporation Contracts jf_contracts = g.mongo.db.contracts.find({ "_id.service": "jf_service", "status": "Outstanding", "type": "Courier" }) contract_list = sorted(jf_contracts, key=itemgetter("volume"), reverse=True) total_volume = 0 optimized_run = [[ "Issuer", "Start Station", "End Station", "Date Issued", "Date Expired", "Days", "Reward", "Collateral", "Volume" ]] reserved_contracts = [[ "Issuer", "Start Station", "End Station", "Date Issued", "Date Expired", "Days", "Reward", "Collateral", "Volume" ]] all_history = [[ "Issuer", "Start Station", "End Station", "Date Issued", "Date Expired", "Days", "Reward", "Collateral", "Volume", "Reserved By" ]] users_set = set() for contract in contract_list: users_set.update([contract["issuer_id"]]) caches.character(users_set) optimized_reward = 0 optimized_collateral = 0 optimized_volume = 0 optimized_ids = [] reserved_reward = 0 reserved_collateral = 0 reserved_volume = 0 reserved_ids = [] route_start_set = set() route_end_set = set() for contract in contract_list: # Check for non-static stations start_station = g.mongo.db.stations.find_one( {"_id": contract["start_station_id"]})["name"] end_station = g.mongo.db.stations.find_one( {"_id": contract["end_station_id"]})["name"] current_route = "{0}{1}".format(contract["start_station_id"], contract["end_station_id"]) route_start_set.add((contract["start_station_id"], start_station)) route_end_set.add((contract["end_station_id"], end_station)) issuer = conversions.character(contract["issuer_id"]) color = validator(contract) if (not contract.get("reserved_by") and total_volume + contract["volume"] <= capacity) and ( color not in ["active", "info"] and (run_optimize and current_route in optimize_route_list)): optimized_reward += contract["reward"] optimized_collateral += contract["collateral"] optimized_volume += contract["volume"] optimized_run.append([ color, issuer, start_station, end_station, contract["date_issued"], contract["date_expired"], contract["num_days"], "{:0,.2f}".format(contract["reward"]), "{:0,.2f}".format(contract["collateral"]), "{:0,.2f}".format(contract["volume"]) ]) total_volume += contract["volume"] optimized_ids.append(str(contract["_id"]["id"])) if contract.get("reserved_by") == session["CharacterName"]: reserved_reward += contract["reward"] reserved_collateral += contract["collateral"] reserved_volume += contract["volume"] reserved_contracts.append([ color, contract["_id"]["id"], issuer, start_station, end_station, contract["date_issued"], contract["date_expired"], contract["num_days"], "{:0,.2f}".format(contract["reward"]), "{:0,.2f}".format(contract["collateral"]), "{:0,.2f}".format(contract["volume"]) ]) reserved_ids.append(str(contract["_id"]["id"])) all_history.append([ color, contract["_id"]["id"], issuer, start_station, end_station, contract["date_issued"], contract["date_expired"], contract["num_days"], "{:0,.2f}".format(contract["reward"]), "{:0,.2f}".format(contract["collateral"]), "{:0,.2f}".format(contract["volume"]), contract.get("reserved_by") ]) # Formatting optimized_volume = "{:0,.2f}".format(optimized_volume) optimized_collateral = "{:0,.2f}".format(optimized_collateral) optimized_reward = "{:0,.2f}".format(optimized_reward) reserved_volume = "{:0,.2f}".format(reserved_volume) reserved_collateral = "{:0,.2f}".format(reserved_collateral) reserved_reward = "{:0,.2f}".format(reserved_reward) optimized_return = ",".join(optimized_ids) reserved_return = ",".join(reserved_ids) # Personal Contracts personal_history = [[ "Assignee", "Issuer", "Start Station", "End Station", "Date Issued", "Date Expired", "Days", "Reward", "Collateral", "Volume" ]] personal_api_keys = g.mongo.db.api_keys.find_one( {"_id": session["CharacterOwnerHash"]}) if personal_api_keys: invalid_apis = caches.contracts([ ("personal", api_key["key_id"], api_key["vcode"], api_key["character_id"]) for api_key in personal_api_keys["keys"] if api_key.get("valid", True) ]) if invalid_apis: return redirect( url_for("account.home", keys=",".join([str(x) for x in invalid_apis]))) personal_character_ids = [ x["character_id"] for x in personal_api_keys["keys"] ] personal_contracts = g.mongo.db.contracts.find({ "_id.service": "personal", "status": "Outstanding", "type": "Courier", "assignee_id": { "$in": personal_character_ids } }) users_set = set() for contract in personal_contracts: users_set.update([contract["issuer_id"], contract["assignee_id"]]) caches.character(users_set) # Call db again because query has ended when updating cache personal_contracts = g.mongo.db.contracts.find({ "_id.service": "personal", "status": "Outstanding", "type": "Courier", "assignee_id": { "$in": personal_character_ids } }) for contract in personal_contracts: start_station = g.mongo.db.stations.find_one( {"_id": contract["start_station_id"]})["name"] end_station = g.mongo.db.stations.find_one( {"_id": contract["end_station_id"]})["name"] issuer = conversions.character(contract["issuer_id"]) assignee = conversions.character(contract["assignee_id"]) color = validator(contract) personal_history.append([ color, assignee, issuer, start_station, end_station, contract["date_issued"], contract["date_expired"], contract["num_days"], "{:0,.2f}".format(contract["reward"]), "{:0,.2f}".format(contract["collateral"]), "{:0,.2f}".format(contract["volume"]) ]) # Payment System jf_paid, jf_tax_total = jf_tax_calculator(session["CharacterOwnerHash"]) db_jf_reimbursement = g.mongo.db.preferences.find_one( {"_id": "jf_reimbursement"}) if db_jf_reimbursement: jf_reimbursement = db_jf_reimbursement["amount"] jf_percent_paid = int(min(jf_paid / jf_reimbursement * 100, 100)) jf_percent_owed = max( int(min(jf_tax_total / jf_reimbursement * 100, 100)) - jf_percent_paid, 0) jf_paid = "{:,.02f}".format(jf_paid) jf_tax_total = "{:,.02f}".format(jf_tax_total) jf_reimbursement = "{:,.02f}".format(jf_reimbursement) else: jf_reimbursement = "0.00" jf_percent_paid = 0 jf_percent_owed = 0 jf_paid = "0.00" jf_tax_total = "0.00" return render_template( "jf_pilot.html", contract_list=contract_list, optimized_run=optimized_run, reserved_contracts=reserved_contracts, all_history=all_history, optimized_reward=optimized_reward, optimized_collateral=optimized_collateral, optimized_volume=optimized_volume, optimized_return=optimized_return, reserved_reward=reserved_reward, reserved_collateral=reserved_collateral, reserved_volume=reserved_volume, reserved_return=reserved_return, personal_history=personal_history, jf_percent=[jf_percent_paid, jf_percent_owed], jf_reimbursement=jf_reimbursement, jf_taxes=[jf_paid, jf_tax_total], route_start_set=list(route_start_set), capacity=capacity, route_end_set=list(route_end_set), optimize_start_list=[int(x) for x in optimize_start_list], optimize_end_list=[int(y) for y in optimize_end_list])