summaryrefslogtreecommitdiff
path: root/coip/apps/membership
diff options
context:
space:
mode:
Diffstat (limited to 'coip/apps/membership')
-rw-r--r--coip/apps/membership/forms.py9
-rw-r--r--coip/apps/membership/models.py27
-rw-r--r--coip/apps/membership/views.py43
3 files changed, 35 insertions, 44 deletions
diff --git a/coip/apps/membership/forms.py b/coip/apps/membership/forms.py
index c74307b..512647f 100644
--- a/coip/apps/membership/forms.py
+++ b/coip/apps/membership/forms.py
@@ -5,13 +5,12 @@ Created on Jun 23, 2010
'''
from django import forms
from coip.apps.membership.models import Membership
-from django.forms.widgets import Textarea
class MembershipForm(forms.ModelForm):
class Meta:
model = Membership
-class InvitationForm(forms.Form):
- email = forms.EmailField()
- expires = forms.DateTimeField()
- message = forms.CharField(widget=Textarea) \ No newline at end of file
+class InvitationForm(forms.ModelForm):
+ class Meta:
+ model = Membership
+ fields = ['email'] \ No newline at end of file
diff --git a/coip/apps/membership/models.py b/coip/apps/membership/models.py
index 935a253..9ff6a89 100644
--- a/coip/apps/membership/models.py
+++ b/coip/apps/membership/models.py
@@ -13,15 +13,13 @@ class Membership(models.Model):
'''
Membership in a namespace/group
'''
- user = models.ForeignKey(User,unique=True,blank=True,related_name='user')
- inviter = models.ForeignKey(User,unique=True,blank=True,related_name='inviter')
+ user = models.ForeignKey(User,blank=True,null=True,related_name='user')
name = models.ForeignKey(Name,related_name='memberships')
- email = models.EmailField(blank=True,null=True)
- nonce = models.CharField(max_length=255,blank=True,null=True)
enabled = models.BooleanField()
+ hidden = models.BooleanField()
timecreated = models.DateTimeField(auto_now_add=True)
lastupdated = models.DateTimeField(auto_now=True)
- expires = models.DateTimeField(blank=True)
+ expires = models.DateTimeField(blank=True,null=True)
def __unicode__(self):
return "%s in %s" % (self.user,self.name)
@@ -34,8 +32,21 @@ class Membership(models.Model):
return "active"
else:
return "inactive";
+
+def add_member(name,user):
+ (m,created) = Membership.objects.get_or_create(user=user,name=name)
+ if created or not m.enabled:
+ m.enabled = True
+ m.save()
+
+def disable_member(name,user):
+ m = Membership.objects.get(name=name,user=user)
+ if m:
+ m.enabled = False
+ m.save()
- def send_email(self):
- pprint("sent email to "+self.to)
- return
+def remove_member(name,user):
+ m = Membership.objects.get(name=name,user=user)
+ if m:
+ m.delete()
diff --git a/coip/apps/membership/views.py b/coip/apps/membership/views.py
index 6a500d9..e479015 100644
--- a/coip/apps/membership/views.py
+++ b/coip/apps/membership/views.py
@@ -3,37 +3,18 @@ Created on Jun 23, 2010
@author: leifj
'''
-from django.contrib.auth.decorators import login_required
+from django.shortcuts import get_object_or_404
from coip.apps.membership.models import Membership
-from coip.apps.membership.forms import InvitationForm
-from django.http import HttpResponseRedirect
-from coip.apps.auth.utils import nonce
-from coip.multiresponse import respond_to
+from coip.multiresponse import render403, respond_to
-#@login_required
-#def memberships(request,name):
-#
-# Membership.objects.get(name)
+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))
-
-@login_required
-def invite(request):
- user = request.user
- if request.method == 'POST':
- form = InvitationForm(request.POST)
- if form.is_valid():
- email = form.cleaned_data["email"]
- expires = form.cleaned_data["expires"]
- message = form.cleaned_data["message"]
- membership = Membership(inviter=user,email=email,message=message,expires=expires,nonce=nonce())
- membership.save()
- membership.send_email()
- return HttpResponseRedirect("/membership/id/"+membership.id)
- else:
- form = InvitationForm({});
-
- return respond_to(request,{'text/html': 'apps/invitation/create.html'},{'form': form})
-
-def accept(request,nonce):
- user = request.user
- membership = Membership.objects.get(nonce=nonce) \ No newline at end of file
+ return respond_to({'text/html': 'apps/membership/membership.html'},
+ {'membership': membership,
+ 'render': {'edit': name.has_permission(request.user,'w'),
+ 'delete': name.has_permission(request.user,'d'),
+ 'disable': name.has_permission(request.user,'d')}}) \ No newline at end of file