Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion api/teams/teams_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -268,12 +268,24 @@ def edit_team(json):
"location": "location",
"admin_notes": "admin_notes",
"devpost_link": "devpost_link",
"demo_video_url": "demo_video_url",
}


# Normalize demo_video_url: trim, cap at 500 chars, empty string => clear
if "demo_video_url" in json:
raw = json.get("demo_video_url")
if isinstance(raw, str):
trimmed = raw.strip()[:500]
json["demo_video_url"] = trimmed if trimmed else None

# If this is the first time setting devpost_link, set devpost_link_submitted date
if "devpost_link" in json and "devpost_link" not in team_data:
update_data["devpost_link_submitted"] = datetime.now().isoformat()

# If this is the first time setting demo_video_url, stamp demo_video_url_submitted
if json.get("demo_video_url") and not team_data.get("demo_video_url"):
update_data["demo_video_url_submitted"] = datetime.now().isoformat()

for db_field, json_field in field_mappings.items():
if json_field in json:
update_data[db_field] = json[json_field]
Expand Down
22 changes: 20 additions & 2 deletions api/teams/teams_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,12 +87,30 @@ def add_devpost_to_team_api(teamid):
logger.info(f"Devpost link: {devpost_link}")
if not devpost_link:
return {"error": "Devpost link is required"}, 400

return edit_team({"id": teamid, "devpost_link": devpost_link})

logger.error("Could not obtain user details for POST /team/<teamid>/devpost")
return {"error": "Unauthorized"}, 401

@bp.route("/<teamid>/demo-video", methods=["POST"])
@auth.require_user
def add_demo_video_to_team_api(teamid):
"""
Add or clear a demo video URL for a team.
Requires user to be authenticated (team self-serve, mirrors devpost endpoint).
Pass demo_video_url as empty string or null to clear.
"""
logger.info(f"POST /team/{teamid}/demo-video called")
if auth_user and auth_user.user_id:
body = request.get_json() or {}
demo_video_url = body.get("demo_video_url", "")
# Allow empty string to clear the field; edit_team normalizes to None
return edit_team({"id": teamid, "demo_video_url": demo_video_url})

logger.error("Could not obtain user details for POST /team/<teamid>/demo-video")
return {"error": "Unauthorized"}, 401

@bp.route("/<teamid>/member", methods=["POST"])
@auth.require_user
@auth.require_org_member_with_permission("volunteer.admin", req_to_org_id=getOrgId)
Expand Down
Loading