This commit is contained in:
2026-04-14 17:00:29 +02:00
parent 460b41a8c5
commit 4aba2f02a2
10 changed files with 840 additions and 76 deletions

View File

@@ -118,8 +118,63 @@ def set_visibility(
# ── Hent playliste-indhold ────────────────────────────────────────────────────
@router.get("/playlists/{project_id}")
def get_shared_playlist(
@router.get("/public")
def list_public_playlists(db: Session = Depends(get_db)):
"""Hent alle public playlister — ingen login krævet."""
projects = db.query(Project).filter_by(visibility="public").all()
result = []
for p in projects:
owner = db.query(User).filter_by(id=p.owner_id).first()
result.append({
"id": p.id,
"name": p.name,
"owner": owner.username if owner else "?",
"song_count": len(p.project_songs),
})
return result
@router.post("/playlists/{project_id}/copy", status_code=201)
def copy_playlist(
project_id: str,
db: Session = Depends(get_db),
me: User = Depends(get_current_user),
):
"""Kopiér en public playliste til brugerens egen konto."""
p = db.query(Project).filter_by(id=project_id).first()
if not p:
raise HTTPException(404, "Playliste ikke fundet")
if p.visibility != "public":
raise HTTPException(403, "Kun public playlister kan kopieres")
if p.owner_id == me.id:
raise HTTPException(400, "Du ejer allerede denne playliste")
from app.models import Song
owner = db.query(User).filter_by(id=p.owner_id).first()
new_name = f"{p.name} (kopi fra {owner.username if owner else '?'})"
new_p = Project(
owner_id=me.id,
name=new_name,
description=p.description or "",
visibility="private",
)
db.add(new_p)
db.flush()
for ps in p.project_songs:
from app.models import ProjectSong
db.add(ProjectSong(
project_id=new_p.id,
song_id=ps.song_id,
position=ps.position,
status="pending",
is_workshop=ps.is_workshop,
dance_override=ps.dance_override or "",
))
db.commit()
return {"detail": "Kopieret", "id": new_p.id}
project_id: str,
db: Session = Depends(get_db),
me: User = Depends(get_current_user),