Exemplo n.º 1
0
def team(id=None, p=None, limit=None, admin=None, **kwargs):
    db = DB_Session()
    query = db.query(Team)
    if web.ctx.method in ("POST", "PUT", "PATCH"):
        i = json.loads(web.data())
        player = None
        if i.has_key("player"):
            player = i.pop("player")
        if web.ctx.method in ("PUT", "PATCH"):
            team = query.get(int(id))
            for name, value in i.items():
                setattr(team, name, value)
        else:
            team = Team(**i)
            db.add(team)
            db.flush()
            db.refresh(team)
        if player is not None:
            team.teamplayer[:] = [TeamPlayer(**{"team_id": id, "player_id": p}) for p in player]
        db.commit()
        n = ResultWrapper(team, team=team.to_api(admin))
    else:
        if id:
            team = query.get(int(id))
            team = team.to_api(admin)
            n = ResultWrapper(team, team=team)
        else:
            if kwargs.has_key("nation"):
                nation = kwargs["nation"]
                team = query.filter(Team.owner_id == int(nation), Team.type == 1)
            if kwargs.has_key("club"):
                club = kwargs["club"]
                team = query.filter(Team.owner_id == int(club), Team.type == 2)
            if kwargs.has_key("event"):
                event = kwargs["event"]
                team = query.join(EventsTeams, Team.id == EventsTeams.team_id).filter(
                    EventsTeams.event_id == int(event)
                )
            team = paging(team, limit, p)
            n = ResultWrapper(team, team=[v.to_api(admin) for v in team], count=query.count())
    db.close()
    return n