diff options
Diffstat (limited to 'coip/apps/membership/views.py')
-rw-r--r-- | coip/apps/membership/views.py | 77 |
1 files changed, 5 insertions, 72 deletions
diff --git a/coip/apps/membership/views.py b/coip/apps/membership/views.py index 176f750..97c8c46 100644 --- a/coip/apps/membership/views.py +++ b/coip/apps/membership/views.py @@ -7,15 +7,11 @@ 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, lookup +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 -from coip.settings import METADATA -from lxml import etree -from pprint import pprint def show(request,id): membership = get_object_or_404(Membership,pk=id) @@ -27,58 +23,6 @@ def show(request,id): {'text/html': 'apps/membership/membership.html'}, {'membership': membership}) -def import_metadata(): - doc = etree.parse(METADATA) - ns = {'md': 'urn:oasis:names:tc:SAML:2.0:metadata', - 'xml': 'http://www.w3.org/XML/1998/namespace'} - for e in doc.xpath("md:EntityDescriptor",namespaces=ns): - entityId = e.get('entityID') - display = entityId - x = e.xpath("md:OrganizationDisplayName",namespaces=ns) - if x: - display = x[0] - - (entity,created) = Entity.objects.get_or_create(entityId=entityId) - save = created - - if created: - entity.type = Entity.OTHER - - x = e.xpath("md:SPSSODescriptor",namespaces=ns) - if x: - type = Entity.SP - x = e.xpath("md:IDPSSODescriptor",namespaces=ns) - if x: - type = Entity.IDP - - if type != entity.type: - entity.type = type - save = True - - if display != entity.display_name: - entity.display_name = display - save = True - - if save: - entity.save() - - anyuser = lookup("system:anyuser") - - anyentity = lookup("system:anyentity",True) - anyentity.setacl(anyuser, "rl") - - anysp = lookup("system:anysp",True) - anysp.setacl(anyuser, "rl") - - anyidp = lookup("system:anyidp",True) - anyidp.setacl(anyuser, "rl") - - add_member(anyentity,entity) - if entity.type == Entity.SP: - add_member(anysp,entity) - if entity.type == Entity.IDP: - add_member(anyidp,entity) - @login_required def join(request,id,membername=None): name = get_object_or_404(Name,pk=id) @@ -89,13 +33,7 @@ def join(request,id,membername=None): 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!" - + add_member(name,form.cleaned_data['user']) return HttpResponseRedirect(name.url()) else: return respond_to(request, @@ -103,15 +41,10 @@ def join(request,id,membername=None): {'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) + add_member(name, membername) return HttpResponseRedirect(name.url()) else: form = MembershipForm() - import_metadata() return respond_to(request, {'text/html': 'apps/membership/edit.html'}, {'form': form,'name': name, 'formtitle': 'Add a member to %s' % name.short}) @@ -122,7 +55,7 @@ def leave(request,id,membername=None): if membername: try: member = User.objects.get(username=membername) + remove_member(name, member) except ObjectDoesNotExist: - member = Entity.objects.get(entityId=name) - remove_member(name, member) + pass return HttpResponseRedirect(name.url()) |