Example #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
Example #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)
Example #3
0
 def buyout(self):
     ''' Buyout and unlock a level '''
     form = Form(uuid="Level parameter missing")
     user = self.get_current_user()
     if form.validate(self.request.arguments):
         level = GameLevel.by_uuid(self.get_argument('uuid', ''))
         if level is not None and user is not None:
             if level.buyout < user.team.money:
                 logging.info("%s (%s) payed buyout for level #%d" % (
                     user.handle, user.team.name, level.number
                 ))
                 user.team.game_levels.append(level)
                 user.team.money -= level.buyout
                 dbsession.add(user.team)
                 event = self.event_manager.create_unlocked_level_event(user, level)
                 self.new_events.append(event)
                 self.redirect("/user/missions")
             else:
                 self.render("missions/view.html",
                     team=user.team,
                     errors=[
                         "You do not have enough money to unlock this level"
                     ]
                 )
         else:
             self.render("missions/view.html",
                 team=user.team,
                 errors=["Level does not exist"]
             )
     else:
         self.render("missions/view.html",
             team=user.team,
             errors=form.errors
         )
Example #4
0
 def buyout(self):
     ''' Buyout and unlock a level '''
     form = Form(uuid="Level parameter missing")
     user = self.get_current_user()
     if form.validate(self.request.arguments):
         level = GameLevel.by_uuid(self.get_argument('uuid', ''))
         if level is not None and user is not None:
             if level.buyout < user.team.money:
                 user.team.game_levels.append(level)
                 user.team.money -= level.buyout
                 dbsession.add(user.team)
                 self.event_manager.unlocked_level(user, level)
                 self.redirect("/user/missions")
             else:
                 self.render("missions/view.html",
                     team=user.team,
                     errors=[
                         "You do not have enough money to unlock this level"
                     ]
                 )
         else:
             self.render("missions/view.html",
                 team=user.team,
                 errors=["Level does not exist"]
             )
     else:
         self.render("missions/view.html",
             team=user.team,
             errors=form.errors
         )
Example #5
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)
Example #6
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)
Example #7
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)
Example #8
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)
Example #9
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)
Example #10
0
def create_team(name, motto):
    print(INFO + "Create team: " + bold + name + W)
    team = Team(
        name=unicode(name),
        motto=unicode(motto),
    )
    level_0 = GameLevel.all()[0]
    team.game_levels.append(level_0)
    dbsession.add(team)
    dbsession.flush()
    return team
Example #11
0
def create_team(name, motto):
    print(INFO + "Create team: " + bold + name + W)
    team = Team(
        name=unicode(name),
        motto=unicode(motto),
    )
    level_0 = GameLevel.all()[0]
    team.game_levels.append(level_0)
    dbsession.add(team)
    dbsession.flush()
    return team
Example #12
0
 def create_team(self):
     ''' Create a new team '''
     assert self.config.public_teams
     team = Team(
         name=unicode(self.get_argument('team_name')[:15]),
         motto=unicode(self.get_argument('motto')[:64]),
     )
     level_0 = GameLevel.all()[0]
     team.game_levels.append(level_0)
     dbsession.add(team)
     dbsession.flush()
     return team
Example #13
0
def create_game_level(level_number, buyout):
    print(INFO + "Create game level " + bold + "#" + str(level_number) + W + \
        " with a buyout of " + bold + "$" + str(buyout) + W)
    new_level = GameLevel(
        number=level_number,
        buyout=buyout,
    )
    game_levels = GameLevel.all()
    game_levels.append(new_level)
    print(INFO + "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
Example #14
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()
Example #15
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()
Example #16
0
def create_team(name, motto):
    if Team.by_name(name) is not None:
        logging.info("Team with name '%s' already exists, skipping" % (name))
        return Team.by_name(name)
    logging.info("Create Team: %s" % name)
    team = Team(
        name=unicode(name[:16]),
        motto=unicode(motto[:32]),
    )
    level_0 = GameLevel.all()[0]
    team.game_levels.append(level_0)
    dbsession.add(team)
    dbsession.flush()
    return team
Example #17
0
 def __mklevel__(self, game_level, buyout):
     '''
     Creates a new level in the database, the levels are basically a
     linked-list where each level points to the next, and the last points to
     None.  This function creates a new level and sorts everything based on
     the 'number' attrib
     '''
     new_level = GameLevel(
         number=game_level,
         buyout=buyout,
     )
     game_levels = GameLevel.all()
     game_levels.append(new_level)
     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()
Example #18
0
 def create_team(self):
     ''' Create a new team in the database '''
     form = Form(team_name="Enter a team name", motto="Enter a team motto")
     if form.validate(self.request.arguments):
         team = Team(
             name=unicode(self.get_argument('team_name')),
             motto=unicode(self.get_argument('motto')),
         )
         level_0 = GameLevel.all()[0]
         team.game_levels.append(level_0)
         dbsession.add(team)
         dbsession.flush()
         self.redirect('/admin/view/user_objects')
     else:
         self.render("admin/create/team.html", errors=form.errors)
Example #19
0
 def create_team(self):
     ''' Create a new team in the database '''
     form = Form(team_name="Enter a team name", motto="Enter a team motto")
     if form.validate(self.request.arguments):
         team = Team(
             name=unicode(self.get_argument('team_name')),
             motto=unicode(self.get_argument('motto')),
         )
         level_0 = GameLevel.all()[0]
         team.game_levels.append(level_0)
         dbsession.add(team)
         dbsession.flush()
         self.redirect('/admin/view/user_objects')
     else:
         self.render("admin/create/team.html", errors=form.errors)
Example #20
0
 def __chklevel__(self):
     user = self.get_current_user()
     level = user.team.game_levels[-1]
     logging.info("%s completed %d of %d flags on level %d." % (
             user.team.name, len(user.team.level_flags(level.number)), 
             len(level.flags), level.number,
         )
     )
     if len(user.team.level_flags(level.number)) == len(level.flags):
         logging.info("%s has completed level #%d" % (user.team.name, level.number,))
         if level.next_level_id is not None:
             next_level = GameLevel.by_id(level.next_level_id)
             user.team.game_levels.append(next_level)
             dbsession.add(user.team)
             dbsession.flush()
             self.event_manager.unlocked_level(user, level)
Example #21
0
 def box_level(self):
     ''' Changes a boxs level '''
     form = Form(box_uuid="No box selected", level_uuid="No level selected")
     if form.validate(self.request.arguments):
         errors = []
         box = Box.by_uuid(self.get_argument('box_uuid'))
         level = GameLevel.by_uuid(self.get_argument('level_uuid'))
         if box is not None and level is not None:
             box.game_level_id = level.id
             dbsession.add(box)
             dbsession.flush()
         elif box is None:
             errors.append("Box does not exist")
         elif level is None:
             errors.append("GameLevel does not exist")
         self.render("admin/view/game_levels.html", errors=errors)
     else:
         self.render("admin/view/game_levels.html", errors=form.errors)
Example #22
0
 def box_level(self):
     ''' Changes a boxs level '''
     form = Form(box_uuid="No box selected", level_uuid="No level selected")
     if form.validate(self.request.arguments):
         errors = []
         box = Box.by_uuid(self.get_argument('box_uuid'))
         level = GameLevel.by_uuid(self.get_argument('level_uuid'))
         if box is not None and level is not None:
             box.game_level_id = level.id
             dbsession.add(box)
             dbsession.flush()
         elif box is None:
             errors.append("Box does not exist")
         elif level is None:
             errors.append("GameLevel does not exist")
         self.render("admin/view/game_levels.html", errors=errors)
     else:
         self.render("admin/view/game_levels.html", errors=form.errors)
Example #23
0
def create_game_level(level_number, buyout):
    print(INFO + "Create game level " + bold + "#" + str(level_number) + W + \
        " with a buyout of " + bold + "$" + str(buyout) + W)
    new_level = GameLevel(
        number=level_number,
        buyout=buyout,
    )
    game_levels = GameLevel.all()
    game_levels.append(new_level)
    print(INFO + "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
Example #24
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
Example #25
0
 def __mklevel__(self, game_level, buyout):
     '''
     Creates a new level in the database, the levels are basically a
     linked-list where each level points to the next, and the last points to
     None.  This function creates a new level and sorts everything based on
     the 'number' attrib
     '''
     new_level = GameLevel(
         number=game_level,
         buyout=buyout,
     )
     game_levels = GameLevel.all()
     game_levels.append(new_level)
     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()
Example #26
0
)
dbsession.add(item)
dbsession.flush()

item = MarketItem(
    name=u"SWAT",
    price=100000,
    description=
    u"Gain access to the internal police computer system, allowing you to insert fraudlent arrest warrents for other players.",
)
dbsession.add(item)
dbsession.flush()

# Game Levels
game_level = GameLevel(
    number=0,
    buyout=0,
)
dbsession.add(game_level)
dbsession.flush()

# Admin User Account
user = User(
    account=u'admin',
    handle=u'God',
    algorithm=u'scrypt',
)
dbsession.add(user)
dbsession.flush()
user.password = password
dbsession.add(user)
dbsession.flush()