Esempio n. 1
0
    def __add_group_to_user(self, user_discord_id):
        roles = DiscordRole.query\
            .join(DiscordUserRole)\
            .join(DiscordUser)\
            .filter(DiscordUser.id == user_discord_id)\
            .all()

        user = User.query.filter(User.discord == user_discord_id).first()
        for role in roles:
            if role.id in hub_current_server.discord_role_to_group:
                group_id = hub_current_server.discord_role_to_group[role.id]
                group = Group.query.filter(Group.id == group_id).first()
                if not user:
                    discord_user = DiscordUser.query.filter(DiscordUser.id == user_discord_id).first()
                    assert discord_user
                    user = User(discord=user_discord_id, display_name=discord_user.pure_name, activated=True)
                    user.primary_group = group
                else:
                    last_group = user.primary_group
                    user.primary_group = group
                    user.add_to_group(last_group)

                user.save()
                LogAction(current_user, "added user {name} (discord: {discord_id}) to group {group}".format(
                    name=user.display_name,
                    discord_id=user_discord_id,
                    group=group.name
                ))
                flash("User {} was added to group {}".format(user.display_name, group.name))
                return True

        flash("Failed to find appropriate group for user {}".format(user.display_name), "danger")
        return False