def create_flag(name, token, value, box, description="No description", is_file=False): if Flag.by_name(name) is not None: logging.info("Flag with name '%s' already exists, skipping" % (name)) return Flag.by_name(name) if Flag.by_token(token) is not None: logging.info("Flag with token '%s' already exists, skipping" % (token)) return Flag.by_token(token) if is_file and os.path.exists(token): with open(token) as favatar: _token = Flag.digest(favatar.read()) elif is_file and 40 == len(token): _token = unicode(token) # Just assume it's a SHA1 elif is_file: raise ValueError("Flag token file does not exist, and is not a hash.") else: _token = unicode(token[:256]) logging.info("Create Flag: %s" % name) flag = Flag( name=unicode(name[:32]), token=_token, is_file=is_file, description=unicode(description[:256]), value=abs(int(value)), box_id=box.id, ) dbsession.add(flag) dbsession.flush() return flag
def create_flag(self): ''' Create a flag ''' form = Form( box_uuid="Please select a box", flag_name="Please enter a name", token="Please enter a token value", reward="Please enter a reward value", is_file="Please select a file setting", description="Please enter a flag description", ) if form.validate(self.request.arguments): try: if Flag.by_name(self.get_argument('flag_name')) is not None: self.render('admin/create/flag.html', errors=["Name already exists"] ) elif Flag.by_token(self.get_argument('token')) is not None: self.render('admin/create/flag.html', errors=["Token value is not unique"] ) elif Box.by_uuid(self.get_argument('box_uuid')) is None: self.render('admin/create/flag.html', errors=["Box does not exist"] ) else: reward = int(self.get_argument('reward', 'NaN')) self.__mkflag__(reward) self.redirect('/admin/view/game_objects') except ValueError: self.render('admin/create/flag.html', errors=["Invalid reward value"] ) else: self.render("admin/create/flag.html", errors=form.errors)
def create_flag(self): ''' Create a flag ''' form = Form( box_uuid="Please select a box", flag_name="Please enter a name", token="Please enter a token value", reward="Please enter a reward value", is_file="Please select a file setting", description="Please enter a flag description", ) if form.validate(self.request.arguments): try: if Flag.by_name(self.get_argument('flag_name')) is not None: self.render('admin/create/flag.html', errors=["Name already exists"]) elif Flag.by_token(self.get_argument('token')) is not None: self.render('admin/create/flag.html', errors=["Token value is not unique"]) elif Box.by_uuid(self.get_argument('box_uuid')) is None: self.render('admin/create/flag.html', errors=["Box does not exist"]) else: reward = int(self.get_argument('reward', 'NaN')) self.__mkflag__(reward) self.redirect('/admin/view/game_objects') except ValueError: self.render('admin/create/flag.html', errors=["Invalid reward value"]) else: self.render("admin/create/flag.html", errors=form.errors)
def edit_flags(self): ''' Super ugly code, yes - Edit existing flags in the database ''' form = Form( uuid="Object not selected", name="Please enter a name", token="Please enter a toke value", description="Please provide a description", value="Please enter a reward value", box_uuid="Please select a box", ) if form.validate(self.request.arguments): flag = Flag.by_uuid(self.get_argument('uuid')) if flag is not None: errors = [] if flag.name != self.get_argument('name'): if Flag.by_name(unicode(self.get_argument('name'))) is None: logging.info("Updated flag name %s -> %s" % (flag.name, self.get_argument('name'),) ) flag.name = unicode(self.get_argument('name')) else: errors.append("Flag name already exists") if flag.token != self.get_argument('token'): if Flag.by_token(unicode(self.get_argument('token'))) is None: logging.info("Updated %s's token %s -> %s" % (flag.name, flag.token, self.get_argument('token'),) ) flag.token = unicode(self.get_argument('token')) else: errors.append("Token is not unique") if flag.description != self.get_argument('description'): logging.info("Updated %s's description %s -> %s" % (flag.name, flag.description, self.get_argument('description'),) ) flag.description = unicode(self.get_argument('description')) try: reward_value = int(self.get_argument('value')) if reward_value != flag.value: logging.info("Updated %s's value %d -> %d" % (flag.name, flag.value, reward_value,) ) flag.value = reward_value except ValueError: errors.append("Invalid reward amount") box = Box.by_uuid(self.get_argument('box_uuid')) if box is not None and box.id != flag.box_id: logging.info("Updated %s's box %d -> %d" % (flag.name, flag.box_id, box.id) ) flag.box_id = box.id elif box is None: errors.append("Box does not exist") dbsession.add(flag) dbsession.flush() self.render("admin/view/game_objects.html", errors=errors) else: self.render("admin/view/game_objects.html", errors=["Flag does not exist"] ) else: self.render("admin/view/game_objects.html", errors=form.errors)
def edit_flags(self): ''' Super ugly code, yes - Edit existing flags in the database ''' form = Form( uuid="Object not selected", name="Please enter a name", token="Please enter a toke value", description="Please provide a description", value="Please enter a reward value", box_uuid="Please select a box", ) if form.validate(self.request.arguments): flag = Flag.by_uuid(self.get_argument('uuid')) if flag is not None: errors = [] if flag.name != self.get_argument('name'): if Flag.by_name(unicode( self.get_argument('name'))) is None: logging.info("Updated flag name %s -> %s" % ( flag.name, self.get_argument('name'), )) flag.name = unicode(self.get_argument('name')) else: errors.append("Flag name already exists") if flag.token != self.get_argument('token'): if Flag.by_token(unicode( self.get_argument('token'))) is None: logging.info("Updated %s's token %s -> %s" % ( flag.name, flag.token, self.get_argument('token'), )) flag.token = unicode(self.get_argument('token')) else: errors.append("Token is not unique") if flag.description != self.get_argument('description'): logging.info("Updated %s's description %s -> %s" % ( flag.name, flag.description, self.get_argument('description'), )) flag.description = unicode( self.get_argument('description')) try: reward_value = int(self.get_argument('value')) if reward_value != flag.value: logging.info("Updated %s's value %d -> %d" % ( flag.name, flag.value, reward_value, )) flag.value = reward_value except ValueError: errors.append("Invalid reward amount") box = Box.by_uuid(self.get_argument('box_uuid')) if box is not None and box.id != flag.box_id: logging.info("Updated %s's box %d -> %d" % (flag.name, flag.box_id, box.id)) flag.box_id = box.id elif box is None: errors.append("Box does not exist") dbsession.add(flag) dbsession.flush() self.render("admin/view/game_objects.html", errors=errors) else: self.render("admin/view/game_objects.html", errors=["Flag does not exist"]) else: self.render("admin/view/game_objects.html", errors=form.errors)