diff options
Diffstat (limited to 'coip/apps/membership')
-rw-r--r-- | coip/apps/membership/forms.py | 9 | ||||
-rw-r--r-- | coip/apps/membership/models.py | 27 | ||||
-rw-r--r-- | coip/apps/membership/views.py | 43 |
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 |