rustango 0.25.0

Django-shaped batteries-included web framework for Rust: ORM + migrations + auto-admin + multi-tenancy + audit log + auth (sessions, JWT, OAuth2/OIDC, HMAC) + APIs (ViewSet, OpenAPI auto-derive, JSON:API) + jobs (in-mem + Postgres) + email + media (S3 / R2 / B2 / MinIO + presigned uploads + collections + tags) + production middleware (CSRF, CSP, rate-limiting, compression, idempotency, etc.).
Documentation
{% extends "op_layout.html" %}
{% block title %}Edit {{ slug }} — rustango operator console{% endblock %}
{% block content %}

<nav class="breadcrumb" aria-label="breadcrumb">
  <a href="/orgs">Organizations</a>
  <span class="sep"></span>
  <code>{{ slug }}</code>
  <span class="sep"></span>
  edit
</nav>

<h1>Edit <code>{{ slug }}</code></h1>
<p class="lead">
  Adjust the live config for this tenant. Locked fields stay where they
  are — re-provisioning needs <code>cargo run -- create-tenant</code> /
  <code>drop-tenant</code>. Inputs are generated from
  <code>Org::SCHEMA</code> via
  <code>rustango::admin::render::render_input</code>, so new columns
  added to <code>Org</code> show up here without template edits.
</p>

{% if error %}<div class="alert alert-error">{{ error }}</div>{% endif %}
{% if notice %}<div class="alert alert-notice">{{ notice }}</div>{% endif %}

<form method="post" action="/orgs/{{ slug }}/edit" class="edit-form">

  <fieldset class="section locked">
    <legend>Locked</legend>
    <table>
      {% for row in locked_rows %}
      <tr>
        <th>{{ row.name }}</th>
        <td>{% if row.value %}<code>{{ row.value }}</code>{% else %}<span class="empty">none</span>{% endif %}</td>
      </tr>
      {% endfor %}
    </table>
  </fieldset>

  <fieldset class="section">
    <legend>Editable</legend>
    <table>
      {% for row in editable_rows %}
      <tr>
        <th><label for="{{ row.name }}">{{ row.name }}</label></th>
        <td>
          {{ row.input | safe }}
          {% if row.helper %}<div class="field-helper">{{ row.helper }}</div>{% endif %}
        </td>
      </tr>
      {% endfor %}
    </table>
  </fieldset>

  <div class="form-actions">
    <button type="submit" class="btn btn-primary">Save</button>
    <a href="/orgs" class="btn-link">Cancel</a>
  </div>
</form>

{% endblock %}