| 1 | from django.contrib import messages |
| 2 | from django.shortcuts import get_object_or_404, render |
| 3 | |
| 4 | from xnet.accounts.decorators import group_required |
| 5 | from xnet.accounts.models import XGroup, Membership |
| 6 | |
| 7 | |
| 8 | def index(request): |
| 9 | return render(request, 'groups/index.html', { |
| 10 | 'groups': XGroup.objects.order_by('kind'), |
| 11 | 'sidebar': 'list', |
| 12 | }) |
| 13 | |
| 14 | def home(request, pk): |
| 15 | return render(request, 'groups/home.html', { |
| 16 | 'group': get_object_or_404(XGroup, pk=pk), |
| 17 | 'sidebar': 'home', |
| 18 | }) |
| 19 | |
| 20 | @group_required() |
| 21 | def directory(request, group, membership=None): |
| 22 | print(group.memberships.filter(state='enabled').order_by('level')) |
| 23 | return render(request, 'groups/directory.html', { |
| 24 | 'group': group, |
| 25 | 'memberships': group.memberships. \ |
| 26 | filter(state='enabled'). \ |
| 27 | select_related(). \ |
| 28 | order_by('level'), |
| 29 | 'is_admin': membership.level == Membership.LEVEL_ADMIN, |
| 30 | 'sidebar': 'directory', |
| 31 | }) |
| 32 | |
| 33 | @group_required(level=Membership.LEVEL_ADMIN) |
| 34 | def membership_delete(request, group, to_delete): |
| 35 | pass |