예제 #1
0
def new_team():
    result = {"error": None, "data": {}}

    parser = RequestParser()
    parser.argument("members", type=list, default=[], location="json")
    parser.argument("admins", type=list, default=[], location="json")
    parser.argument("description", type=str, required=True)
    parser.argument("name", type=str, required=True)
    parser.argument("slug", type=str, required=True)
    args = parser.parse()

    team = TeamService.get_by_slug(args["slug"])
    if team:
        return abort("team", "slug-exists")

    team = TeamService.create(args["name"], args["slug"], args["description"])

    for username in args["members"]:
        account = helpers.account(username)
        TeamService.add_member(team, account)
        if account.username in args["admins"]:
            PermissionService.add(account, "global", "publishing")

    result["data"] = team.dict(True)
    return result
예제 #2
0
    def post(self):
        result = {"error": None, "data": {}}

        parser = reqparse.RequestParser()
        parser.add_argument("members", type=list, default=[], location="json")
        parser.add_argument("admins", type=list, default=[], location="json")
        parser.add_argument("avatar", type=FileStorage, location="files")
        parser.add_argument("description", type=str, required=True)
        parser.add_argument("name", type=str, required=True)
        parser.add_argument("slug", type=str, required=True)
        args = parser.parse_args()

        team = TeamService.get_by_slug(args["slug"])
        if team is not None:
            return abort("team", "slug-exists")

        avatar = None
        if args["avatar"] is not None:
            helper = UploadHelper(request.account, args["avatar"], "avatar")
            data = helper.upload_image()

            if type(data) is Response:
                return data

            avatar = data

        team = TeamService.create(args["name"], args["slug"],
                                  args["description"])

        if avatar is not None:
            TeamService.update_avatar(team, avatar)

        for username in args["members"]:
            account = UserService.get_by_username(username)

            if account is None:
                return abort("account", "not-found")

            TeamService.add_member(team, account)
            if account.username in args["admins"]:
                PermissionService.add(account, "global", "publishing")

        result["data"] = team.dict(True)
        return result