#19 — link_url on campaign variants (migration 019) - ADD COLUMN link_url TEXT on campaign_variants - create_variant, upsert_variant, update_variant all carry link_url - RedditClient.post() supports kind=link when link_url set + body empty - RedditPostStrategy passes link_url from extra dict - poster.py merges link_url from variant into extra (same as slug/tags) - API VariantCreate/VariantUpdate schemas include link_url - CampaignDetail: link_url field in Add Variant form with copy button; link_url shown in variant list with clickable link + copy button - Variant button disabled if neither body nor link_url is set #18 — Multi-user team accounts (migrations 020-022) - 020: team_accounts table (display_name, platform, username, session_file) - 021: opportunities.assigned_to + post_as FK → team_accounts - 022: posts.posted_by_account_id FK → team_accounts - Store: list/get/get_by_username/create_team_account, assign_opportunity - API: GET/POST /api/v1/team; POST /api/v1/team/{id}/assign - config.py: sessions_dir added; reddit_session_file now points to sessions/alan_reddit.json (backward compat path kept) - scripts/migrate_sessions.py: one-shot move session.json → sessions/alan_reddit.json + creates placeholder files for future accounts - manage.sh: build (VITE_BASE_URL=/magpie/ npm build), serve (static), migrate-sessions subcommands added; login updated to new session path - Caddy: @magpie_no_session gate + handle /magpie/api* and /magpie* blocks added to menagerie.circuitforge.tech site block
53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
One-time migration: moves the legacy session.json to the new sessions/ directory.
|
|
Safe to run multiple times (idempotent).
|
|
|
|
Usage: conda run -n cf python scripts/migrate_sessions.py
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import shutil
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
DATA_DIR = Path.home() / ".local" / "share" / "magpie"
|
|
OLD_SESSION = DATA_DIR / "session.json"
|
|
SESSIONS_DIR = DATA_DIR / "sessions"
|
|
NEW_SESSION = SESSIONS_DIR / "alan_reddit.json"
|
|
|
|
|
|
def main() -> None:
|
|
SESSIONS_DIR.mkdir(parents=True, exist_ok=True)
|
|
print(f"Sessions directory: {SESSIONS_DIR}")
|
|
|
|
if NEW_SESSION.exists():
|
|
print(f" alan_reddit.json already exists — nothing to move")
|
|
elif OLD_SESSION.exists():
|
|
shutil.copy2(OLD_SESSION, NEW_SESSION)
|
|
print(f" Copied {OLD_SESSION} → {NEW_SESSION}")
|
|
# Leave the original in place during rollout; remove manually once confirmed
|
|
print(f" NOTE: {OLD_SESSION} left in place. Remove manually after confirming.")
|
|
else:
|
|
print(f" No session.json found at {OLD_SESSION} — may need to run ./manage.sh login")
|
|
|
|
print("\nPlaceholder files created for future accounts (empty — fill in when ready):")
|
|
placeholders = [
|
|
"xander_reddit.json",
|
|
"neon_reddit.json",
|
|
"cf_reddit.json",
|
|
"cf_bluesky.json",
|
|
"cf_mastodon.json",
|
|
]
|
|
for name in placeholders:
|
|
path = SESSIONS_DIR / name
|
|
if not path.exists():
|
|
path.touch()
|
|
print(f" Created {path}")
|
|
else:
|
|
print(f" {name} already exists — skipping")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|