Translate the whole site to English: English routes with 301 redirects from the Dutch paths, English UI, docs, seeds and captions, one-time live content migration
This commit is contained in:
+12
-12
@@ -36,7 +36,7 @@ def prepare():
|
||||
def _user(username):
|
||||
user = get_user_by_username(username)
|
||||
if user is None:
|
||||
raise SystemExit(f"Onbekende gebruiker: {username}")
|
||||
raise SystemExit(f"Unknown user: {username}")
|
||||
return user
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ def apikey_backfill(args):
|
||||
if not user.get("api_key"):
|
||||
update_user(user["uid"], api_key=generate_uid())
|
||||
changed += 1
|
||||
print(f"{changed} sleutels aangevuld")
|
||||
print(f"{changed} keys filled in")
|
||||
|
||||
|
||||
def posts_list(args):
|
||||
@@ -89,12 +89,12 @@ def read_source(path):
|
||||
def posts_import(args):
|
||||
path = Path(args.path)
|
||||
if not path.is_file():
|
||||
raise SystemExit(f"Bestand niet gevonden: {path}")
|
||||
raise SystemExit(f"File not found: {path}")
|
||||
body = read_source(path)
|
||||
title = args.title or path.stem.replace("-", " ").replace("_", " ").strip().capitalize()
|
||||
author = bootstrap_admin() or _user(config.ADMIN_USERNAME)
|
||||
post = create_post(author, title, body, args.topic, "published" if args.publish else "draft")
|
||||
print(f"Geimporteerd: {post['uid']} {post['title']}")
|
||||
print(f"Imported: {post['uid']} {post['title']}")
|
||||
|
||||
|
||||
def joins_list(args):
|
||||
@@ -110,43 +110,43 @@ def backups_list(args):
|
||||
def backups_run(args):
|
||||
row = enqueue_backup(args.target, None)
|
||||
ok = process_backup(row, args.codec)
|
||||
print("klaar" if ok else "mislukt")
|
||||
print("done" if ok else "failed")
|
||||
return 0 if ok else 1
|
||||
|
||||
|
||||
def backups_prune(args):
|
||||
count = prune_backups(args.keep, dry_run=args.dry_run)
|
||||
print(f"{count} archieven {'zouden worden verwijderd' if args.dry_run else 'verwijderd'}")
|
||||
print(f"{count} archives {'would be removed' if args.dry_run else 'removed'}")
|
||||
|
||||
|
||||
def backups_clear(args):
|
||||
count = clear_backups(dry_run=args.dry_run)
|
||||
print(f"{count} archieven {'zouden worden verwijderd' if args.dry_run else 'verwijderd'}")
|
||||
print(f"{count} archives {'would be removed' if args.dry_run else 'removed'}")
|
||||
|
||||
|
||||
def sessions_prune(args):
|
||||
print(f"{prune_expired_sessions(dry_run=args.dry_run)} verlopen sessies")
|
||||
print(f"{prune_expired_sessions(dry_run=args.dry_run)} expired sessions")
|
||||
|
||||
|
||||
def audit_prune(args):
|
||||
cutoff = (datetime.now(timezone.utc) - timedelta(days=args.days)).isoformat()
|
||||
print(f"{prune_audit(cutoff, dry_run=args.dry_run)} auditregels ouder dan {args.days} dagen")
|
||||
print(f"{prune_audit(cutoff, dry_run=args.dry_run)} audit rows older than {args.days} days")
|
||||
|
||||
|
||||
def system_prune(args):
|
||||
orphans = orphan_blobs()
|
||||
for path in orphans:
|
||||
print(("zou verwijderen: " if args.dry_run else "verwijderd: ") + str(path))
|
||||
print(("would remove: " if args.dry_run else "removed: ") + str(path))
|
||||
if not args.dry_run:
|
||||
path.unlink(missing_ok=True)
|
||||
print(f"{len(orphans)} wees-blobs")
|
||||
print(f"{len(orphans)} orphan blobs")
|
||||
|
||||
|
||||
def system_sql_lint(args):
|
||||
problems = lint()
|
||||
for problem in problems:
|
||||
print(problem)
|
||||
print(f"{len(problems)} problemen")
|
||||
print(f"{len(problems)} problems")
|
||||
return 1 if problems else 0
|
||||
|
||||
|
||||
|
||||
+14
-14
@@ -6,10 +6,10 @@ from molodetz.cli import commands
|
||||
|
||||
|
||||
def build_parser():
|
||||
parser = argparse.ArgumentParser(prog="molodetz", description="Beheer-CLI voor Molodetz.")
|
||||
parser = argparse.ArgumentParser(prog="molodetz", description="Admin CLI for Molodetz.")
|
||||
groups = parser.add_subparsers(dest="group", required=True)
|
||||
|
||||
role = groups.add_parser("role", help="Rollen lezen en zetten").add_subparsers(dest="action", required=True)
|
||||
role = groups.add_parser("role", help="Read and set roles").add_subparsers(dest="action", required=True)
|
||||
role_get = role.add_parser("get")
|
||||
role_get.add_argument("username")
|
||||
role_get.set_defaults(handler=commands.role_get)
|
||||
@@ -18,7 +18,7 @@ def build_parser():
|
||||
role_set.add_argument("role", choices=["Member", "Admin"])
|
||||
role_set.set_defaults(handler=commands.role_set)
|
||||
|
||||
apikey = groups.add_parser("apikey", help="API-sleutels").add_subparsers(dest="action", required=True)
|
||||
apikey = groups.add_parser("apikey", help="API keys").add_subparsers(dest="action", required=True)
|
||||
key_get = apikey.add_parser("get")
|
||||
key_get.add_argument("username")
|
||||
key_get.set_defaults(handler=commands.apikey_get)
|
||||
@@ -27,19 +27,19 @@ def build_parser():
|
||||
key_reset.set_defaults(handler=commands.apikey_reset)
|
||||
apikey.add_parser("backfill").set_defaults(handler=commands.apikey_backfill)
|
||||
|
||||
posts = groups.add_parser("posts", help="Berichten").add_subparsers(dest="action", required=True)
|
||||
posts = groups.add_parser("posts", help="Posts").add_subparsers(dest="action", required=True)
|
||||
posts.add_parser("list").set_defaults(handler=commands.posts_list)
|
||||
posts_import = posts.add_parser("import", help="Importeer .md of .pdf als concept")
|
||||
posts_import = posts.add_parser("import", help="Import .md or .pdf as a draft")
|
||||
posts_import.add_argument("path")
|
||||
posts_import.add_argument("--topic", default="rol", choices=["rol", "standaard"])
|
||||
posts_import.add_argument("--topic", default="roll", choices=["roll", "standard"])
|
||||
posts_import.add_argument("--title")
|
||||
posts_import.add_argument("--publish", action="store_true")
|
||||
posts_import.set_defaults(handler=commands.posts_import)
|
||||
|
||||
joins = groups.add_parser("joins", help="Aanmeldingen").add_subparsers(dest="action", required=True)
|
||||
joins = groups.add_parser("joins", help="Join requests").add_subparsers(dest="action", required=True)
|
||||
joins.add_parser("list").set_defaults(handler=commands.joins_list)
|
||||
|
||||
backups = groups.add_parser("backups", help="Back-ups").add_subparsers(dest="action", required=True)
|
||||
backups = groups.add_parser("backups", help="Backups").add_subparsers(dest="action", required=True)
|
||||
backups.add_parser("list").set_defaults(handler=commands.backups_list)
|
||||
backup_run = backups.add_parser("run")
|
||||
backup_run.add_argument("--target", default="database", choices=["database", "uploads", "keys", "full"])
|
||||
@@ -53,24 +53,24 @@ def build_parser():
|
||||
backup_clear.add_argument("--dry-run", action="store_true")
|
||||
backup_clear.set_defaults(handler=commands.backups_clear)
|
||||
|
||||
sessions = groups.add_parser("sessions", help="Sessies").add_subparsers(dest="action", required=True)
|
||||
sessions = groups.add_parser("sessions", help="Sessions").add_subparsers(dest="action", required=True)
|
||||
sessions_prune = sessions.add_parser("prune")
|
||||
sessions_prune.add_argument("--dry-run", action="store_true")
|
||||
sessions_prune.set_defaults(handler=commands.sessions_prune)
|
||||
|
||||
audit = groups.add_parser("audit", help="Auditlog").add_subparsers(dest="action", required=True)
|
||||
audit = groups.add_parser("audit", help="Audit log").add_subparsers(dest="action", required=True)
|
||||
audit_prune = audit.add_parser("prune")
|
||||
audit_prune.add_argument("--days", type=int, default=365)
|
||||
audit_prune.add_argument("--dry-run", action="store_true")
|
||||
audit_prune.set_defaults(handler=commands.audit_prune)
|
||||
|
||||
system = groups.add_parser("system", help="Systeemonderhoud").add_subparsers(dest="action", required=True)
|
||||
system_prune = system.add_parser("prune", help="Verwijder wees-blobs")
|
||||
system = groups.add_parser("system", help="System maintenance").add_subparsers(dest="action", required=True)
|
||||
system_prune = system.add_parser("prune", help="Remove orphan blobs")
|
||||
system_prune.add_argument("--dry-run", action="store_true")
|
||||
system_prune.set_defaults(handler=commands.system_prune)
|
||||
system.add_parser("sql-lint", help="Parse alle SQL-literals met sqlglot").set_defaults(handler=commands.system_sql_lint)
|
||||
system.add_parser("sql-lint", help="Parse all SQL literals with sqlglot").set_defaults(handler=commands.system_sql_lint)
|
||||
|
||||
emoji = groups.add_parser("emoji", help="Emoji-kaart").add_subparsers(dest="action", required=True)
|
||||
emoji = groups.add_parser("emoji", help="Emoji map").add_subparsers(dest="action", required=True)
|
||||
emoji.add_parser("regenerate").set_defaults(handler=commands.emoji_regenerate)
|
||||
return parser
|
||||
|
||||
|
||||
Reference in New Issue
Block a user