Beispiel #1
0
    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;
Beispiel #3
0
    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;