rustango 0.27.5

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 %}Organizations — rustango operator console{% endblock %}
{% block content %}
<h1>Organizations</h1>
<p>Tenants the registry knows about. Mutations go through
<code>cargo run -- create-tenant</code> / <code>cargo run -- drop-tenant</code>
(or whatever your project binary is — runs through
<code>rustango::manage::Cli</code>).</p>
{% if orgs | length == 0 %}
  <div class="empty">No tenants yet — provision one with
  <code>cargo run -- create-tenant &lt;slug&gt;</code>.</div>
{% else %}
<table>
  <thead>
    <tr>
      <th>Slug</th>
      <th>Display name</th>
      <th>Mode</th>
      <th>Host pattern</th>
      <th>Active</th>
      <th>Created</th>
      {% if edit_enabled %}<th class="actions-col">Actions</th>{% endif %}
    </tr>
  </thead>
  <tbody>
    {% for org in orgs %}
    <tr>
      <td><strong>{{ org.slug }}</strong></td>
      <td>{{ org.display_name }}</td>
      <td>{{ org.storage_mode }}</td>
      <td>{% if org.host_pattern %}{{ org.host_pattern }}{% else %}<em style="color:#aaa"></em>{% endif %}</td>
      <td>{% if org.active %}✓{% else %}—{% endif %}</td>
      <td>{{ org.created_at }}</td>
      {% if edit_enabled %}<td class="actions-col"><a class="btn-row-action" href="/orgs/{{ org.slug }}/edit">Edit</a></td>{% endif %}
    </tr>
    {% endfor %}
  </tbody>
</table>
{% endif %}
{% endblock %}