Molodetz blogrol volgens DPP-template
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
# retoor <retoor@molodetz.nl>
|
||||
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
|
||||
Reference in New Issue
Block a user