def set_new_unit_data_into_db(data): new_unit_id = data["id"] new_unit_name = data['name'] new_nuit_description = data['description'] if "description" in data else None new_unit_expansion = data['expansion'] new_unit_age = data['age'] new_unit_created_in = data['created_in'] new_unit_cost = data['cost'] # ubit 43 reload_time constrain(not null) so I but any number to pass new_unit_build_time = data['build_time'] if "build_time" in data else 1 # ubit 53 reload_time constrain not null, so I but any number to pass new_unit_reload_time = data['reload_time'] if "reload_time" in data else 1.2 new_unit_attack_delay = data['attack_delay'] if "attack_delay" in data else None new_unit_movement_rate = data['movement_rate'] new_unit_line_of_sight = data['line_of_sight'] new_unit_hit_points = data['hit_points'] new_unit_range = data['range'] if "range" in data else None # ubit 53 attack constrain not null, so I but any number here to pass test new_unit_armor = data['armor'] new_unit_attack = data['attack'] if "attack" in data else 1 new_unit_armor = data['armor'] new_unit_search_radius = data['search_radius'] if "search_radius" in data else None new_unit_accuracy = data['accuracy'] if "accuracy" in data else None new_unit_blast_radius = data['blast_radius'] if "blast_radius" in data else None new_unit_attack_bonuses = data['attack_bonus'].copy() if "attack_bonus" in data else None new_unit_armor_bonuses = data['armor_bonus'].copy() if "armor_bonus" in data else None # see if the unit has attack/armor bounses attack_bonus = has_attack_bonus(new_unit_attack_bonuses) armor_bonus = has_armor_bonus(new_unit_armor_bonuses) try: # save unit data into unit table new_unit = Unit(id=new_unit_id, name=new_unit_name, description=new_nuit_description, expansion=new_unit_expansion, age=new_unit_age, created_in=new_unit_created_in, cost=new_unit_cost, build_time=new_unit_build_time, reload_time=new_unit_reload_time, attack_delay=new_unit_attack_delay, movement_rate=new_unit_movement_rate, line_of_sight=new_unit_line_of_sight, hit_points=new_unit_hit_points, unit_range=new_unit_range, attack=new_unit_attack, armor=new_unit_armor, search_radius=new_unit_search_radius, accuracy=new_unit_accuracy, blast_radius=new_unit_blast_radius) new_unit.insert() # in case unit has poth attack and armor bouns if ((attack_bonus is True) and (armor_bonus is True)): new_attack_bouns = AttackBouns(attackBouns=new_unit_attack_bonuses) new_armor_bouns = ArmorBouns(armorBouns=new_unit_armor_bonuses) new_unit.attack_bonuses = [new_attack_bouns] new_unit.armor_bonuses = [new_armor_bouns] new_attack_bouns.insert() new_armor_bouns.insert() # in case unit has only armor bouns elif((attack_bonus is False) and (armor_bonus is True)): new_armor_bouns = ArmorBouns(armorBouns=new_unit_armor_bonuses) new_unit.armor_bonuses = [new_armor_bouns] new_armor_bouns.insert() # in case unit has only attack bouns elif((attack_bonus is True) and (armor_bonus is False)): new_attack_bouns = AttackBouns(attackBouns=new_unit_attack_bonuses) new_unit.attack_bonuses = [new_attack_bouns] new_attack_bouns.insert() except (Exception, psycopg2.DatabaseError) as error: print('error during saving into database') print(error) return error finally: db.session.close()