def failed_capture(self, flag, submission): user = self.get_current_user() if submission is not None and flag not in user.team.flags: if flag.is_file: submission = Flag.digest(submission) Penalty.create_attempt(team=user.team, flag=flag, submission=submission) if not self.config.penalize_flag_value: return False attempts = Penalty.by_count(flag, user.team) if attempts < self.config.flag_start_penalty: return False if attempts >= self.config.flag_stop_penalty: return False penalty = int( flag.dynamic_value(user.team) * self.config.flag_penalty_cost * 0.01) logging.info("%s (%s) capture failed '%s' - lost %s" % (user.handle, user.team.name, flag.name, penalty)) user.team.money -= penalty user.money -= penalty self.dbsession.add(user.team) self.dbsession.flush() self.event_manager.flag_penalty(user, flag) self.dbsession.commit() # Fire capture failed webhook send_capture_failed_webhook(user, flag) return penalty return False
def failed_capture(self, flag, submission): user = self.get_current_user() if submission is not None and flag not in user.team.flags: if flag.is_file: submission = Flag.digest(submission) Penalty.create_attempt( team=user.team, flag=flag, submission=submission, ) if not self.config.penalize_flag_value: return False attempts = Penalty.by_count(flag, user.team) if attempts < self.config.flag_start_penalty: return False if attempts >= self.config.flag_stop_penalty: return False penalty = int(flag.value * self.config.flag_penalty_cost * .01) logging.info("%s (%s) capture failed '%s' - lost %s" % ( user.handle, user.team.name, flag.name, penalty )) user.team.money -= penalty user.money -= penalty self.dbsession.add(user.team) self.dbsession.flush() self.event_manager.flag_penalty(user, flag) self.dbsession.commit() return penalty return False