mirror of
https://github.com/nikdoof/test-auth.git
synced 2025-12-14 14:52:15 +00:00
First step of the groups subapp, view groups and request access done
This commit is contained in:
64
groups/views.py
Normal file
64
groups/views.py
Normal file
@@ -0,0 +1,64 @@
|
||||
from django.db.models import Q
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.shortcuts import render_to_response, get_object_or_404
|
||||
from django.template import RequestContext
|
||||
from django.core.urlresolvers import reverse
|
||||
|
||||
from django.contrib.auth.models import Group
|
||||
from django.contrib.auth.decorators import login_required
|
||||
|
||||
from groups.app_defines import *
|
||||
from groups.forms import GroupRequestForm
|
||||
|
||||
def index(request):
|
||||
return HttpResponseRedirect(reverse('groups.views.group_list'))
|
||||
|
||||
@login_required
|
||||
def group_list(request):
|
||||
""" View all groups, for users only public ones """
|
||||
|
||||
if request.user.is_superuser:
|
||||
groups = Group.objects.select_related('groupinformation').all()
|
||||
else:
|
||||
groups = Group.objects.select_related('groupinformation').filter(Q(groupinformation__public=True) |
|
||||
Q(groupinformation__admins__in=[request.user]) |
|
||||
Q(user_set__in=[request.user]))
|
||||
|
||||
# Process the query into a list of tuples including status
|
||||
group_list = []
|
||||
for group in groups:
|
||||
if request.user in group.groupinformation.admins.all():
|
||||
group_list.append((group.id, group.name, 'Admin', group.groupinformation.requestable))
|
||||
elif request.user in group.user_set.all():
|
||||
group_list.append((group.id, group.name, 'Member', group.groupinformation.requestable))
|
||||
else:
|
||||
group_list.append((group.id, group.name, None, group.groupinformation.requestable))
|
||||
|
||||
return render_to_response('groups/group_list.html', locals(), context_instance=RequestContext(request))
|
||||
|
||||
@login_required
|
||||
def view_group(request):
|
||||
pass
|
||||
|
||||
@login_required
|
||||
def create_request(request, groupid):
|
||||
|
||||
group = get_object_or_404(Group, id=groupid)
|
||||
|
||||
if not group.groupinformation.requestable and not request.user in group.user_set.all():
|
||||
return HttpResponseRedirect(reverse('groups.views.index'))
|
||||
|
||||
if request.method == 'POST':
|
||||
form = GroupRequestForm(request.POST)
|
||||
if form.is_valid():
|
||||
obj = form.save(commit=False)
|
||||
obj.user = request.user
|
||||
obj.group = group
|
||||
obj.changed_by = request.user
|
||||
obj.save()
|
||||
request.user.message_set.create(message="You membership request has been created.")
|
||||
return HttpResponseRedirect(reverse('groups.views.index')) # Redirect after POST
|
||||
else:
|
||||
form = GroupRequestForm() # An unbound form
|
||||
|
||||
return render_to_response('groups/create_request.html', locals(), context_instance=RequestContext(request))
|
||||
Reference in New Issue
Block a user