summaryrefslogtreecommitdiff
path: root/coip/apps/membership/views.py
blob: dd505d2ec91bfe351a64e39baf0e6bce3aadb8bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
'''
Created on Jun 23, 2010

@author: leifj
'''
from django.shortcuts import get_object_or_404
from coip.apps.membership.models import Membership, add_member, remove_member
from coip.multiresponse import render403, respond_to
from django.contrib.auth.models import User
from coip.apps.name.models import Name
from django.http import HttpResponseRedirect
from django.core.exceptions import ObjectDoesNotExist
from coip.apps.entity.models import Entity
from django.contrib.auth.decorators import login_required
from coip.apps.membership.forms import MembershipForm

def show(request,id):
    membership = get_object_or_404(Membership,pk=id)
    name = membership.name
    if not name.has_permission(request.user,'r'):
        return render403("You do not have permission to view membership information for %s" % (name))
    
    return respond_to(request,
                      {'text/html': 'apps/membership/membership.html'}, 
                      {'membership': membership})
    
@login_required
def join(request,id,membername=None):
    name = get_object_or_404(Name,pk=id)
    if not name.has_permission(request.user,'i'):
        return render403("You do not have permission to add members to %s" % (name))
    
    if request.method == "POST":
        m = Membership(name=name,enabled=True)
        form = MembershipForm(request.POST,instance=m)
        if form.is_valid():
            if form.cleaned_data.has_key('user'):
                add_member(name,form.cleaned_data['user'])
            elif form.cleaned_data.has_key('entity'):
                add_member(name,form.cleaned_data['entity'])
            else:
                raise Exception,"Bad form state - should not happen at all!"
            
            return HttpResponseRedirect(name.url())
        else:
            return respond_to(request,
                              {'text/html': 'apps/membership/edit.html'},
                              {'form': form,'name': name, 'formtitle': 'Add a member to %s' % name.short})
    else:
        if membername:
            try:
                member = User.objects.get(username=membername)
            except ObjectDoesNotExist:
                member = Entity.objects.get(entityId=name)
            add_member(name, member)
            return HttpResponseRedirect(name.url())
        else:
            form = MembershipForm()
            return respond_to(request,
                              {'text/html': 'apps/membership/edit.html'},
                              {'form': form,'name': name, 'formtitle': 'Add a member to %s' % name.short})

@login_required
def leave(request,id,membername=None):
    name = get_object_or_404(Name,pk=id)
    if membername:
        try:
            member = User.objects.get(username=membername)
        except ObjectDoesNotExist:
            member = Entity.objects.get(entityId=name) 
    remove_member(name, member)
    return HttpResponseRedirect(name.url())