Пример #1
0
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
Пример #2
0
 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)
Пример #3
0
 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)
Пример #4
0
 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)
Пример #5
0
 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)
Пример #6
0
 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)
Пример #7
0
 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)
Пример #8
0
 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()
Пример #9
0
 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()
Пример #10
0
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