{% extends "core/base.html" %} {% load lyric_extras %} {% block title_text %}Billpost{% endblock title_text %} {% block header_text %}Billpost{% endblock header_text %} {% block content %} {# Hidden owner span — preserves the existing FT contract that reads the #} {# post owner via #id_post_owner. Visible owner attribution moved into the #} {# self line ("just me, …" / "& me, …") below. #}

{{ post.title }}

{% with recipients=post.shared_with.all %} {% if recipients %}

shared between {% for r in recipients %}{{ r|at_handle }}{% if not forloop.last %}, {% endif %}{% endfor %}

& me, {{ post.owner|at_handle }} the {{ post.owner.active_title_display }}

{% else %}

just me, {{ post.owner|at_handle }} the {{ post.owner.active_title_display }}

{% endif %} {% endwith %}
{# Admin-Post (note-unlock thread) input is read-only: the user can't #} {# respond, and the placeholder calls that out. View_post hard-rejects #} {# POSTs to NOTE_UNLOCK posts; the post_save Line signal is the safety #} {# net for ORM-level / API writes that bypass the view. #} {% if post.kind == 'note_unlock' %}
{% else %}
{% csrf_token %} {% if form.errors %}
{{ form.errors.text.0 }}
{% endif %}
{% endif %} {# Bud btn (bottom-left) + slide-out recipient field — async share. #} {# Suppressed on admin Posts (note unlock thread) since friend-invites #} {# don't apply to system-authored threads. #} {% if post.kind != 'note_unlock' %} {% include "apps/billboard/_partials/_bud_panel.html" %} {% endif %}
{% endblock content %} {% block scripts %} {% include "apps/dashboard/_partials/_scripts.html" %} {% endblock scripts %}