{% extends "layouts/settings.html" %} {% load static %} {% block title %}Plan & billing · DemandTrail Messaging{% endblock %} {% block page_header %}{% endblock %} {% block content_wrap %}{% endblock %} {% block content %}
What this organization is on, and what it is using.
{% if checkout_state == "cancelled" %}
{% endif %}
{{ card.name }}
{% if card.key == plan %}
Current plan
{% endif %}
{{ card.tagline }}
{% if card.price %}{{ card.price.amount }} {{ card.price.note }}
{% endif %} {% comment %} The call to action sits above the feature list. Somebody who already knows they want the plan should not have to travel the whole list to act, and both columns then start their bullets at the same height whatever each one offers. Rendered only when there is something to put in it: Django leaves the whitespace inside a template block, so an empty div is not `:empty` and a CSS rule could not collapse the gap. {% endcomment %} {% if card.key == plan and can_manage_billing and can_manage %}Renews on {{ renews_on|date:"j F Y" }}.
{% elif cancels_on %}Your plan ends on {{ cancels_on|date:"j F Y" }}. Your work stays here.
{% endif %} {% if not can_manage %}Only organization admins can change the plan.
{% endif %} {% else %} {% comment %} No payment provider configured, which is every self-hosted install. There is deliberately no plan comparison here: rendering a Free column whose limits are fiction on a box that has no limits is the one thing the promise in docs/SPEC.md §1.1 actually forbids. {% endcomment %}Every feature is available, with no limits and nothing counted. There is no plan to be on and no payment provider to configure.
| {% include "partials/_nav_icon.html" with name=row.icon %} | {{ row.label }} | {% if row.limit is None %}{{ row.used }}{% else %}{{ row.used }} of {{ row.limit }}{% endif %} |