def team_get_projects(team_id): team = team_util.get_from_id(team_id) if team: return jsonify([project.id for project in team.projects]) return api_error_helpers.item_not_found("team", "id", str(team_id))
def get_days_off(team_id: int): if not team_util.get_from_id(team_id): return api_error_helpers.item_not_found("team", "id", str(team_id)) start_str = request.args.get("start_week", default=None, type=str) end_str = request.args.get("end_week", default=None, type=str) start_week = Week.fromstring(start_str).toordinal() if start_str else None end_week = Week.fromstring(end_str).toordinal() if end_str else None days_off = days_off_util.get_days_off(team_id, start_week, end_week) return jsonify([day_off.serialize() for day_off in days_off])
def team_get(team_id): team = team_util.get_from_id(team_id) if team: return jsonify( { "id": team.id, "name": team.name, "team_members": [user.id for user in team.users], "projects": [project.id for project in team.projects], "owner_id": team.owner.id, } ) return api_error_helpers.item_not_found("team", "id", str(team_id))
def set_days_off(team_id: int, json_content): team = team_util.get_from_id(team_id) if not team: return api_error_helpers.item_not_found("team", "id", str(team_id)) try: date = date_parse(json_content["date"]).date() hours_off = int(json_content["hours_off"]) except ValueError: return api_error_helpers.bad_body_arg() result = days_off_util.set_day_off(team_id, date, hours_off) if not result: return api_error_helpers.bad_body_arg() return jsonify({"result": "ok"})
def get_new_join_token(team_id): team = team_util.get_from_id(team_id) if not team: return api_error_helpers.item_not_found("team", "id", str(team_id)) if team.owner_id != g.user.id: return api_error_helpers.not_authorized() join_token = join_token_util.add_to_team(team_id, secrets.token_urlsafe(16)) if not join_token: return api_error_helpers.item_not_found("team", "id", str(team_id)) # return jsonify(join_token.serialize()) return jsonify( link=url_for("team.join_link", code=join_token.token_str, _external=True) )
def team_get_chart_data(team_id): if not team_util.get_from_id(team_id): return api_error_helpers.item_not_found("team", "id", str(team_id)) start_ahead = request.args.get("start_ahead", default=None) look_ahead = request.args.get("look_ahead", default=0, type=int) try: start = Week.fromstring(start_ahead).toordinal() except ValueError: return api_error_helpers.invalid_url_arg("start_ahead") end = start + look_ahead if end < start: return api_error_helpers.invalid_url_arg('["start_ahead","look_ahead"]') period = float(end - start + 1) results = schedule_util.get_team_summary_schedule(team_id, start, end, period) return jsonify( [ {"user": item[1], "project": item[2], "hours": round(item[0], 2)} for item in results ] )
def team_get_schedules(team_id: int): if not team_util.get_from_id(team_id): return api_error_helpers.item_not_found("team", "id", str(team_id)) start_ahead = request.args.get("start_ahead", default=None) look_ahead = request.args.get("look_ahead", default=0, type=int) try: start = Week.fromstring(start_ahead).toordinal() except ValueError: return api_error_helpers.invalid_url_arg("start_ahead") end = start + look_ahead if end < start: return api_error_helpers.invalid_url_arg('["start_ahead", "look_ahead"]') return jsonify( [ schedule.serialize() for schedule in schedule_util.get_team_schedules(team_id, start, end) ] )
def get_join_token(team_id): team = team_util.get_from_id(team_id) if not team: return api_error_helpers.item_not_found("team", "id", str(team_id)) if g.user.id != team.owner_id: return api_error_helpers.not_authorized() join_token = join_token_util.by_team_id(team_id) if not join_token: # Statistically unlikely that we'll ever get repeated tokens join_token = join_token_util.add_to_team(team_id, secrets.token_urlsafe(16)) if not join_token: return api_error_helpers.item_not_found("team", "id", str(team_id)) # return jsonify(join_token.serialize()) return jsonify( link=url_for("team.join_link", code=join_token.token_str, _external=True) )
def team_transfer_owner(team_id, json_content): team = team_util.get_from_id(team_id) owner_id = json_content["owner_id"] if not team: return api_error_helpers.item_not_found("team", "id", str(team_id)) if team.owner_id != g.user.id: return api_error_helpers.not_authorized() team = team_util.set_owner(team.id, owner_id) if team: return jsonify( { "id": team.id, "name": team.name, "team_members": [user.id for user in team.users], "projects": [project.id for project in team.projects], "owner_id": team.owner.id, } )