# retoor from molodetz.database import ( insert_post, soft_delete, update_post_row, now_iso, db, ) from molodetz.utils.audit import record from molodetz.utils.notifications import create_notification PLACEHOLDER_NOTE = ( "\n\n> Placeholder. Dit is overgenomen uit de oude Molodetz-pagina. " "retoor vervangt dit later door zijn eigen verhaal." ) def create_post(user, title, body, topic, status="draft", is_placeholder=False, request=None): if is_placeholder and PLACEHOLDER_NOTE.strip() not in body: body = body.rstrip() + PLACEHOLDER_NOTE row = insert_post(user["uid"], title, body, topic, status=status, is_placeholder=is_placeholder) record(request, "post.create", payload={"uid": row["uid"], "status": status}, targets=[("post", row["uid"])], user=user) if status == "published": create_notification(user["uid"], "post.published", f"Gepubliceerd: {title}", f"/posts/{row['slug']}") return row def edit_post(post, user, title, body, topic, status, is_placeholder=False, request=None): fields = { "title": title, "body": body, "topic": topic, "status": status, "is_placeholder": bool(is_placeholder), "updated_at": now_iso(), } if status == "published" and not post.get("published_at"): fields["published_at"] = now_iso() update_post_row(post["uid"], **fields) record(request, "post.edit", payload={"uid": post["uid"]}, targets=[("post", post["uid"])], user=user) return {**post, **fields} def delete_post(post, actor, request=None): stamp = now_iso() soft_delete("posts", actor["uid"], stamp=stamp, uid=post["uid"]) record( request, "post.delete", payload={"uid": post["uid"], "stamp": stamp}, targets=[("post", post["uid"])], user=actor, ) return stamp def seed_placeholder_posts(admin): seeds = [ ("standaard", "Eenendertig keuzes. Jij hebt er nul.", "Python 3.12. FastAPI. Jinja2. SQLite. Geen JWT, want dat is een hobby. Geen JavaScript-framework, want dat is een catalogus. Het document zegt 107 keer MUST. Wie daar \"het hangt ervan af\" van maakt, heeft geen smaak. Die heeft een roadmap van andermans tutorials."), ("rol", "Een zes is geen ambitie.", "Wie tevreden is met voldoende, bouwt voldoende. Molodetz begint waar dat ophoudt."), ("rol", "Af is een eigenschap.", "Een project dat open blijft, is een mening. Een project dat af is, is een feit."), ("rol", "De assistent is geen senior.", "AI versnelt het werk. Het vervangt het oordeel niet. Wie dat door elkaar haalt, levert een chatlog in."), ("rol", "Geen cursus.", "Kennis gaat hier van mensen naar mensen. Niet via een ebook dat belooft dat je in een weekend iemand anders wordt."), ] created = [] for topic, title, body in seeds: existing = db["posts"].find_one(title=title, deleted_at=None) if "posts" in db.tables else None if existing: continue created.append(create_post(admin, title, body, topic, status="published", is_placeholder=topic == "rol")) return created