# retoor from devplacepy.utils import strip_html from devplacepy.cli._shared import _audit_cli def cmd_news_clear(args): from devplacepy.database import db deleted = {} for table in ("news", "news_images", "news_sync"): if table in db.tables: count = db[table].count() db[table].delete() deleted[table] = count print(f"Deleted {count} rows from '{table}'") else: print(f"Table '{table}' does not exist, skipping") _audit_cli("cli.news.clear", "CLI cleared all news data", metadata={"deleted": deleted}) print("News data cleared") def cmd_news_sanitize(args): from devplacepy.database import db if "news" not in db.tables: print("News table does not exist") return news_table = db["news"] updated = 0 for row in news_table.all(): desc = (strip_html(row.get("description", "") or ""))[:5000] content = (strip_html(row.get("content", "") or ""))[:10000] if desc != row.get("description", "") or content != row.get("content", ""): news_table.update( {"id": row["id"], "description": desc, "content": content}, ["id"] ) updated += 1 _audit_cli("cli.news.sanitize", f"CLI sanitized {updated} news articles", metadata={"count": updated}) print(f"Sanitized {updated} news article(s)") def register_news(subparsers): news = subparsers.add_parser("news", help="News management") news_sub = news.add_subparsers(title="action", dest="action") news_clear = news_sub.add_parser( "clear", help="Delete all news from local database" ) news_clear.set_defaults(func=cmd_news_clear) news_sanitize = news_sub.add_parser( "sanitize", help="Strip HTML from all existing news descriptions and content" ) news_sanitize.set_defaults(func=cmd_news_sanitize)