Пример #1
0
 def buyout(self):
     ''' Buyout and unlock a level '''
     user = self.get_current_user()
     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
             self.dbsession.add(user.team)
             self.dbsession.commit()
             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"]
         )
 def buyout(self):
     ''' Buyout and unlock a level '''
     user = self.get_current_user()
     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
             self.dbsession.add(user.team)
             self.dbsession.commit()
             self.event_manager.level_unlocked(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"])
Пример #3
0
 def edit_game_level(self):
     ''' Update game level objects '''
     errors = []
     level = GameLevel.by_uuid(self.get_argument('uuid'))
     try:
         new_number = int(self.get_argument('number', ''))
         new_buyout = int(self.get_argument('buyout', ''))
         if level.number != new_number and GameLevel.by_number(new_number) is None:
             level.number = new_number
             self.dbsession.add(level)
             # 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
                 self.dbsession.add(game_level)
                 index += 1
             game_levels[0].number = 0
             self.dbsession.add(game_levels[0])
             game_levels[-1].next_level_id = None
             self.dbsession.add(game_levels[-1])
         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
             self.dbsession.add(level)
         self.dbsession.commit()
     except ValueError:
         errors.append("That was not a number ...")
     self.render("admin/view/game_levels.html", errors=errors)
Пример #4
0
 def edit_game_level(self):
     ''' Update game level objects '''
     try:
         level = GameLevel.by_uuid(self.get_argument('uuid', ''))
         if level is None:
             raise ValidationError("Game level does not exist")
         if int(self.get_argument('number', level.number)) != level.number:
             level.number = self.get_argument('number')
         level.buyout = self.get_argument('buyout', '1')
         self.dbsession.add(level)
         self.dbsession.flush()
         # Fix the linked-list
         game_levels = sorted(GameLevel.all())
         for index, game_level in enumerate(game_levels[:-1]):
             game_level.next_level_id = game_levels[index + 1].id
             self.dbsession.add(game_level)
         if game_levels[0].number != 0:
             game_levels[0].number = 0
         self.dbsession.add(game_levels[0])
         game_levels[-1].next_level_id = None
         self.dbsession.add(game_levels[-1])
         self.dbsession.add(level)
         self.dbsession.commit()
         self.redirect('/admin/view/game_levels')
     except ValueError:
         raise ValidationError("That was not a number ...")
     except ValidationError as error:
         self.render("admin/view/game_levels.html", errors=[
             str(error),
         ])
Пример #5
0
 def edit_game_level(self):
     ''' Update game level objects '''
     try:
         level = GameLevel.by_uuid(self.get_argument('uuid', ''))
         if level is None:
             raise ValidationError("Game level does not exist")
         if int(self.get_argument('number', level.number)) != level.number:
             level.number = self.get_argument('number')
         level.buyout = self.get_argument('buyout', '1')
         self.dbsession.add(level)
         self.dbsession.flush()
         # Fix the linked-list
         game_levels = sorted(GameLevel.all())
         for index, game_level in enumerate(game_levels[:-1]):
             game_level.next_level_id = game_levels[index + 1].id
             self.dbsession.add(game_level)
         if game_levels[0].number != 0:
             game_levels[0].number = 0
         self.dbsession.add(game_levels[0])
         game_levels[-1].next_level_id = None
         self.dbsession.add(game_levels[-1])
         self.dbsession.add(level)
         self.dbsession.commit()
         self.redirect('/admin/view/game_levels')
     except ValueError:
         raise ValidationError("That was not a number ...")
     except ValidationError as error:
         self.render("admin/view/game_levels.html", errors=[str(error), ])
Пример #6
0
 def box_level(self):
     """ Changes a boxs level """
     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
         self.dbsession.add(box)
         self.dbsession.commit()
     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)
Пример #7
0
 def box_level(self):
     ''' Changes a boxs level '''
     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
         self.dbsession.add(box)
         self.dbsession.commit()
     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)
Пример #8
0
 def del_game_level(self):
     ''' Deletes a game level, and fixes the linked list '''
     game_level = GameLevel.by_uuid(self.get_argument('uuid', ''))
     if game_level is not None:
         game_levels = sorted(GameLevel.all())
         game_levels.remove(game_level)
         for index, level in enumerate(game_levels[:-1]):
             level.next_level_id = game_levels[index + 1].id
             self.dbsession.add(level)
         if game_levels[0].number != 0:
             game_levels[0].number = 0
         self.dbsession.add(game_levels[0])
         game_levels[-1].next_level_id = None
         self.dbsession.add(game_levels[-1])
         self.dbsession.delete(game_level)
         self.dbsession.commit()
         self.redirect('/admin/view/game_levels')
     else:
         self.render('admin/view/game_levels.html',
                     errors=["Game level does not exist in database."])
 def del_game_level(self):
     ''' Deletes a game level, and fixes the linked list '''
     game_level = GameLevel.by_uuid(self.get_argument('uuid', ''))
     if game_level is not None:
         game_levels = sorted(GameLevel.all())
         game_levels.remove(game_level)
         for index, level in enumerate(game_levels[:-1]):
             level.next_level_id = game_levels[index + 1].id
             self.dbsession.add(level)
         if game_levels[0].number != 0:
             game_levels[0].number = 0
         self.dbsession.add(game_levels[0])
         game_levels[-1].next_level_id = None
         self.dbsession.add(game_levels[-1])
         self.dbsession.delete(game_level)
         self.dbsession.commit()
         self.redirect('/admin/view/game_levels')
     else:
         self.render('admin/view/game_levels.html',
                     errors=["Game level does not exist in database."]
                     )
Пример #10
0
 def edit_game_level(self):
     """ Update game level objects """
     try:
         level = GameLevel.by_uuid(self.get_argument("uuid", ""))
         if level is None:
             raise ValidationError("Game level does not exist")
         if int(self.get_argument("number", level.number)) != level.number:
             level.number = self.get_argument("number", "")
         level.buyout = self.get_argument("buyout", 1)
         level._type = self.get_argument("type", "buyout")
         level._reward = self.get_argument("reward", 0)
         level.name = self.get_argument("name", None)
         level.description = self.get_argument("description", "")
         if level._type == "progress":
             level.buyout = min(level.buyout, 100)
         elif level._type == "none":
             level.buyout = 0
         if level._type != "none" and level.buyout == 0:
             level._type = "none"
         self.dbsession.add(level)
         self.dbsession.flush()
         # Fix the linked-list
         game_levels = sorted(GameLevel.all())
         for index, game_level in enumerate(game_levels[:-1]):
             game_level.next_level_id = game_levels[index + 1].id
             self.dbsession.add(game_level)
         if game_levels[0].number != 0:
             game_levels[0].number = 0
         self.dbsession.add(game_levels[0])
         game_levels[-1].next_level_id = None
         self.dbsession.add(game_levels[-1])
         self.dbsession.add(level)
         self.dbsession.commit()
         self.redirect("/admin/view/game_levels")
     except ValueError:
         raise ValidationError("That was not a number ...")
     except ValidationError as error:
         self.render("admin/view/game_levels.html", errors=[str(error)])
Пример #11
0
 def edit_level_access(self):
     """ Update game level access """
     try:
         level = GameLevel.by_uuid(self.get_argument("uuid", ""))
         if level is None:
             raise ValidationError("Game level does not exist")
         else:
             teams = []
             lv_teams = level.teams
             for team in lv_teams:
                 teams.append(team.uuid)
             access = self.request.arguments.get("accessList", [])
             available = self.request.arguments.get("availableList", [])
             if not isinstance(access, list):
                 access = [access]
             if not isinstance(available, list):
                 available = [available]
             for team_uuid in access:
                 if decode(team_uuid) not in teams:
                     team = Team.by_uuid(team_uuid)
                     if team:
                         team.game_levels.append(level)
                         self.dbsession.add(team)
                         self.dbsession.commit()
             for team_uuid in available:
                 if decode(team_uuid) in teams:
                     team = Team.by_uuid(team_uuid)
                     if team:
                         team.game_levels.remove(level)
                         self.dbsession.add(team)
                         self.dbsession.commit()
             self.redirect("/admin/view/game_levels")
     except ValueError:
         raise ValidationError("That was not a number ...")
     except ValidationError as error:
         self.render("admin/view/game_levels.html", errors=[str(error)])