示例#1
0
    def create_user(self):
        """ Add user to the database """
        self.form_validation()
        user = User()
        user.handle = self.get_argument("handle", "")
        user.password = self.get_argument("pass1", "")
        user.bank_password = self.get_argument("bpass", "")
        user.name = self.get_argument("playername", "")
        user.email = self.get_argument("email", "")
        user.theme = options.default_theme
        team = self.get_team()
        self.dbsession.add(user)
        self.dbsession.add(team)
        self.dbsession.commit()

        # Avatar
        avatar_select = self.get_argument("user_avatar_select", "")
        if avatar_select and len(avatar_select) > 0:
            user._avatar = avatar_select
        elif hasattr(self.request, "files") and "avatar" in self.request.files:
            user.avatar = self.request.files["avatar"][0]["body"]
        else:
            user._avatar = identicon(user.handle, 6)
        team.members.append(user)
        if not options.teams:
            if avatar_select and len(avatar_select) > 0:
                team._avatar = avatar_select
            elif hasattr(self.request, "files") and "avatar" in self.request.files:
                team.avatar = self.request.files["avatar"][0]["body"]
            else:
                team._avatar = identicon(user.handle, 6)
        self.dbsession.add(user)
        self.dbsession.add(team)
        self.dbsession.commit()
        if (
            options.require_email
            and options.validate_email
            and len(options.mail_host) > 0
        ):
            self.send_validate_message(user)
            user.locked = True
            self.dbsession.add(user)
            self.dbsession.commit()
        else:
            self.event_manager.user_joined_team(user)

        # Chat
        if self.chatsession:
            self.chatsession.create_user(user, self.get_argument("pass1", ""))

        return user
示例#2
0
 def create_team(self):
     """ Create a new team """
     if not self.config.teams:
         team = Team.by_name(self.get_argument("handle", ""))
         if team is None:
             team = Team()
             team.name = self.get_argument("handle", "")
         else:
             logging.info(
                 "Team %s already exists - Player Mode: reset team." % team.name
             )
             team.flags = []
             team.hints = []
             team.boxes = []
             team.items = []
             team.game_levels = []
             team.purchased_source_code = []
         team.motto = self.get_argument("motto", "")
         team._avatar = identicon(team.name, 6)
         if self.config.banking:
             team.money = self.config.starting_team_money
         else:
             team.money = 0
         levels = GameLevel.all()
         for level in levels:
             if level.type == "none":
                 team.game_levels.append(level)
             elif level.type != "hidden" and level.buyout == 0:
                 team.game_levels.append(level)
         return team
     elif self.config.public_teams:
         if Team.by_name(self.get_argument("team_name", "")) is not None:
             raise ValidationError(
                 "This team name is already registered.  Use team code to join that team."
             )
         team = Team()
         team.name = self.get_argument("team_name", "")
         team.motto = self.get_argument("motto", "")
         if len(filter_avatars("team")) == 0:
             team._avatar = identicon(team.name, 6)
         if not self.config.banking:
             team.money = 0
         level_0 = GameLevel.by_number(0)
         if not level_0:
             level_0 = GameLevel.all()[0]
         team.game_levels.append(level_0)
         return team
     else:
         raise ValidationError("Public teams are not enabled")
示例#3
0
    def create_user(self):
        """ Add user to the database """
        if User.by_handle(self.get_argument("handle", "")) is not None:
            raise ValidationError("This handle is already registered")
        if self.get_argument("pass1", "") != self.get_argument("pass2", ""):
            raise ValidationError("Passwords do not match")
        user = User()
        user.handle = self.get_argument("handle", "")
        user.password = self.get_argument("pass1", "")
        user.bank_password = self.get_argument("bpass", "")
        user.name = self.get_argument("playername", "")
        user.email = self.get_argument("email", "")
        team = self.get_team()
        self.dbsession.add(user)
        self.dbsession.add(team)
        self.dbsession.commit()

        # Avatar
        avatar_select = self.get_argument("user_avatar_select", "")
        if avatar_select and len(avatar_select) > 0:
            user._avatar = avatar_select
        elif hasattr(self.request, "files") and "avatar" in self.request.files:
            user.avatar = self.request.files["avatar"][0]["body"]
        else:
            user._avatar = identicon(user.handle, 6)
        team.members.append(user)
        if not options.teams:
            if avatar_select and len(avatar_select) > 0:
                team.avatar = avatar_select
            elif hasattr(self.request,
                         "files") and "avatar" in self.request.files:
                team.avatar = self.request.files["avatar"][0]["body"]
            else:
                team._avatar = identicon(user.handle, 6)
        self.dbsession.add(user)
        self.dbsession.add(team)
        self.dbsession.commit()
        self.event_manager.user_joined_team(user)

        # Chat
        if self.chatsession:
            self.chatsession.create_user(user, self.get_argument("pass1", ""))

        return user
示例#4
0
 def create_team(self, user):
     team = Team()
     team.name = user.handle
     team.motto = ""
     team._avatar = identicon(team.name, 6)
     if self.config.banking:
         team.money = self.config.starting_team_money
     else:
         team.money = 0
     level_0 = GameLevel.by_number(0)
     if not level_0:
         level_0 = GameLevel.all()[0]
     team.game_levels.append(level_0)
     self.dbsession.add(team)
     return team