{% extends "admin/_layout.html" %} {% from "_macros.html" import icon, model_avatar %} {% set section = "groups" %} {% block title %}{{ group.name }} - Groups - {{ brand.name }}{% endblock %} {% block heading %}{{ group.name }}{% endblock %} {% block admin_content %}

{{ icon("chevron-left", "icon--sm") }} All groups · A group only ever adds. Anything already in the baseline is shown below as such, so a tick here that changes nothing looks like one.

{% if saved %}
{{ icon("check", "icon--sm") }} {{ saved }}
{% endif %}

Name

Permissions this group adds

{% for section_name, defs in permission_groups.items() %}
{{ section_name }} {% for definition in defs %} {% endfor %}
{% endfor %}
{# Quotas. Every one is zero-for-no-limit, and an *empty* box is different from a zero: empty is "this group has no opinion" and contributes nothing to the resolution, zero is "unlimited" and wins outright. Saying that here is the only place somebody will read it. #}

Quotas

Resolved across a person's groups by maximum — the union rule applied to numbers, so a second group can only grant more. Leave a box empty for “no opinion”, and use 0 for “no limit”, which beats any number another group sets. Administrators are unlimited whatever is here.

{% for key, label, description in limit_defs %}

{{ description }}

{% endfor %}
{# Membership lives here and only here. It used to be on the user page as well, and a full-form POST from either side overwrote what the other had shown. #}

Members

The one place membership is edited. A user's own page links here rather than offering a second control for the same value.

{% for person in users %} {% endfor %}

Models this group unlocks

A model marked public is available to everyone; one that is not is available to the groups named here. Model access is separate from permissions — one says what somebody may do, the other what with.

{% for model in models %} {% endfor %}

Remove

Members keep their accounts and lose whatever this group granted them. Every share naming this group goes too — nothing cascades to those, so they are deleted explicitly.

{% endblock %}