- Invite flow: admin issue/revoke on join requests, public single-use claim links (hash-only tokens, 7-day expiry, no state reveal), claim creates the Member account and marks the request accepted - Gallery: admin status page plus resync endpoint; sync refreshes thumbnails whose content changed; tools/gallery contract and checker - Docs: public content page, admin-only operator runbook, api.md invite/gallery sections, all routes in the live API docs, docs reachability gate test - Screenshots cover the new pages; version 1.0.18
32 lines
721 B
Python
32 lines
721 B
Python
# retoor <retoor@molodetz.nl>
|
|
from molodetz.schemas.base import OutModel
|
|
|
|
|
|
class JoinPageOut(OutModel):
|
|
submitted: bool = False
|
|
|
|
|
|
class JoinRequestOut(OutModel):
|
|
uid: str | None = None
|
|
name: str | None = None
|
|
contact: str | None = None
|
|
repo_url: str | None = None
|
|
message: str | None = None
|
|
status: str | None = None
|
|
link_title: str | None = None
|
|
link_status: str | None = None
|
|
created_at: str | None = None
|
|
invite_open: bool = False
|
|
invite_expires_at: str | None = None
|
|
|
|
|
|
class JoinListOut(OutModel):
|
|
requests: list[JoinRequestOut] = []
|
|
|
|
|
|
class InvitePageOut(OutModel):
|
|
valid: bool = False
|
|
username: str = ""
|
|
email: str = ""
|
|
email_locked: bool = False
|