def create_game_level(number, buyout): ''' Creates a GameLevel object ''' if GameLevel.by_number(number) is not None: logging.info("Game level #%s already exists, skipping" % number) return GameLevel.by_number(number) logging.info("Create Game Level #%s with a buyout of $%s" % ( number, buyout )) new_level = GameLevel( number=abs(int(number)), buyout=abs(int(buyout)), ) game_levels = GameLevel.all() game_levels.append(new_level) logging.debug("Updating game level linked list ...") game_levels = sorted(game_levels) index = 0 for level in game_levels[:-1]: level.next_level_id = game_levels[index + 1].id dbsession.add(level) index += 1 game_levels[0].number = 0 dbsession.add(game_levels[0]) game_levels[-1].next_level_id = None dbsession.add(game_levels[-1]) dbsession.flush() return new_level
def create_game_level(self): ''' Creates a game level ''' form = Form( level_number="Please enter a level number", buyout="Please enter a buyout value", ) if form.validate(self.request.arguments): try: game_level = int(self.get_argument('level_number')) buyout = int(self.get_argument('buyout')) if game_level <= 0: self.render('admin/create/game_level.html', errors=["Level number must be greater than 0"] ) elif GameLevel.by_number(game_level) is not None: self.render('admin/create/game_level.html', errors=["Game level number must be unique"] ) elif buyout < 0: self.render('admin/create/game_level.html', errors=["Invalid buyout value"] ) else: self.__mklevel__(game_level, buyout) self.redirect('/admin/view/game_levels') except ValueError: self.render('admin/create/game_level.html', errors=["Invalid level number"] ) else: self.render('admin/create/game_level.html', errors=form.errors)
def create_box(self): ''' Create a box object ''' form = Form( box_name="Enter a box name", description="Enter a description", difficulty="Select a difficulty", corporation_uuid="Please select a corporation", game_level="Please select a game level", ) if form.validate(self.request.arguments): try: game_level = int(self.get_argument('game_level')) corp_uuid = self.get_argument('corporation_uuid') if Box.by_name(self.get_argument('box_name')) is not None: self.render("admin/create/box.html", errors=["Box name already exists"] ) elif Corporation.by_uuid(corp_uuid) is None: self.render("admin/create/box.html", errors=["Corporation does not exist"] ) elif GameLevel.by_number(game_level) is None: self.render("admin/create/box.html", errors=["Game level does not exist"] ) else: self.__mkbox__() self.redirect('/admin/view/game_objects') except ValueError: self.render('admin/view/create.html', errors=["Invalid level number"] ) else: self.render("admin/create/box.html", errors=form.errors)
def create_box(self): ''' Create a box object ''' form = Form( box_name="Enter a box name", description="Enter a description", difficulty="Select a difficulty", corporation_uuid="Please select a corporation", game_level="Please select a game level", ) if form.validate(self.request.arguments): try: game_level = int(self.get_argument('game_level')) corp_uuid = self.get_argument('corporation_uuid') if Box.by_name(self.get_argument('box_name')) is not None: self.render("admin/create/box.html", errors=["Box name already exists"]) elif Corporation.by_uuid(corp_uuid) is None: self.render("admin/create/box.html", errors=["Corporation does not exist"]) elif GameLevel.by_number(game_level) is None: self.render("admin/create/box.html", errors=["Game level does not exist"]) else: self.__mkbox__() self.redirect('/admin/view/game_objects') except ValueError: self.render('admin/view/create.html', errors=["Invalid level number"]) else: self.render("admin/create/box.html", errors=form.errors)
def create_game_level(self): ''' Creates a game level ''' form = Form( level_number="Please enter a level number", buyout="Please enter a buyout value", ) if form.validate(self.request.arguments): try: game_level = int(self.get_argument('level_number')) buyout = int(self.get_argument('buyout')) if game_level <= 0: self.render('admin/create/game_level.html', errors=["Level number must be greater than 0"]) elif GameLevel.by_number(game_level) is not None: self.render('admin/create/game_level.html', errors=["Game level number must be unique"]) elif buyout < 0: self.render('admin/create/game_level.html', errors=["Invalid buyout value"]) else: self.__mklevel__(game_level, buyout) self.redirect('/admin/view/game_levels') except ValueError: self.render('admin/create/game_level.html', errors=["Invalid level number"]) else: self.render('admin/create/game_level.html', errors=form.errors)
def edit_game_level(self): ''' Update game level objects ''' form = Form( uuid="Select an object", number="Enter a level number", buyout="Enter a buyout value", ) if form.validate(self.request.arguments): errors = [] level = GameLevel.by_uuid(self.get_argument('uuid')) try: new_number = int(self.get_argument('number', 'NaN')) new_buyout = int(self.get_argument('buyout', 'NaN')) if level.number != new_number and GameLevel.by_number( new_number) is None: level.number = new_number dbsession.add(level) dbsession.flush() # Fix the linked-list game_levels = sorted(GameLevel.all()) index = 0 for game_level in game_levels[:-1]: game_level.next_level_id = game_levels[index + 1].id dbsession.add(game_level) index += 1 game_levels[0].number = 0 dbsession.add(game_levels[0]) game_levels[-1].next_level_id = None dbsession.add(game_levels[-1]) dbsession.flush() if GameLevel.by_number(new_number) is not None: errors.append("GameLevel number is not unique") if level.buyout != new_buyout: level.buyout = new_buyout dbsession.add(level) dbsession.flush() except ValueError: errors.append( "That was not a number ... maybe you should go back to school" ) self.render("admin/view/game_levels.html", errors=errors) else: self.render("admin/view/game_levels.html", errors=form.errors)
def edit_game_level(self): ''' Update game level objects ''' form = Form( uuid="Select an object", number="Enter a level number", buyout="Enter a buyout value", ) if form.validate(self.request.arguments): errors = [] level = GameLevel.by_uuid(self.get_argument('uuid')) try: new_number = int(self.get_argument('number', 'NaN')) new_buyout = int(self.get_argument('buyout', 'NaN')) if level.number != new_number and GameLevel.by_number(new_number) is None: level.number = new_number dbsession.add(level) dbsession.flush() # Fix the linked-list game_levels = sorted(GameLevel.all()) index = 0 for game_level in game_levels[:-1]: game_level.next_level_id = game_levels[index + 1].id dbsession.add(game_level) index += 1 game_levels[0].number = 0 dbsession.add(game_levels[0]) game_levels[-1].next_level_id = None dbsession.add(game_levels[-1]) dbsession.flush() if GameLevel.by_number(new_number) is not None: errors.append("GameLevel number is not unique") if level.buyout != new_buyout: level.buyout = new_buyout dbsession.add(level) dbsession.flush() except ValueError: errors.append( "That was not a number ... maybe you should go back to school" ) self.render("admin/view/game_levels.html", errors=errors) else: self.render("admin/view/game_levels.html", errors=form.errors)
def __mkbox__(self): ''' Creates a box in the database ''' corp = Corporation.by_uuid(self.get_argument('corporation_uuid')) level = GameLevel.by_number(int(self.get_argument('game_level'))) box = Box( name=unicode(self.get_argument('box_name')), description=unicode(self.get_argument('description')), difficulty=unicode(self.get_argument('difficulty')), corporation_id=corp.id, game_level_id=level.id, ) dbsession.add(box) dbsession.flush()
def create_box(name, corporation, difficulty, game_level, description, ipv4_addresses=[], ipv6_addresses=[], avatar=None): if Box.by_name(name) is not None: logging.info("Box with name '%s' already exists, skipping" % (name)) return Box.by_name(name) logging.info("Create Box: %s" % name) if isinstance(game_level, int): game_level = GameLevel.by_number(game_level) box = Box( name=unicode(name[:16]), corporation_id=corporation.id, difficulty=unicode(difficulty[:16]), game_level_id=game_level.id, _description=unicode(description[:1024]), ) dbsession.add(box) dbsession.flush() if avatar is not None and os.path.exists(avatar): set_avatar(box, avatar) for ip_address in ipv4_addresses: __mkipv4__(box, ip_address) for ip_address in ipv6_addresses: __mkipv6__(box, ip_address) return box