| 1 | from django.contrib import messages |
| 2 | from django.shortcuts import get_object_or_404, render |
| 3 | |
| 4 | from .decorators import group_required |
| 5 | from .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 | |
| 15 | def home(request, slug): |
| 16 | group = get_object_or_404(XGroup, short=slug) |
| 17 | try: |
| 18 | membership = Membership.objects.get(xgroup=group, user=request.user) |
| 19 | except Membership.DoesNotExist: |
| 20 | membership = None |
| 21 | |
| 22 | return render(request, 'groups/home.html', { |
| 23 | 'group': group, |
| 24 | 'sidebar': 'home', |
| 25 | 'membership': membership, |
| 26 | }) |
| 27 | |
| 28 | |
| 29 | @group_required() |
| 30 | def directory(request, group, membership=None): |
| 31 | return render(request, 'groups/directory.html', { |
| 32 | 'group': group, |
| 33 | 'memberships': group.memberships. |
| 34 | filter(state='enabled'). |
| 35 | select_related(). |
| 36 | order_by('level'), |
| 37 | 'is_admin': membership.level == Membership.LEVEL_ADMIN, |
| 38 | 'sidebar': 'directory', |
| 39 | }) |
| 40 | |
| 41 | |
| 42 | def membership_add(request, group, user_to_add): |
| 43 | pass |
| 44 | |
| 45 | |
| 46 | @group_required(level=Membership.LEVEL_ADMIN) |
| 47 | def membership_delete(request, group, to_delete, membership=None): |
| 48 | pass |