def CreateTank(self, tank, current=None): self.refresh_action() #self.validate_tank_attributes(tank); # Extract attributes. name = tank.name weapon_id = tank.weaponID speed_factor = tank.speedFactor armor_factor = tank.armorFactor lcolor = to_long(tank.color) model = tank.model skin = tank.skin # Validate the tank's name. self.validate_tank_name(name) # Insert the tank. changed = self.database.do_insert(Procedures.new_tank(), name, self.name, speed_factor, armor_factor, lcolor, weapon_id, model, skin) if not changed: # Nothing was changed: database error. Log.log_print(Utils.filename_today(), "players", "User %s couldn't insert tank: DB error: %s -- " \ "data: name=%s weapon_id=%i color=%s" % (self, self.database.get_last_error(), name, weapon_id, str(lcolor))) raise VTankException( "Internal database error. Please try again later.") # Now attempt to create the statistics table for this tank. changed = self.database.do_insert(Procedures.new_statistics(), name) if not changed: # Nothing was changed: database error. Log.log_print(Utils.filename_today(), "players", "User %s couldn't insert statistics: DB error: %s -- " \ "data: name=%s weapon_id=%i color=%s" % (self, self.database.get_last_error(), name, weapon_id, str(lcolor))) raise VTankException( "Internal database error. Please try again later.") self.refresh_tank_list() self.report("%s created a new tank (%s)." % (self.name, name)) return True
def CreateTank(self, tank, current=None): self.refresh_action(); #self.validate_tank_attributes(tank); # Extract attributes. name = tank.name; weapon_id = tank.weaponID; speed_factor = tank.speedFactor; armor_factor = tank.armorFactor; lcolor = to_long(tank.color); model = tank.model; skin = tank.skin; # Validate the tank's name. self.validate_tank_name(name); # Insert the tank. changed = self.database.do_insert(Procedures.new_tank(), name, self.name, speed_factor, armor_factor, lcolor, weapon_id, model, skin); if not changed: # Nothing was changed: database error. Log.log_print(Utils.filename_today(), "players", "User %s couldn't insert tank: DB error: %s -- " \ "data: name=%s weapon_id=%i color=%s" % (self, self.database.get_last_error(), name, weapon_id, str(lcolor))); raise VTankException("Internal database error. Please try again later."); # Now attempt to create the statistics table for this tank. changed = self.database.do_insert(Procedures.new_statistics(), name); if not changed: # Nothing was changed: database error. Log.log_print(Utils.filename_today(), "players", "User %s couldn't insert statistics: DB error: %s -- " \ "data: name=%s weapon_id=%i color=%s" % (self, self.database.get_last_error(), name, weapon_id, str(lcolor))); raise VTankException("Internal database error. Please try again later."); self.refresh_tank_list(); self.report("%s created a new tank (%s)." % (self.name, name)); return True;
def UpdateTank(self, oldTankName, newTank, current=None): self.refresh_action() # Must check if the tank exists, and if it belongs to this account. results = self.database.do_query( Procedures.tank_exists_under_account(), oldTankName, self.name) if len(results) != 1: # Tank does not exist. Log.log_print( Utils.filename_today(), "players", "User %s tried to update a tank that doesn't exist or belong to him: %s" % (self.name, oldTankName)) raise BadInformationException("That tank does not exist.") self.validate_tank_name(newTank.name, False) #self.validate_tank_attributes(newTank); # Extract attributes. weapon_id = newTank.weaponID speed_factor = newTank.speedFactor armor_factor = newTank.armorFactor lcolor = to_long(newTank.color) model = newTank.model skin = newTank.skin changed = self.database.do_insert(Procedures.update_tank(), speed_factor, armor_factor, lcolor, weapon_id, model, skin, oldTankName) if not changed: # Nothing was changed: database error. Log.log_print(Utils.filename_today(), "players", "User %s couldn't update tank: DB error: %s -- " \ "data: oldname=%s name=%s weapon_id=%i armor_id=%i color=%s" % (self, self.database.get_last_error(), oldTankName, newTank.name, weapon_id, armor_factor, str(lcolor))) #raise VTankException("Internal database error. Please try again later."); return False self.refresh_tank_list() return True
def UpdateTank(self, oldTankName, newTank, current=None): self.refresh_action(); # Must check if the tank exists, and if it belongs to this account. results = self.database.do_query(Procedures.tank_exists_under_account(), oldTankName, self.name); if len(results) != 1: # Tank does not exist. Log.log_print(Utils.filename_today(), "players", "User %s tried to update a tank that doesn't exist or belong to him: %s" % ( self.name, oldTankName)); raise BadInformationException("That tank does not exist."); self.validate_tank_name(newTank.name, False); #self.validate_tank_attributes(newTank); # Extract attributes. weapon_id = newTank.weaponID; speed_factor = newTank.speedFactor; armor_factor = newTank.armorFactor; lcolor = to_long(newTank.color); model = newTank.model; skin = newTank.skin; changed = self.database.do_insert(Procedures.update_tank(), speed_factor, armor_factor, lcolor, weapon_id, model, skin, oldTankName); if not changed: # Nothing was changed: database error. Log.log_print(Utils.filename_today(), "players", "User %s couldn't update tank: DB error: %s -- " \ "data: oldname=%s name=%s weapon_id=%i armor_id=%i color=%s" % (self, self.database.get_last_error(), oldTankName, newTank.name, weapon_id, armor_factor, str(lcolor))); #raise VTankException("Internal database error. Please try again later."); return False; self.refresh_tank_list(); return True;